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.
85 lines
2.0 KiB
85 lines
2.0 KiB
import test from 'ava';
|
|
import got from 'got';
|
|
import createTestServer from '../';
|
|
|
|
test('createTestServer is a function', t => {
|
|
t.is(typeof createTestServer, 'function');
|
|
});
|
|
|
|
test('createTestServer returns a Promise', t => {
|
|
t.true(createTestServer() instanceof Promise);
|
|
});
|
|
|
|
test('server instance exposes useful properties', async t => {
|
|
const server = await createTestServer();
|
|
|
|
t.true(typeof server.url === 'string');
|
|
t.true(typeof server.sslUrl === 'string');
|
|
t.true(typeof server.port === 'number');
|
|
t.true(typeof server.sslPort === 'number');
|
|
t.true(typeof server.caCert === 'string');
|
|
t.true(typeof server.listen === 'function');
|
|
t.true(typeof server.close === 'function');
|
|
});
|
|
|
|
test('express endpoint', async t => {
|
|
const server = await createTestServer();
|
|
|
|
server.get('/foo', (req, res) => {
|
|
res.send('bar');
|
|
});
|
|
|
|
const { body } = await got(server.url + '/foo');
|
|
t.is(body, 'bar');
|
|
});
|
|
|
|
test('server can be stopped and restarted', async t => {
|
|
const server = await createTestServer();
|
|
|
|
server.get('/foo', (req, res) => {
|
|
res.send('bar');
|
|
});
|
|
|
|
t.plan(3);
|
|
|
|
const { body } = await got(server.url + '/foo');
|
|
t.is(body, 'bar');
|
|
|
|
const closedUrl = server.url;
|
|
await server.close();
|
|
|
|
await got(closedUrl + '/foo', { timeout: 100 }).catch(err => {
|
|
t.is(err.code, 'ETIMEDOUT');
|
|
});
|
|
|
|
await server.listen();
|
|
|
|
const { body: bodyRestarted } = await got(server.url + '/foo');
|
|
t.is(bodyRestarted, 'bar');
|
|
});
|
|
|
|
test('server listens for SSL traffic', async t => {
|
|
const server = await createTestServer();
|
|
|
|
server.get('/foo', (req, res) => {
|
|
res.send('bar');
|
|
});
|
|
|
|
const { body } = await got(server.sslUrl + '/foo', { rejectUnauthorized: false });
|
|
t.is(body, 'bar');
|
|
});
|
|
|
|
test('opts.certificate is passed through to createCert()', async t => {
|
|
const server = await createTestServer({ certificate: 'foo.bar' });
|
|
|
|
server.get('/foo', (req, res) => {
|
|
res.send('bar');
|
|
});
|
|
|
|
const { body } = await got(server.sslUrl + '/foo', {
|
|
strictSSL: true,
|
|
ca: server.caCert,
|
|
headers: { host: 'foo.bar' }
|
|
});
|
|
t.is(body, 'bar');
|
|
});
|
|
|