60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
var util = require('util');
|
|
var http = require('http');
|
|
|
|
var test = require('../../');
|
|
|
|
test('async5', async function myTest(t) {
|
|
try {
|
|
t.ok(true, 'before server');
|
|
|
|
var mockDb = { state: 'old' };
|
|
var server = http.createServer(function (req, res) {
|
|
res.end('OK');
|
|
|
|
// Pretend we write to the DB and it takes time.
|
|
setTimeout(function () {
|
|
mockDb.state = 'new';
|
|
}, 10);
|
|
});
|
|
|
|
await util.promisify(function (cb) {
|
|
server.listen(0, cb);
|
|
})();
|
|
|
|
t.ok(true, 'after server');
|
|
|
|
t.ok(true, 'before request');
|
|
|
|
var res = await util.promisify(function (cb) {
|
|
var req = http.request({
|
|
hostname: 'localhost',
|
|
port: server.address().port,
|
|
path: '/',
|
|
method: 'GET'
|
|
}, function (res) {
|
|
cb(null, res);
|
|
});
|
|
req.end();
|
|
})();
|
|
|
|
t.ok(true, 'after request');
|
|
|
|
res.resume();
|
|
t.equal(res.statusCode, 200, 'res.statusCode is 200');
|
|
|
|
setTimeout(function () {
|
|
t.equal(mockDb.state, 'new', 'mockDb.state is new');
|
|
|
|
server.close(function (err) {
|
|
t.ifError(err, 'error on close');
|
|
t.end();
|
|
});
|
|
}, 50);
|
|
} catch (err) {
|
|
t.ifError(err, 'error in catch');
|
|
t.end();
|
|
}
|
|
});
|