53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
const sinon = require('sinon');
|
|
const proxyquire = require('proxyquire').noCallThru();
|
|
|
|
const storage = {
|
|
setField: sinon.stub()
|
|
};
|
|
|
|
function request(id, body) {
|
|
return {
|
|
params: { id },
|
|
body
|
|
};
|
|
}
|
|
|
|
function response() {
|
|
return {
|
|
sendStatus: sinon.stub()
|
|
};
|
|
}
|
|
|
|
const passwordRoute = proxyquire('../../server/routes/password', {
|
|
'../storage': storage
|
|
});
|
|
|
|
describe('/api/password', function() {
|
|
afterEach(function() {
|
|
storage.setField.reset();
|
|
});
|
|
|
|
it('calls storage.setField with the correct parameter', function() {
|
|
const req = request('x', { auth: 'z' });
|
|
const res = response();
|
|
passwordRoute(req, res);
|
|
sinon.assert.calledWith(storage.setField, 'x', 'auth', 'z');
|
|
sinon.assert.calledWith(storage.setField, 'x', 'pwd', true);
|
|
sinon.assert.calledWith(res.sendStatus, 200);
|
|
});
|
|
|
|
it('sends a 400 if auth is missing', function() {
|
|
const req = request('x', {});
|
|
const res = response();
|
|
passwordRoute(req, res);
|
|
sinon.assert.calledWith(res.sendStatus, 400);
|
|
});
|
|
|
|
it('sends a 404 on failure', function() {
|
|
storage.setField.throws(new Error());
|
|
const req = request('x', { auth: 'z' });
|
|
const res = response();
|
|
passwordRoute(req, res);
|
|
sinon.assert.calledWith(res.sendStatus, 404);
|
|
});
|
|
});
|