X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=test%2Flib%2Fdingus.js;h=f374ba7d75b042f9bbc99a786c5f4b80016c934b;hb=91ca5d0b0e93afeb5c68a48fef461bbcc095fcbe;hp=356974fee0f48342dd80cfd710ccbd91bb64b210;hpb=3b70d88ed735041cb0ec358dfc478b825c1c12e7;p=squeep-api-dingus diff --git a/test/lib/dingus.js b/test/lib/dingus.js index 356974f..f374ba7 100644 --- a/test/lib/dingus.js +++ b/test/lib/dingus.js @@ -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); @@ -473,14 +477,14 @@ describe('Dingus', function () { }); it('parses json', function () { const src = { foo: 'bar' }; - ctx.rawBody = JSON.stringify(src); - dingus.parseBody(Enum.ContentType.ApplicationJson, ctx); + const rawBody = JSON.stringify(src); + dingus.parseBody(Enum.ContentType.ApplicationJson, ctx, rawBody); assert.deepStrictEqual(ctx.parsedBody, src); }); it('handles unparsable json', function () { - ctx.rawBody = 'not json'; + const rawBody = 'not json'; try { - dingus.parseBody(Enum.ContentType.ApplicationJson, ctx); + dingus.parseBody(Enum.ContentType.ApplicationJson, ctx, rawBody); assert.fail(noExpectedException); } catch (e) { assert.strictEqual(e.statusCode, 400); @@ -490,8 +494,8 @@ describe('Dingus', function () { const expected = Object.assign(Object.create(null), { foo: 'bar', }); - ctx.rawBody = 'foo=bar'; - dingus.parseBody('application/x-www-form-urlencoded', ctx); + const rawBody = 'foo=bar'; + dingus.parseBody('application/x-www-form-urlencoded', ctx, rawBody); assert.deepStrictEqual(ctx.parsedBody, expected); }); @@ -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 +});