在超级请求中设置ip
超supertest,我可以做一个resquest来testing我的node.js应用程序
var request = require('supertest'); var api = require('../server').app; ... it('json response', function(done){ request(api) .get('/api') .set('Accept', 'application/json') .expect('Content-Type', /json/) .end(function(err, res){ done(); }); });
我如何设置特定的IP来做testing请求?
it('ip access denied', function(done){ request(api) .get('/api') .set('Accept', 'application/json') .expect('Content-Type', /json/) // set specific ip .end(function(err, res){ res.body.message.should.eql('Access denied'); done(); }); });
您可以设置通常包含IP地址, Remote-Addr
和X-Http-Forwarded-For
。 您的应用程序可能会检查这些标头中的一个或两个以确定IP地址。
.set('Accept', 'application/json') .set('Remote-Addr', '192.168.2.1')
假设你正在通过express检查一个带有req.ip
的IP地址(尽pipe其他框架可能会performance相同),请在你的testing中用所需的IP地址设置X-Forwarded-For
标题:
.set('X-Forwarded-For', '192.168.2.1')
您可能需要在服务器中启用信任代理选项:
app.enable('trust proxy')