Download ADOOR_ACE/node_modules/express-http-proxy/test/bodyEncoding.js from thisisAce/adoor-store: direct link, hf CLI and curl.
- Browser
- Download file 5.54 kB
-
https://huggingface.co/thisisAce/adoor-store/resolve/main/ADOOR_ACE/node_modules/express-http-proxy/test/bodyEncoding.js
- Command line
-
hf download hf://thisisAce/adoor-store/ADOOR_ACE/node_modules/express-http-proxy/test/bodyEncoding.js
-
curl -L -o bodyEncoding.js https://huggingface.co/thisisAce/adoor-store/resolve/main/ADOOR_ACE/node_modules/express-http-proxy/test/bodyEncoding.js
5.54 kB
| ; | |
| var assert = require('assert'); | |
| var express = require('express'); | |
| var request = require('supertest'); | |
| var fs = require('fs'); | |
| var os = require('os'); | |
| var proxy = require('../'); | |
| var startProxyTarget = require('./support/proxyTarget'); | |
| describe('body encoding', function () { | |
| var server; | |
| before(function () { | |
| server = startProxyTarget(8109, 1000); | |
| }); | |
| after(function () { | |
| server.close(); | |
| }); | |
| this.timeout(10000); | |
| var pngHex = '89504e470d0a1a0a0' + | |
| '000000d4948445200' + | |
| '00000100000001080' + | |
| '60000001f15c48900' + | |
| '00000a49444154789' + | |
| 'c6300010000050001' + | |
| '0d0a2db4000000004' + | |
| '9454e44ae426082'; | |
| var pngData = new Buffer(pngHex, 'hex'); | |
| it('allow raw data', function (done) { | |
| var filename = os.tmpdir() + '/express-http-proxy-test-' + (new Date()).getTime() + '-png-transparent.png'; | |
| var app = express(); | |
| app.use(proxy('localhost:8109', { | |
| reqBodyEncoding: null, | |
| proxyReqBodyDecorator: function (bodyContent) { | |
| assert((new Buffer(bodyContent).toString('hex')).indexOf(pngData.toString('hex')) >= 0, | |
| 'body should contain same data'); | |
| return bodyContent; | |
| } | |
| })); | |
| fs.writeFile(filename, pngData, function (err) { | |
| if (err) { throw err; } | |
| request(app) | |
| .post('/post') | |
| .attach('image', filename) | |
| .end(function (err) { | |
| fs.unlinkSync(filename); | |
| // This test is both broken and I think unnecessary. | |
| // Its broken because http.bin no longer supports /post, but this test assertion is based on the old | |
| // httpbin behavior. | |
| // The assertion in the decorateRequest above verifies the test title. | |
| //var response = new Buffer(res.body.attachment.data).toString('base64'); | |
| //assert(response.indexOf(pngData.toString('base64')) >= 0, 'response should include original raw data'); | |
| done(err); | |
| }); | |
| }); | |
| }); | |
| describe('when user sets parseReqBody', function () { | |
| it('should not parse body', function (done) { | |
| var filename = os.tmpdir() + '/express-http-proxy-test-' + (new Date()).getTime() + '-png-transparent.png'; | |
| var app = express(); | |
| app.use(proxy('localhost:8109', { | |
| parseReqBody: false, | |
| proxyReqBodyDecorator: function (bodyContent) { | |
| assert(!bodyContent, 'body content should not be parsed.'); | |
| return bodyContent; | |
| } | |
| })); | |
| fs.writeFile(filename, pngData, function (err) { | |
| if (err) { throw err; } | |
| request(app) | |
| .post('/post') | |
| .attach('image', filename) | |
| .end(function (err) { | |
| fs.unlinkSync(filename); | |
| // This test is both broken and I think unnecessary. | |
| // Its broken because http.bin no longer supports /post, but this test assertion is based on the old | |
| // httpbin behavior. | |
| // The assertion in the decorateRequest above verifies the test title. | |
| // var response = new Buffer(res.body.attachment.data).toString('base64'); | |
| // assert(response.indexOf(pngData.toString('base64')) >= 0, 'response should include original raw data'); | |
| done(err); | |
| }); | |
| }); | |
| }); | |
| it('should not fail on large limit', function (done) { | |
| var filename = os.tmpdir() + '/express-http-proxy-test-' + (new Date()).getTime() + '-png-transparent.png'; | |
| var app = express(); | |
| app.use(proxy('localhost:8109', { | |
| parseReqBody: false, | |
| limit: '20gb', | |
| })); | |
| fs.writeFile(filename, pngData, function (err) { | |
| if (err) { throw err; } | |
| request(app) | |
| .post('/post') | |
| .attach('image', filename) | |
| .end(function (err) { | |
| fs.unlinkSync(filename); | |
| assert(err === null); | |
| // This test is both broken and I think unnecessary. | |
| // Its broken because http.bin no longer supports /post, but this test assertion is based on the old | |
| // httpbin behavior. | |
| // The assertion in the decorateRequest above verifies the test title. | |
| //var response = new Buffer(res.body.attachment.data).toString('base64'); | |
| //assert(response.indexOf(pngData.toString('base64')) >= 0, 'response should include original raw data'); | |
| done(err); | |
| }); | |
| }); | |
| }); | |
| it('should fail with an error when exceeding limit', function (done) { | |
| var app = express(); | |
| app.use(proxy('localhost:8109', { | |
| limit: 1, | |
| })); | |
| // silence jshint warning about unused vars - express error handler *needs* 4 args | |
| app.use(function (err, req, res, next) { // eslint-disable-line no-unused-vars | |
| res.json(err); | |
| }); | |
| request(app) | |
| .post('/post') | |
| .send({ some: 'json' }) | |
| .end(function (err, response) { | |
| assert(response.body.message === 'request entity too large'); | |
| done(); | |
| }); | |
| }); | |
| }); | |
| describe('when user sets reqBodyEncoding', function () { | |
| it('should set the accepts-charset header', function (done) { | |
| var app = express(); | |
| app.use(proxy('localhost:8109', { | |
| reqBodyEncoding: 'utf-16' | |
| })); | |
| request(app) | |
| .get('/headers') | |
| .end(function (err, res) { | |
| if (err) { throw err; } | |
| assert.equal(res.body.headers['accept-charset'], 'utf-16'); | |
| done(err); | |
| }); | |
| }); | |
| }); | |
| }); | |