From bdaa3f0c66e47bd2f83685c9a3d1768b54ba32fb Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Fri, 23 Aug 2019 08:54:45 +0200 Subject: [PATCH] only apply compression in production added tests for compression --- deploy/compression/index.js | 14 ++++++++---- deploy/compression/index.spec.js | 39 ++++++++++++++++++++++++++++++++ deploy/nehubaConfig/index.js | 2 +- deploy/templates/index.js | 2 +- deploy/test/mocha.test.js | 3 ++- 5 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 deploy/compression/index.spec.js diff --git a/deploy/compression/index.js b/deploy/compression/index.js index 61193db5e..4d0a9caab 100644 --- a/deploy/compression/index.js +++ b/deploy/compression/index.js @@ -1,11 +1,15 @@ const BROTLI = `br` const GZIP = `gzip` -const detEncoding = (acceptEncoding) => /br/i.test(acceptEncoding) - ? BROTLI - : /gzip/i.test(acceptEncoding) - ? GZP - : null +const detEncoding = (acceptEncoding = '') => { + if (process.env.NODE_ENV !== 'production') return null + + return /br/i.test(acceptEncoding) + ? BROTLI + : /gzip/i.test(acceptEncoding) + ? GZIP + : null +} const mimeMap = new Map([ ['.png', 'image/png'], diff --git a/deploy/compression/index.spec.js b/deploy/compression/index.spec.js new file mode 100644 index 000000000..3c1a3826f --- /dev/null +++ b/deploy/compression/index.spec.js @@ -0,0 +1,39 @@ +const mocha = require('mocha') +const chai = require('chai') +const expect = chai.expect + +const { detEncoding, GZIP, BROTLI } = require('./index') + +const gzip = 'gzip' +const gzipDeflate = 'gzip, deflate' +const gzipDeflateBr = 'gzip, deflate, br' + +describe('compression/index.js', () => { + let nodeEnv + + before(() => { + nodeEnv = process.env.NODE_ENV + }) + + after(() => { + process.env.NODE_ENV = nodeEnv + }) + + describe('#detEncoding', () => { + it('When NODE_ENV is set to production, returns appropriate encoding', () => { + process.env.NODE_ENV = 'production' + expect(detEncoding(null)).to.equal(null) + expect(detEncoding(gzip)).to.equal(GZIP) + expect(detEncoding(gzipDeflate)).to.equal(GZIP) + expect(detEncoding(gzipDeflateBr)).to.equal(BROTLI) + }) + + it('When NODE_ENV is set to non production, returns null always', () => { + process.env.NODE_ENV = 'development' + expect(detEncoding(null)).to.equal(null) + expect(detEncoding(gzip)).to.equal(null) + expect(detEncoding(gzipDeflate)).to.equal(null) + expect(detEncoding(gzipDeflateBr)).to.equal(null) + }) + }) +}) \ No newline at end of file diff --git a/deploy/nehubaConfig/index.js b/deploy/nehubaConfig/index.js index f8ad0929e..145441ee8 100644 --- a/deploy/nehubaConfig/index.js +++ b/deploy/nehubaConfig/index.js @@ -10,7 +10,7 @@ nehubaConfigRouter.get('/:configId', (req, res, next) => { const acceptedEncoding = detEncoding(header) const { configId } = req.params - res.set('Content-Encoding', acceptedEncoding) + if (acceptedEncoding) res.set('Content-Encoding', acceptedEncoding) getTemplateNehubaConfig({ configId, acceptedEncoding, returnAsStream:true}).pipe(res) }) diff --git a/deploy/templates/index.js b/deploy/templates/index.js index dc2262186..d9fbeb831 100644 --- a/deploy/templates/index.js +++ b/deploy/templates/index.js @@ -34,7 +34,7 @@ router.get('/:template', (req, res, next) => { error: 'template not in the list supported' }) - res.set('Content-Encoding', acceptedEncoding) + if (acceptedEncoding) res.set('Content-Encoding', acceptedEncoding) query.getTemplate({ template, acceptedEncoding, returnAsStream:true }).pipe(res) }) .catch(error => next({ diff --git a/deploy/test/mocha.test.js b/deploy/test/mocha.test.js index 8f55b54de..366f5af4a 100644 --- a/deploy/test/mocha.test.js +++ b/deploy/test/mocha.test.js @@ -1 +1,2 @@ -require('../auth/util.spec') \ No newline at end of file +require('../auth/util.spec') +require('../compression/index.spec') \ No newline at end of file -- GitLab