Server IP : 85.214.239.14 / Your IP : 3.137.189.197 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/task/3/root/proc/3/root/lib/node_modules/pm2/node_modules/needle/test/ |
Upload File : |
var should = require('should'), needle = require('./../'), http = require('http'), zlib = require('zlib'), stream = require('stream'), port = 11123, server; describe('compression', function(){ require.bind(null, 'zlib').should.not.throw() var jsonData = '{"foo":"bar"}'; describe('when server supports compression', function(){ before(function(){ server = http.createServer(function(req, res) { var raw = new stream.PassThrough(); var acceptEncoding = req.headers['accept-encoding']; if (!acceptEncoding) { acceptEncoding = ''; } if (acceptEncoding.match(/\bdeflate\b/)) { res.setHeader('Content-Encoding', 'deflate'); raw.pipe(zlib.createDeflate()).pipe(res); } else if (acceptEncoding.match(/\bgzip\b/)) { res.setHeader('Content-Encoding', 'gzip'); raw.pipe(zlib.createGzip()).pipe(res); } else { raw.pipe(res); } res.setHeader('Content-Type', 'application/json') if (req.headers['with-bad']) { res.end('foo'); // end, no deflate data } else { raw.end(jsonData) } }) server.listen(port); }); after(function(done){ server.close(done); }) describe('and client requests no compression', function() { it('should have the body decompressed', function(done){ needle.get('localhost:' + port, function(err, response, body){ should.ifError(err); body.should.have.property('foo', 'bar'); response.bytes.should.equal(jsonData.length); done(); }) }) }) describe('and client requests gzip compression', function() { it('should have the body decompressed', function(done){ needle.get('localhost:' + port, {headers: {'Accept-Encoding': 'gzip'}}, function(err, response, body){ should.ifError(err); body.should.have.property('foo', 'bar'); response.bytes.should.not.equal(jsonData.length); done(); }) }) }) describe('and client requests deflate compression', function() { it('should have the body decompressed', function(done){ needle.get('localhost:' + port, {headers: {'Accept-Encoding': 'deflate'}}, function(err, response, body){ should.ifError(err); body.should.have.property('foo', 'bar'); response.bytes.should.not.equal(jsonData.length); done(); }) }) it('should rethrow errors from decompressors', function(done){ needle.get('localhost:' + port, {headers: {'Accept-Encoding': 'deflate', 'With-Bad': 'true'}}, function(err, response, body) { should.exist(err); err.message.should.equal("incorrect header check"); err.code.should.equal("Z_DATA_ERROR") done(); }) }) }) }) })