2016-11-14 4 views
1

Frisby 프레임 워크를 사용하여 API 테스트 케이스를 작성했습니다. 나는 우체부 또는 DHC에 URL 및 자격 증명을 둘 때, 응답이 제대로오고 있지만 frisby 테스트 케이스에서 나는 오류가 점점 오전 : -"Expected 400 to equal 200"

이 코드는 다음과 같습니다 : -

var frisby = require('frisby'); 
frisby.create('User Authentication') 

//send the params to below url 
    .post("url", 
     { username: "username", 
     password: "password" 
     }, 
     { json: true, 
     headers: {Accept:'application/json', 
       'Accept-Encoding':'Encoding:gzip, deflate', 
       'Accept-Language':'en-US,en;q=0.8', 
       Connection:'keep-alive', 
       'Content-Length':'107', 
       'Content-Type':'application/json', 
       Host:'url.com', 
       Origin:'http://url.com', 
       Referer:'http://url.com/', 
       'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36', 
       'X-Application-Key':'1234545', 
       'X-Requested-With':'XMLHttpRequest' 
       } 
     } 
    ) 

.expectStatus(200) 
.toss(); 
+0

username, password 및 url은 거짓입니다. –

+0

제안 사항 –

+0

HTTP 400은 '잘못된 요청'이므로 요청 헤더에 문제가있을 수 있습니다. ''Accept-Encoding ':'인코딩 : gzip, deflate''는 이상하게 보입니다. 나는 두 번째'인코딩 :'내가 당신이라면 제거 할 것입니다. –

답변

0

요청이오고있다을 백 400은 HTTP Bad Request입니다.

첫 번째 것은 API가 응답 메시지 본문을 토해내는데 무엇이 잘못되었는지 자세히 알려주는 것입니다. 잘못된 요청 응답은 요청에 무엇이 잘못되었는지 알려줍니다.

frisby는 비동기식이므로 after()을 사용하여 실행 순서를 보장합니다 (토스하기 전에). 말처럼 frisby 후 기능 게시물에 대한 매개 변수 :

  • url : URL을
  • data : 게시물 요청의 본문
  • params 이제
    .post("https://blah.blah.blah.com", "some json...", "some more json...") 
    .expectStatus(200) 
    .after(function(err, res, body){ console.log(body); }) 
    .toss(); 
    

    , frisby의 post() 3 개 인수를 json을 제출하십시오.

그래서 사용자 이름/비밀번호 개체를 게시하고있는 것 같습니다.

문자열 "url"이 실제로 유효한 URL이라는 가정하에이 명백한 문제는 건너 뛸 수 있습니다.

오류 메시지가 표시되지 않고 야생 샷을 찍은 후 API에 인증 정보를 제공하지 않는다고 추측합니다. 나는 완전히 열려있는 많은 API를 모른다. 일반적으로 기본 인증 자격 증명 같은 것을 기대하고 당신이 그들을 제공하지 않는 경우, 일반적으로 얻을 것이다 A :

  • 400 bad request 그들은 "자격 증명"
  • 404 not found 경우 말을하지 메시지와 함께 좋은 있다면 그들은 수줍어 연주 및 비 승인 된 사람이 유효한 자원 어쩌면
  • 또는 거기에 알고 싶지 않아 심지어 403 Forbidden

가 자격 증명을 것으로 판명 않는 경우 만든 후, 당신이 그들을 추가 전화 게시물,하지만 전에 toss(). post() 앞에 넣으면 실패합니다. 또한 시스템에 생성하려는 사용자가 아닌 API 사용자 이름 & 암호입니다. API의 client_idclient_secret 또는 API_KEYAPI_SECRET에서 언급되는 경우도 있지만 식별자와 공유 된 비밀 정보 일뿐입니다.

그래서 마지막 것은 같을 것이다

.post("https://blah.blah.blah.com", "some json...", "some more json...") 

.auth("api_username", "api_password") 

.expectStatus(200) 

.toss(); 

Frisby는 유효한 기본 64 인코딩 문자열에 일반 텍스트 사용자 이름/암호를 변환하고 post()를 호출 한 후 일어날 필요가 아마 이유를합니다 (Authorization: 헤더에 대항 할 것)

또한 addHeader(header, content)을 사용하여 머리말을 명시 적으로 추가하는 것은 post()에 json의 큰 고약한 얼룩을 떨어 뜨리는 것보다 좋아하지만 이는 단지 나의 취향입니다.

행운을 빌어 요!