59 lines
1.2 KiB
JavaScript
59 lines
1.2 KiB
JavaScript
const sinon = require('sinon');
|
|
const proxyquire = require('proxyquire').noCallThru();
|
|
|
|
const storage = {
|
|
ttl: sinon.stub()
|
|
};
|
|
|
|
function request(id, meta) {
|
|
return {
|
|
params: { id },
|
|
meta
|
|
};
|
|
}
|
|
|
|
function response() {
|
|
return {
|
|
sendStatus: sinon.stub(),
|
|
send: sinon.stub()
|
|
};
|
|
}
|
|
|
|
const infoRoute = proxyquire('../../server/routes/info', {
|
|
'../storage': storage
|
|
});
|
|
|
|
describe('/api/info', function() {
|
|
afterEach(function() {
|
|
storage.ttl.reset();
|
|
});
|
|
|
|
it('calls storage.ttl with the id parameter', async function() {
|
|
const req = request('x');
|
|
const res = response();
|
|
await infoRoute(req, res);
|
|
sinon.assert.calledWith(storage.ttl, 'x');
|
|
});
|
|
|
|
it('sends a 404 on failure', async function() {
|
|
storage.ttl.returns(Promise.reject(new Error()));
|
|
const res = response();
|
|
await infoRoute(request('x'), res);
|
|
sinon.assert.calledWith(res.sendStatus, 404);
|
|
});
|
|
|
|
it('returns a json object', async function() {
|
|
storage.ttl.returns(Promise.resolve(123));
|
|
const meta = {
|
|
dlimit: '1',
|
|
dl: '0'
|
|
};
|
|
const res = response();
|
|
await infoRoute(request('x', meta), res);
|
|
sinon.assert.calledWithMatch(res.send, {
|
|
dlimit: 1,
|
|
dtotal: 0,
|
|
ttl: 123
|
|
});
|
|
});
|
|
});
|