verdaccio/test/functional/gzip.js

94 lines
2.8 KiB
JavaScript
Raw Normal View History

2014-03-30 23:05:42 +02:00
require('./lib/startup')
var assert = require('assert')
var async = require('async')
var crypto = require('crypto')
2014-03-30 23:05:42 +02:00
function readfile(x) {
return require('fs').readFileSync(__dirname + '/' + x)
2014-03-30 23:05:42 +02:00
}
module.exports = function() {
var server = process.server
var express = process.express
2014-03-30 23:05:42 +02:00
describe('testexp_gzip', function() {
before(function() {
express.get('/testexp_gzip', function(req, res) {
var x = eval(
'(' + readfile('fixtures/publish.json5')
.toString('utf8')
.replace(/__NAME__/g, 'testexp_gzip')
.replace(/__VERSION__/g, '0.0.1')
+ ')'
)
2014-03-30 23:05:42 +02:00
// overcoming compress threshold
x.versions['0.0.2'] = x.versions['0.0.1']
x.versions['0.0.3'] = x.versions['0.0.1']
x.versions['0.0.4'] = x.versions['0.0.1']
x.versions['0.0.5'] = x.versions['0.0.1']
x.versions['0.0.6'] = x.versions['0.0.1']
x.versions['0.0.7'] = x.versions['0.0.1']
x.versions['0.0.8'] = x.versions['0.0.1']
x.versions['0.0.9'] = x.versions['0.0.1']
2014-03-30 23:05:42 +02:00
require('zlib').gzip(JSON.stringify(x), function(err, buf) {
assert(!err)
assert.equal(req.headers['accept-encoding'], 'gzip')
res.header('content-encoding', 'gzip')
res.send(buf)
})
})
2014-03-30 23:05:42 +02:00
express.get('/testexp_baddata', function(req, res) {
assert.equal(req.headers['accept-encoding'], 'gzip')
res.header('content-encoding', 'gzip')
res.send(new Buffer([1,2,3,4,5,6,7,7,6,5,4,3,2,1]))
})
})
2014-03-30 23:05:42 +02:00
it('should not fail on bad gzip', function(cb) {
server.get_package('testexp_baddata', function(res, body) {
assert.equal(res.statusCode, 404)
cb()
})
})
2014-03-30 23:05:42 +02:00
it('should understand gzipped data from uplink', function(cb) {
server.get_package('testexp_gzip', function(res, body) {
assert.equal(res.statusCode, 200)
assert.equal(res.headers['content-encoding'], undefined)
assert.equal(body.name, 'testexp_gzip')
assert.equal(Object.keys(body.versions).length, 9)
cb()
})
})
2014-03-30 23:05:42 +02:00
it('should serve gzipped data', function(cb) {
server.request({
uri: '/testexp_gzip',
encoding: null,
headers: {
'Accept-encoding': 'gzip',
},
json: false,
}, function(err, res, body) {
assert.equal(res.statusCode, 200)
assert.equal(res.headers['content-encoding'], 'gzip')
assert.throws(function() {
JSON.parse(body.toString('utf8'))
})
require('zlib').gunzip(body, function(err, buf) {
assert(!err)
body = JSON.parse(buf)
assert.equal(body.name, 'testexp_gzip')
assert.equal(Object.keys(body.versions).length, 9)
cb()
})
})
})
})
2014-03-30 23:05:42 +02:00
}