removed deprecated logger-related functions, default to console if no logger provided
[squeep-api-dingus] / test / lib / dingus.js
index 356974fee0f48342dd80cfd710ccbd91bb64b210..b60caca128bc7b839a8291765ac774586556c068 100644 (file)
@@ -12,10 +12,15 @@ const Enum = require('../../lib/enum');
 
 const noExpectedException = 'did not get expected exception';
 
+const noLogger = {
+  debug: () => {},
+  error: () => {},
+};
+
 describe('Dingus', function () {
   let dingus;
   beforeEach(function () {
-    dingus = new Dingus();
+    dingus = new Dingus(noLogger, {});
   });
   afterEach(function () {
     sinon.restore();
@@ -23,9 +28,8 @@ describe('Dingus', function () {
 
   describe('constructor', function () {
     it('covers', function () {
-      const d = new Dingus({}, {});
+      const d = new Dingus();
       assert(d);
-      assert('log' in d.logger);
     });
   }); // constructor
 
@@ -37,7 +41,7 @@ describe('Dingus', function () {
     });
     it('returns normal path', function () {
       const p = '////a///b/./bar/..///c';
-      const expected = '/a/b/c'
+      const expected = '/a/b/c';
       const r = dingus._normalizePath(p);
       assert.strictEqual(r, expected);
     });
@@ -153,7 +157,7 @@ describe('Dingus', function () {
       const expected = {
         clientAddress: '',
         clientProtocol: 'http',
-      }
+      };
       dingus.clientAddressContext(req, res, ctx);
       assert.deepStrictEqual(ctx, expected);
       assert(!req.getHeader.called);
@@ -163,7 +167,7 @@ describe('Dingus', function () {
       const expected = {
         clientAddress: '::1',
         clientProtocol: 'https',
-      }
+      };
       req.connection.remoteAddress = '::1';
       req.connection.encrypted = true;
       dingus.clientAddressContext(req, res, ctx);
@@ -535,6 +539,14 @@ describe('Dingus', function () {
         assert.strictEqual(e.statusCode, 413);
       }
     });
+    it('provides buffer', async function () {
+      const p = dingus.bodyData(res, 0, false);
+      const expected = Buffer.from('bleat');
+      resEvents['data'](expected);
+      resEvents['end']();
+      const result = await p;
+      assert.deepStrictEqual(result, expected);
+    });
   }); // bodyData
 
   describe('ingestBody', function () {
@@ -542,7 +554,7 @@ describe('Dingus', function () {
       const req = {};
       const res = {};
       const ctx = {};
-      sinon.stub(dingus, 'bodyData').resolves('{"foo":"bar"}')
+      sinon.stub(dingus, 'bodyData').resolves('{"foo":"bar"}');
       sinon.stub(Dingus, 'getRequestContentType').returns(Enum.ContentType.ApplicationJson);
       await dingus.ingestBody(req, res, ctx);
       assert.deepStrictEqual(ctx.parsedBody, { foo: 'bar' });
@@ -813,6 +825,13 @@ Content-Type: image/sgi
       await dingus.serveFile(req, res, ctx, directory, fileName);
       assert(res.end.called);
     });
+    it('handles misconfigured encoding', async function () {
+      Enum.EncodingType.Flarp = 'flarp';
+      req._headers[Enum.Header.AcceptEncoding] = 'flarp, gzip';
+      await dingus.serveFile(req, res, ctx, directory, fileName);
+      delete Enum.EncodingType.Flarp;
+      assert(res.end.called);
+    });
   }); // serveFile
 
   describe('renderError', function () {
@@ -1011,4 +1030,4 @@ Content-Type: image/sgi
       assert(dingus.serveFile.called);
     });
   }); // handlerGetStaticFile
-});
\ No newline at end of file
+});