123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- const assert = require('assert');
- const sinon = require('sinon');
- const proxyquire = require('proxyquire').noCallThru();
- const storage = {
- metadata: sinon.stub()
- };
- function request(id, owner_token) {
- return {
- params: { id },
- body: { owner_token }
- };
- }
- function response() {
- return {
- sendStatus: sinon.stub()
- };
- }
- const ownerMiddleware = proxyquire('../../server/middleware/auth', {
- '../storage': storage
- }).owner;
- describe('Owner Middleware', function() {
- afterEach(function() {
- storage.metadata.reset();
- });
- it('sends a 404 when the id is not found', async function() {
- const next = sinon.stub();
- storage.metadata.returns(Promise.resolve(null));
- const res = response();
- await ownerMiddleware(request('a', 'y'), res, next);
- sinon.assert.notCalled(next);
- sinon.assert.calledWith(res.sendStatus, 404);
- });
- it('sends a 401 when the owner_token is missing', async function() {
- const next = sinon.stub();
- const meta = { owner: 'y' };
- storage.metadata.returns(Promise.resolve(meta));
- const res = response();
- await ownerMiddleware(request('b', null), res, next);
- sinon.assert.notCalled(next);
- sinon.assert.calledWith(res.sendStatus, 401);
- });
- it('sends a 401 when the owner_token does not match', async function() {
- const next = sinon.stub();
- const meta = { owner: 'y' };
- storage.metadata.returns(Promise.resolve(meta));
- const res = response();
- await ownerMiddleware(request('c', 'z'), res, next);
- sinon.assert.notCalled(next);
- sinon.assert.calledWith(res.sendStatus, 401);
- });
- it('sends a 401 if the metadata call fails', async function() {
- const next = sinon.stub();
- storage.metadata.returns(Promise.reject(new Error()));
- const res = response();
- await ownerMiddleware(request('d', 'y'), res, next);
- sinon.assert.notCalled(next);
- sinon.assert.calledWith(res.sendStatus, 401);
- });
- it('sets req.meta and req.authorized on successful auth', async function() {
- const next = sinon.stub();
- const meta = { owner: 'y' };
- storage.metadata.returns(Promise.resolve(meta));
- const req = request('e', 'y');
- const res = response();
- await ownerMiddleware(req, res, next);
- assert.equal(req.meta, meta);
- assert.equal(req.authorized, true);
- sinon.assert.notCalled(res.sendStatus);
- sinon.assert.calledOnce(next);
- });
- });
|