@natlibfi/fixugen-http-server
v2.0.1
Published
Generate unit tests for HTTP servers with fixugen
Readme
Generate unit tests for HTTP servers with fixugen
Generates unit tests with fixugen. Starts a HTTP server which is tested with generic HTTP request and response expectations.
Uses fixugen's useMetadataFile so your fixture directories must contain metadata.json file.
Usage
import generateTests from '@natlibfi/fixugen-http-server';
import startApp from './app.js';
generateTests({
callback: () => startApp(),
path: [import.meta.dirname, '..', '..', 'test-fixtures', 'app']
});
Configuration
An array property requests must be present in metadata.json file. It supports the following properties:
- status: HTTP status code (Number). Mandatory.
- method: HTTP method in lowercase. Mandatory.
- path: URL path. Defaults to
/ - requestHeaders: An object representing requests headers.
- responseHeaders: An object representing response headers.
This configuration is also passed to the callback as the property requests.
Request and response payloads
The fixture directory for each unit test can have request- and response payload fixtures which must match the following filename pattern:
/^request[0-9]+
/^response[0-9]+
Formatting the response
Pass a callback to the exported function to format response headers and payload:
generateTests({
formatResponse,
callback: () => startApp(),
path: [__dirname, '..', '..', 'test-fixtures', 'app']
});
// Note: version > 2 requires response as input for formatResponse instead of headers and payload
function formatResponse(response) {
const payload = await response.text(); // or which ever method is used for reading payload
const newHeaders = doSomethingWithHeaders();
return { payload, headers: newHeaders };
}Where [0-9]+ denotes the index number of the fixture (Requests and responses are mocked in that order).
License and copyright
Copyright (c) 2020, 2022-2025 University Of Helsinki (The National Library Of Finland)
This project's source code is licensed under the terms of MIT or any later version.
