Skip to content
Snippets Groups Projects
Commit bdaa3f0c authored by Xiao Gui's avatar Xiao Gui
Browse files

only apply compression in production

added tests for compression
parent 8447d577
No related branches found
No related tags found
No related merge requests found
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'],
......
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
......@@ -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)
})
......
......@@ -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({
......
require('../auth/util.spec')
\ No newline at end of file
require('../auth/util.spec')
require('../compression/index.spec')
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment