2017-02-15 32 views
0

试图测试其余api。在我的项目中没有用于登录的API。无论何时你点击api,它都会被重定向到登录,接受用户/密码并给你结果。如何在Frisby中传递基本身份验证和发布请求?

我试着GET如下,这对我来说工作得很好。

var frisby = require('frisby') 
    var url = 'https://localhost:8443'; 
    var api= '/api/v2/events/details' 
    var endpoint = '?id=ccce2aef971f' 
    var user= '[email protected]' 
    var pass= 'temp' 

    frisby.create('GET event details based on eventid from an endpoint') 
    .get(url+api+endpoint,{strictSSL: false}) 
    .auth(user,pass,false) 
    .expectStatus(200) 
    .expectHeader('Content-Type', 'application/json;charset=UTF-8') 
    .toss(); 

现在我想用相同的格式但没有运气的POST方法作为回应。

var frisby = require('frisby') 
var user= '[email protected]' 
var pass= 'temp' 
var jsonbody = {"group": "a10bbd20", 
     "category":"Attack", 
     "notes":"abcdddd", 
     "criteria":[ {"attribute":"PATH" ,"operator": "EQUALS", "value":"/Account/demo.aspx" }] 
     } 

frisby.create('TEST POST') 
.post('https://localhost:8443/api/v2/rule-settings/pointwise',jsonbody,{ json: true },{ headers: { 'Content-Type': 'application/json' }},{strictSSL: false}) 
.auth(user,pass,false) 

.expectStatus(201) 
.toss(); 

======================

我试图通过存储从以前的响应Cookie,但仍同样的错误换做POST请求超时

var frisby = require('frisby') 
var url = 'https://localhost:8443'; 
var api= '/api/v2/events/details' 
var endpoint = '?id=ccce2aef971f' 
var user= '[email protected]' 
var pass= 'temp' 


var loginState = { 
}; 


    frisby.create('GET event details based on eventid from an endpoint') 
    .get(url+api+endpoint,{strictSSL: false}) 
    .auth(user,pass,false) 
     .after(function (body,res) { 
      var cookie = res.headers['set-cookie']; 
      console.log(cookie); 
      loginState.user1 = {}; // build an object for user 1 
      loginState.user1.cookie = cookie;     
      var jsonbody = {"group": "a10bbd20", 
          "category":"Attack", 
          "notes":"abcdddd", 
          "criteria":[ {"attribute":"PATH" ,"operator": "EQUALS", "value":"/Account/demo.aspx" }] 
          } 

     frisby.create('TEST POST') 
     .post('https://localhost:8443/api/v2/rule-settings/pointwise',jsonbody,{ json: true },{strictSSL: false}) 
     .addHeader('cookie', loginState.user1.cookie) 
     .addHeader('Content-Type', 'application/json') 
     .inspectRequest() 
     .expectStatus(201) 
     .toss(); 
     }) 

     .toss(); 

输出我得到的是

Message: 
Expected 500 to equal 200. 
Stacktrace: 
Error: Expected 500 to equal 200. 
at null.<anonymous> (C:\Users\Administrator\Documents\TestSuite\node_modules 
\frisby\lib\frisby.js:493:42) 
at null.<anonymous> (C:\Users\Administrator\Documents\TestSuite\node_modules 
\frisby\lib\frisby.js:1074:43) 
at Timer.listOnTimeout (timers.js:92:15) 

回答

0

我发现夫妇的搜索和弗里斯比发行后的解决方案。

需要添加环境变量来绕过证书。 add process.env.NODE_TLS_REJECT_UNAUTHORIZED =“0”;之前的方法和一切都很好去。

还有一件事情,它也可以和普通的发布请求一起工作。没有必要链接获取,张贴在一起的饼干。

相关问题