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