UNPKG

@pact-foundation/pact

Version:
94 lines 5.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const pact_1 = require("./pact"); describe('PactV3', () => { afterEach(() => { vitest_1.vi.restoreAllMocks(); }); describe('#executeTest', () => { const buildPactMock = (port) => { return { addMetadata: vitest_1.vi.fn().mockReturnValue(true), newInteraction: vitest_1.vi.fn(), 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(), }; }; describe('CORS option', () => { it('passes corsPreflight: true by default when cors is not specified', async () => { const pactMock = buildPactMock(1234); const p = new pact_1.PactV3({ consumer: 'A', provider: 'B' }); // @ts-expect-error: accessing private field for testing p.pact = pactMock; await p.executeTest(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); const p = new pact_1.PactV3({ consumer: 'A', provider: 'B', cors: true }); // @ts-expect-error: accessing private field for testing p.pact = pactMock; await p.executeTest(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); const p = new pact_1.PactV3({ consumer: 'A', provider: 'B', cors: false }); // @ts-expect-error: accessing private field for testing p.pact = pactMock; await p.executeTest(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); const p = new pact_1.PactV3({ consumer: 'A', provider: 'B' }); // @ts-expect-error: accessing private field for testing p.pact = pactMock; await p.executeTest(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); const p = new pact_1.PactV3({ consumer: 'A', provider: 'B', tls: true }); // @ts-expect-error: accessing private field for testing p.pact = pactMock; await p.executeTest(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); const p = new pact_1.PactV3({ consumer: 'A', provider: 'B' }); // @ts-expect-error: accessing private field for testing p.pact = pactMock; await expect(p.executeTest(async () => Promise.resolve())).rejects.toThrow('Failed to start mock server'); }); }); }); }); //# sourceMappingURL=pact.spec.js.map