X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=test%2Flib%2Fdingus.js;h=12f40e8a83dad33690f7bbc535d68dfc19a4c9c3;hb=df1c89ca311a06417104e6be0ade6617cbfae60e;hp=b478a454aa3eb5b4b3ad8027382e4f5f23bd0681;hpb=4ec136ae8257a1a9f40d83ad61c57954226e79e0;p=squeep-api-dingus diff --git a/test/lib/dingus.js b/test/lib/dingus.js index b478a45..12f40e8 100644 --- a/test/lib/dingus.js +++ b/test/lib/dingus.js @@ -25,7 +25,6 @@ describe('Dingus', function () { it('covers', function () { const d = new Dingus({}, {}); assert(d); - assert('log' in d.logger); }); }); // constructor @@ -535,10 +534,18 @@ 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 () { - it('covers', async function () { + it('ingests json', async function () { const req = {}; const res = {}; const ctx = {}; @@ -546,6 +553,30 @@ describe('Dingus', function () { sinon.stub(Dingus, 'getRequestContentType').returns(Enum.ContentType.ApplicationJson); await dingus.ingestBody(req, res, ctx); assert.deepStrictEqual(ctx.parsedBody, { foo: 'bar' }); + assert.deepStrictEqual(ctx.rawBody, undefined); + }); + it('persists rawBody', async function () { + const req = {}; + const res = {}; + const ctx = {}; + const body = '{"foo":"bar"}'; + sinon.stub(dingus, 'bodyData').resolves(body); + sinon.stub(Dingus, 'getRequestContentType').returns(Enum.ContentType.ApplicationJson); + await dingus.ingestBody(req, res, ctx, { persistRawBody: true }); + assert.deepStrictEqual(ctx.parsedBody, { foo: 'bar' }); + assert.deepStrictEqual(ctx.rawBody, body); + }); + it('skips parsing empty body', async function () { + const req = {}; + const res = {}; + const ctx = {}; + const body = ''; + sinon.stub(dingus, 'bodyData').resolves(body); + sinon.stub(Dingus, 'getRequestContentType').returns(Enum.ContentType.ApplicationJson); + sinon.spy(dingus, 'parseBody'); + await dingus.ingestBody(req, res, ctx, { parseEmptyBody: false }); + assert.deepStrictEqual(ctx.parsedBody, undefined); + assert(dingus.parseBody.notCalled); }); }); // ingestBody @@ -789,6 +820,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 () { @@ -987,4 +1025,4 @@ Content-Type: image/sgi assert(dingus.serveFile.called); }); }); // handlerGetStaticFile -}); \ No newline at end of file +});