}); // convenience wrappers
}); // sessionCheck
+ describe('apiRequiredLocal', function () {
+ let req, res;
+ beforeEach(function () {
+ ctx = {};
+ req = {
+ getHeader: sinon.stub(),
+ };
+ res = {
+ end: sinon.stub(),
+ setHeader: sinon.stub(),
+ };
+ });
+ it('covers valid basic auth', async function () {
+ req.getHeader.returns('Basic Zm9vOmJhcg==');
+ sinon.stub(authenticator, 'sessionCheck').resolves(false);
+ sinon.stub(authenticator, 'isValidAuthorization').resolves(true);
+ const result = await authenticator.apiRequiredLocal(req, res, ctx);
+ assert.strictEqual(result, true);
+ assert(authenticator.isValidAuthorization.called);
+ assert(!authenticator.sessionCheck.called);
+ });
+ it('covers invalid basic auth', async function () {
+ req.getHeader.returns('Basic Zm9vOmJhcg==');
+ sinon.stub(authenticator, 'sessionCheck').resolves(false);
+ sinon.stub(authenticator, 'isValidAuthorization').resolves(false);
+ try {
+ await authenticator.apiRequiredLocal(req, res, ctx);
+ assert.fail(noExpectedException);
+ } catch (e) {
+ assert.strictEqual(e.statusCode, 401);
+ assert(!authenticator.sessionCheck.called);
+ assert(authenticator.isValidAuthorization.called);
+ }
+ });
+ it('covers missing basic auth, valid session', async function () {
+ req.getHeader.returns();
+ sinon.stub(authenticator, 'sessionCheck').resolves(true);
+ sinon.stub(authenticator, 'isValidAuthorization').resolves(false);
+ const result = await authenticator.apiRequiredLocal(req, res, ctx);
+ assert.strictEqual(result, true);
+ assert(!authenticator.isValidAuthorization.called);
+ assert(authenticator.sessionCheck.called);
+ });
+ it('covers missing basic auth, ignores session', async function () {
+ req.getHeader.returns();
+ sinon.stub(authenticator, 'isValidAuthorization').resolves(true);
+ try {
+ await authenticator.apiRequiredLocal(req, res, ctx, false);
+ assert.fail(noExpectedException);
+ } catch (e) {
+ assert.strictEqual(e.statusCode, 401);
+ assert(!authenticator.sessionCheck.called);
+ assert(!authenticator.isValidAuthorization.called);
+ assert(res.setHeader.called);
+ }
+ });
+ }); // apiRequiredLocal
+
}); // Authenticator