60 lines
1.2 KiB
JavaScript
60 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
|
||
|
});
|
||
|
});
|
||
|
});
|