potentially serve static files with static headers
[squeep-api-dingus] / test / lib / dingus.js
index a1070a558c534a24c4f2d80a529e24bd8b7e64ed..eeeaf3a8980bf17eb342833b0722721c96931905 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;
@@ -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);