Files
gitbook/packages/react-openapi/src/util/server.test.ts
T

78 lines
2.8 KiB
TypeScript

import { describe, expect, it } from 'bun:test';
import type { OpenAPIV3 } from '@gitbook/openapi-parser';
import { getDefaultServerURL, interpolateServerURL } from './server';
describe('#interpolateServerURL', () => {
it('interpolates the server URL with the default values of the variables', () => {
const server: OpenAPIV3.ServerObject = {
url: 'https://{username}.example.com/{basePath}',
variables: {
username: { default: 'user' },
basePath: { default: 'v1' },
},
};
const result = interpolateServerURL(server);
expect(result).toBe('https://user.example.com/v1');
});
it('returns the URL with placeholders if no variables are provided', () => {
const server: OpenAPIV3.ServerObject = {
url: 'https://{username}.example.com/{basePath}',
};
const result = interpolateServerURL(server);
expect(result).toBe('https://{username}.example.com/{basePath}');
});
it('strips trailing slash from the server URL', () => {
const server: OpenAPIV3.ServerObject = {
url: '/butler/api/',
};
const result = interpolateServerURL(server);
expect(result).toBe('/butler/api');
});
it('strips trailing slash after variable interpolation', () => {
const server: OpenAPIV3.ServerObject = {
url: 'https://example.com/{basePath}/',
variables: {
basePath: { default: 'v1' },
},
};
const result = interpolateServerURL(server);
expect(result).toBe('https://example.com/v1');
});
it('returns the URL with mixed placeholders and default values', () => {
const server: OpenAPIV3.ServerObject = {
url: 'https://{username}.example.com/{basePath}',
variables: {
basePath: { default: 'v1' },
},
};
const result = interpolateServerURL(server);
expect(result).toBe('https://{username}.example.com/v1');
});
});
describe('#getDefaultServerURL', () => {
it('returns the default server URL', () => {
const servers: OpenAPIV3.ServerObject[] = [
{
url: 'https://{username}.example.com/{basePath}',
variables: {
username: { default: 'user' },
basePath: { default: 'v1' },
},
},
];
const result = getDefaultServerURL(servers);
expect(result).toBe('https://user.example.com/v1');
});
it('returns empty string if no servers are provided', () => {
const servers: OpenAPIV3.ServerObject[] = [];
const result = getDefaultServerURL(servers);
expect(result).toBe('');
});
});