fixed apiRequiredLocal method
[squeep-authentication-module] / test / lib / authenticator.js
index cc75652443568a1a320b4b418de665d55693971a..067d0cae7a889a1eded72506527e29f08d1bc161 100644 (file)
@@ -406,4 +406,62 @@ describe('Authenticator', function () {
     }); // 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