UNPKG

@pact-foundation/pact

Version:
117 lines 4.6 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const pact_core_1 = __importDefault(require("@pact-foundation/pact-core")); const vitest_1 = require("vitest"); const logger_1 = __importDefault(require("../../common/logger")); const verifier_1 = require("./verifier"); const mockState = vitest_1.vi.hoisted(() => ({ executed: false })); vitest_1.vi.mock('./proxy', () => ({ createHooksState: () => ({ insideInteraction: false, errors: [] }), createProxy: () => ({ close: () => { mockState.executed = true; }, address: () => ({ port: 1234, family: 'https', address: 'mock.server.example.com', }), }), waitForServerReady: () => Promise.resolve(), })); describe('Verifier', () => { afterEach(() => { vitest_1.vi.restoreAllMocks(); mockState.executed = false; }); const state = 'thing exists'; const providerBaseUrl = 'http://not.exists'; const opts = { providerBaseUrl, requestFilter: (_req, _res, next) => { next(); }, stateHandlers: { [state]: () => { return Promise.resolve(); }, }, }; let v; describe('#constructor', () => { describe('when given configuration', () => { it('sets the configuration on the object', () => { v = new verifier_1.Verifier(opts); expect(v).toHaveProperty('config.providerBaseUrl', providerBaseUrl); expect(v).toHaveProperty('config.stateHandlers'); expect(v).toHaveProperty('config.requestFilter'); }); }); }); describe('options handling', () => { // biome-ignore lint/suspicious/noExplicitAny: spy type varies by method signature let spy; beforeEach(() => { spy = vitest_1.vi.spyOn(pact_core_1.default, 'logLevel'); }); describe('when logLevel is provided', () => { it('sets the log level on pact node', () => { v = new verifier_1.Verifier({ ...opts, logLevel: 'debug', }); expect(spy).toHaveBeenCalledTimes(1); }); }); describe('when logLevel is not provided', () => { it('does not modify the log setting', () => { const { ...rest } = opts; v = new verifier_1.Verifier({ ...rest, }); expect(spy).toHaveBeenCalledTimes(0); }); }); describe('when a deprecated field is provided', () => { it('logs a warning', () => { spy = vitest_1.vi.spyOn(logger_1.default, 'warn'); v = new verifier_1.Verifier({ ...opts, providerStatesSetupUrl: 'http://foo.com', }); expect(spy).toHaveBeenCalledTimes(1); }); }); }); describe('#verifyProvider', () => { beforeEach(() => { }); describe('when no configuration has been given', () => { it('fails with an error', () => expect(() => new verifier_1.Verifier(undefined)).toThrow()); }); describe('when the verifier has been configured', () => { beforeEach(() => { v = new verifier_1.Verifier({ ...opts, logLevel: 'trace' }); }); describe('and the verification runs successfully', () => { it('closes the server and returns the result', async () => { vitest_1.vi.spyOn(v, 'runProviderVerification').mockReturnValue(Promise.resolve('done')); const res = v.verifyProvider(); await res; expect(mockState.executed).toBe(true); }); }); describe('and the verification fails', () => { it('closes the server and returns the result', async () => { vitest_1.vi.spyOn(v, 'runProviderVerification').mockReturnValue(() => Promise.reject(new Error('error'))); const res = v.verifyProvider(); await expect(res).rejects.toThrow(); expect(mockState.executed).toBe(true); }); }); }); }); }); //# sourceMappingURL=verifier.spec.js.map