You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
8 years ago | |
---|---|---|
src | 8 years ago | |
test | 8 years ago | |
.gitignore | 8 years ago | |
.travis.yml | 8 years ago | |
LICENSE | 8 years ago | |
README.md | 8 years ago | |
package-lock.json | 8 years ago | |
package.json | 8 years ago |
README.md
create-test-server
Creates a minimal express server for testing
Inspired by the createServer()
helper function in the Got tests.
A simple interface for creating a preconfigured express instance listening for both HTTP and HTTPS traffic.
A self signed certificate is automatically generated for SSL. An associated CA certificate is also returned for you to validate against.
Install
npm install --save-dev create-test-server
Usage
createTestServer()
has a Promise based API that pairs well with a modern asynchronous test runner such as AVA.
You can create a separate server per test:
import test from 'ava';
import got from 'got';
import createTestServer from 'create-test-server';
test(async t => {
const server = await createTestServer();
console.log(server.url);
// http://localhost:5486
console.log(server.sslUrl);
// https://localhost:5487
// This is just an express route
// You could use any express middleware too
server.get('/foo', (req, res) => res.send('bar'));
const response = await got(server.url + '/foo');
t.is(response.body, 'bar');
});
Or share a server across multiple tests:
let server;
test.before(async () => {
server = await createTestServer();
server.get('/foo', (req, res) => res.send('bar'));
});
test(async t => {
const response = await got(server.url + '/foo');
t.is(response.body, 'bar');
});
test(async t => {
const response = await got(server.url + '/foo');
t.is(response.statusCode, 200);
});
You can also make properly authenticated SSL requests by validating against the provided CA certificate:
test(async t => {
const server = await createTestServer({ certificate: 'foobar.com' });
server.get('/foo', (req, res) => res.send('bar'));
const response = await got(server.sslUrl + '/foo', {
strictSSL: true,
ca: server.caCert,
headers: { host: 'foobar.com' }
});
t.is(response.body, 'bar');
});
License
MIT © Luke Childs