Merge branch 'v1.1-dev' as v1.1.0
[squeep-api-dingus] / test / lib / dingus.js
index a1070a558c534a24c4f2d80a529e24bd8b7e64ed..60b0dad59d68ea21bfba45c759df89b5a7ccebe9 100644 (file)
@@ -13,8 +13,10 @@ const Enum = require('../../lib/enum');
 const noExpectedException = 'did not get expected exception';
 
 describe('Dingus', function () {
-  const dingus = new Dingus();
-
+  let dingus;
+  beforeEach(function () {
+    dingus = new Dingus();
+  });
   afterEach(function () {
     sinon.restore();
   });
@@ -224,7 +226,7 @@ describe('Dingus', function () {
       dingus.on('GET', '/', () => {});
       assert(stubOn.called);
     });
-  });
+  }); // on
 
   describe('setEndBodyHandler', function () {
     let req, res, ctx, handler, origEnd, origWrite;
@@ -550,7 +552,7 @@ describe('Dingus', function () {
       dingus.strictAccept = false;
       dingus.setResponseType(['my/type'], req, res, ctx);
       assert.strictEqual(ctx.responseType, 'my/type');
-      });
+    });
 
   }); // setResponseType
 
@@ -591,6 +593,33 @@ describe('Dingus', function () {
     });
   }); // _readFileInfo
 
+  describe('_serveFileMetaHeaders', function () {
+    let res, directory, fileName;
+    beforeEach(function () {
+      sinon.stub(dingus, '_readFileInfo');
+      res = {
+        setHeader: sinon.stub(),
+      };
+      directory = '/path';
+      fileName = 'filename';
+    });
+    it('covers no meta file', async function() {
+      dingus._readFileInfo.resolves([null, null]);
+      await dingus._serveFileMetaHeaders(res, directory, fileName);
+      assert(!res.setHeader.called);
+    });
+    it('adds extra headers', async function () {
+      dingus._readFileInfo.resolves([{}, Buffer.from(`Link: <https://example.com/>; rel="relation"
+X-Folded-Header: data
+  data under
+  the fold
+Content-Type: image/sgi
+`)]);
+      await dingus._serveFileMetaHeaders(res, directory, fileName);
+      assert(res.setHeader.called);
+    });
+  }); // _serveFileMetaHeaders
+
   describe('serveFile', function () {
     const path = require('path');
     let ctx, req, res, directory, fileName, filestats;
@@ -649,6 +678,12 @@ describe('Dingus', function () {
       assert(fs.promises.readFile.called);
       assert(!dingus.handlerNotFound.called);
     });
+    it('covers no meta headers', async function () {
+      dingus.staticMetadata = false;
+      await dingus.serveFile(req, res, ctx, directory, fileName);
+      assert(fs.promises.readFile.called);
+      assert(!dingus.handlerNotFound.called);
+    });
     it('does not serve dot-file', async function () {
       fileName = '.example';
       await dingus.serveFile(req, res, ctx, directory, fileName);