@pact-foundation/pact
Version:
Pact for all things Javascript
73 lines • 4.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const _1 = require(".");
describe('V4 HTTP executeTest', () => {
afterEach(() => {
vitest_1.vi.restoreAllMocks();
});
const buildPactMock = (port) => {
return {
pactffiCreateMockServerForTransport: vitest_1.vi.fn().mockReturnValue(port),
mockServerMatchedSuccessfully: vitest_1.vi.fn().mockReturnValue(true),
mockServerMismatches: vitest_1.vi.fn().mockReturnValue([]),
cleanupMockServer: vitest_1.vi.fn().mockReturnValue(true),
writePactFile: vitest_1.vi.fn(),
cleanupPlugins: vitest_1.vi.fn(),
addPlugin: vitest_1.vi.fn(),
};
};
const baseOpts = { consumer: 'A', provider: 'B' };
describe('CORS option', () => {
it('passes corsPreflight: true by default when cors is not specified', async () => {
const pactMock = buildPactMock(1234);
await (0, _1.executeTest)(pactMock, baseOpts, async () => Promise.resolve(), () => { });
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
const stub = pactMock.pactffiCreateMockServerForTransport;
expect(stub).toHaveBeenCalledOnce();
const [, , config] = stub.mock.calls[0];
expect(JSON.parse(config)).toEqual({ corsPreflight: true });
});
it('passes corsPreflight: true when cors is explicitly true', async () => {
const pactMock = buildPactMock(1234);
await (0, _1.executeTest)(pactMock, { ...baseOpts, cors: true }, async () => Promise.resolve(), () => { });
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
const stub = pactMock.pactffiCreateMockServerForTransport;
const [, , config] = stub.mock.calls[0];
expect(JSON.parse(config)).toEqual({ corsPreflight: true });
});
it('passes corsPreflight: false when cors is explicitly false', async () => {
const pactMock = buildPactMock(1234);
await (0, _1.executeTest)(pactMock, { ...baseOpts, cors: false }, async () => Promise.resolve(), () => { });
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
const stub = pactMock.pactffiCreateMockServerForTransport;
const [, , config] = stub.mock.calls[0];
expect(JSON.parse(config)).toEqual({ corsPreflight: false });
});
});
describe('transport scheme', () => {
it('uses http scheme by default', async () => {
const pactMock = buildPactMock(1234);
await (0, _1.executeTest)(pactMock, baseOpts, async () => Promise.resolve(), () => { });
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
const stub = pactMock.pactffiCreateMockServerForTransport;
const [, transport] = stub.mock.calls[0];
expect(transport).toBe('http');
});
it('uses https scheme when tls is true', async () => {
const pactMock = buildPactMock(1234);
await (0, _1.executeTest)(pactMock, { ...baseOpts, tls: true }, async () => Promise.resolve(), () => { });
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
const stub = pactMock.pactffiCreateMockServerForTransport;
const [, transport] = stub.mock.calls[0];
expect(transport).toBe('https');
});
});
describe('when the mock server fails to start', () => {
it('throws an error when port is 0 or negative', async () => {
const pactMock = buildPactMock(-3);
await expect((0, _1.executeTest)(pactMock, baseOpts, async () => Promise.resolve(), () => { })).rejects.toThrow('Failed to start mock server');
});
});
});
//# sourceMappingURL=index.spec.js.map