UNPKG

express-http-proxy

Version:
56 lines (47 loc) 1.57 kB
var assert = require('assert'); var express = require('express'); var request = require('supertest'); var fs = require('fs'); var os = require('os'); var proxy = require('../'); describe('body encoding', function() { 'use strict'; this.timeout(10000); var app; beforeEach(function() { app = express(); app.use(proxy('httpbin.org')); }); it('allow raw data', function(done) { var pngHex = '89504e470d0a1a0a0' + '000000d4948445200' + '00000100000001080' + '60000001f15c48900' + '00000a49444154789' + 'c6300010000050001' + '0d0a2db4000000004' + '9454e44ae426082'; var pngData = new Buffer(pngHex, 'hex'); var filename = os.tmpdir() + '/express-http-proxy-test-' + (new Date()).getTime() + '-png-transparent.png'; var app = express(); app.use(proxy('httpbin.org', { reqBodyEncoding: null, decorateRequest: function(reqOpts) { assert((new Buffer(reqOpts.bodyContent).toString('hex')).indexOf(pngData.toString('hex')) >= 0, 'body should contain same data'); return reqOpts; } })); fs.writeFile(filename, pngData, function(err) { if (err) { throw err; } request(app) .post('/post') .attach('image', filename) .end(function(err, res) { fs.unlink(filename); assert.equal(res.body.files.image, 'data:image/png;base64,' + pngData.toString('base64')); done(err); }); }); }); });