drop.chapril.org-firefoxsend/test/backend/params-tests.js

57 lines
1.3 KiB
JavaScript
Raw Normal View History

2018-02-06 23:31:18 +01:00
const sinon = require('sinon');
const proxyquire = require('proxyquire').noCallThru();
const storage = {
setField: sinon.stub()
};
function request(id) {
return {
params: { id },
body: {}
};
}
function response() {
return {
sendStatus: sinon.stub()
};
}
const paramsRoute = proxyquire('../../server/routes/params', {
'../storage': storage
});
describe('/api/params', function() {
afterEach(function() {
storage.setField.reset();
});
it('calls storage.setField with the correct parameter', function() {
const req = request('x');
const dlimit = 2;
req.body.dlimit = dlimit;
const res = response();
paramsRoute(req, res);
sinon.assert.calledWith(storage.setField, 'x', 'dlimit', dlimit);
sinon.assert.calledWith(res.sendStatus, 200);
});
it('sends a 400 if dlimit is too large', function() {
const req = request('x');
const res = response();
req.body.dlimit = 21;
paramsRoute(req, res);
sinon.assert.calledWith(res.sendStatus, 400);
});
it('sends a 404 on failure', function() {
storage.setField.throws(new Error());
const req = request('x');
const res = response();
req.body.dlimit = 2;
paramsRoute(req, res);
sinon.assert.calledWith(res.sendStatus, 404);
});
});