UNPKG

@govuk-pay/run-amock

Version:

A drop-in replacement for Mountebank in our govuk-pay codebases.

69 lines (64 loc) 2.19 kB
import { afterEach, beforeEach, describe, it } from 'node:test' import * as assert from 'node:assert' import { clearAllMocks, setupMocks } from './utils.js' import { mockedHttpBaseUrl } from './constants.js' describe('divergence-from-mountebank', () => { beforeEach(async () => { await clearAllMocks() }) afterEach(async () => { await clearAllMocks() }) it('should require query strings to be case sensitive using equals', async () => { await setupMocks({ defaultResponse: { statusCode: 404, body: 'Default 404', headers: {} }, stubs: [ { predicates: [ { equals: { method: 'GET', path: '/v1/webhook/webhook-id/message', query: { page: 1, status: 'failed' } } } ], responses: [ { is: { statusCode: 200, headers: { 'Content-Type': 'application/json' }, body: {} } } ] } ] }) const fullMockUrl = mockedHttpBaseUrl + '/v1/webhook/webhook-id/message' const acceptableQueryStrings = [ 'page=1&status=failed', 'status=failed&page=1' ] const unacceptableQueryStrings = [ 'page=1&status=FAILED', 'page=1&STATUS=FAILED', 'page=1&status=FaIlEd', 'StAtUs=fAiLeD&page=1', 'page=1&status=failed%20' ] await Promise.all(acceptableQueryStrings.map(async (queryString) => { const successResult = await fetch(fullMockUrl + '?' + queryString) assert.equal(200, successResult.status, `Expected a success response from [${fullMockUrl}], got a [${successResult.status}] with query string [${queryString}]`) })) await Promise.all(unacceptableQueryStrings.map(async (queryString) => { const successResult = await fetch(fullMockUrl + '?' + queryString) assert.equal(404, successResult.status, `Expected a failure response from [${fullMockUrl}], got a [${successResult.status}] with query string [${queryString}]`) })) }) })