【问题标题】:set ip in supertest request在超测请求中设置 ip
【发布时间】:2017-06-22 08:54:20
【问题描述】:

使用 supertest,我可以请求测试我的 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 来发出测试请求?

  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();
      });
  });

【问题讨论】:

    标签: node.js mocha.js supertest


    【解决方案1】:

    假设您正在通过 express 使用req.ip 检查 IP 地址(尽管其他框架的行为可能相同), 在您的测试中使用所需的 IP 地址设置 X-Forwarded-For 标头:

    .set('X-Forwarded-For', '192.168.2.1')
    

    您可能需要在您的服务器中启用trust proxy 选项:

    app.enable('trust proxy')
    

    【讨论】:

      【解决方案2】:

      您可以设置通常包含 IP 地址、Remote-AddrX-Http-Forwarded-For 的标头。您的应用可能正在检查其中一个或两个标头以确定 IP 地址。

      .set('Accept', 'application/json')
      .set('Remote-Addr', '192.168.2.1')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-20
        • 2013-05-12
        • 2011-04-25
        相关资源
        最近更新 更多