import { describe, it, expect } from 'vitest';
import {
  loadOpenApiSpec,
  resolveOpenApiSpecPath,
} from '../../apps/gateway/src/openapi/load-spec.js';

describe('OpenAPI artifact', () => {
  it('loads docs/openapi.json with required public and admin paths', () => {
    const path = resolveOpenApiSpecPath();
    expect(path.endsWith('openapi.json')).toBe(true);

    const spec = loadOpenApiSpec();
    expect(spec.openapi).toBe('3.1.0');
    const paths = spec.paths as Record<string, unknown>;
    expect(paths['/api/v1/messages']).toBeDefined();
    expect(paths['/api/v1/health']).toBeDefined();
    expect(paths['/admin/providers']).toBeDefined();
    expect(paths['/admin/templates']).toBeDefined();
    expect(paths['/admin/openapi.json']).toBeDefined();

    const schemas = (spec.components as { schemas: Record<string, unknown> }).schemas;
    expect(schemas.SendRequest).toBeDefined();
    expect(schemas.AdminProvider).toBeDefined();
  });
});
