allow additional arguments to be passed to handler functions
[squeep-api-dingus] / test / lib / dingus.js
index 60b0dad59d68ea21bfba45c759df89b5a7ccebe9..7036384494cf7d265b7c287d038541c22063c1b8 100644 (file)
@@ -439,7 +439,13 @@ describe('Dingus', function () {
       await dingus.dispatch(req, res, ctx);
       assert(dingus.handlerBadRequest.called);
     });
-
+    it('calls handler with additional arguments', async function () {
+      dingus.on('GET', '/', stubHandler, 'foo', 'bar');
+      await dingus.dispatch(req, res, ctx);
+      assert(stubHandler.called);
+      assert.strictEqual(stubHandler.args[0][3], 'foo');
+      assert.strictEqual(stubHandler.args[0][4], 'bar');
+    });
   }); // dispatch
 
   describe('parseBody', function () {
@@ -905,4 +911,54 @@ Content-Type: image/sgi
       assert(pfxDingus.handlerNotFound.called);
     });
   }); // proxyPrefix
+
+  describe('handlerRedirect', function () {
+    let req, res, ctx;
+    beforeEach(function () {
+      req = {
+        getHeader: sinon.stub(),
+      };
+      res = {
+        setHeader: sinon.stub(),
+        end: sinon.stub(),
+      };
+      ctx = {};
+    });
+    it('covers', async function () {
+      await dingus.handlerRedirect(req, res, ctx);
+      assert(res.setHeader.called);
+      assert(res.end.called);
+    });
+    it('covers non-defaults', async function () {
+      await dingus.handlerRedirect(req, res, ctx, 308);
+      assert(res.setHeader.called);
+      assert(res.end.called);
+    });
+  }); // handlerRedirect
+
+  describe('handlerGetStaticFile', function () {
+    let req, res, ctx;
+    beforeEach(function () {
+      req = {
+        getHeader: sinon.stub(),
+      };
+      res = {
+        setHeader: sinon.stub(),
+      };
+      ctx = {
+        params: {
+          file: '',
+        },
+      };
+      sinon.stub(dingus, 'serveFile');
+    });
+    it('covers', async function () {
+      await dingus.handlerGetStaticFile(req, res, ctx);
+      assert(dingus.serveFile.called);
+    });
+    it('covers specified file', async function () {
+      await dingus.handlerGetStaticFile(req, res, ctx, 'file.txt');
+      assert(dingus.serveFile.called);
+    });
+  }); // handlerGetStaticFile
 });
\ No newline at end of file