2017-06-30 5 views
1

をヘッダにそれを設定する方法、保証、私は、身体{username:"somename", password:"somepass"}POST要求、私に生成されたトークンと応答を与える ヘッダContent-Type:application.jsonとの認証を実行する必要が2番目のヘッダとしてペーストする必要があります。さらなるリクエストのためにAuthorization:generated-tokenkjhsdkjfvjbwjbQ==のようなsmthがあります。 お手伝いできますか。レストは、POST要求の後の応答本体から生成されたトークンを抽出し、任意の要求を実行

答えて

0

バリアント:

String token = given() 
       .contentType("application/json") 
       .body(new User("someuser" , "123")) 
       .when() 
       .post(RestConfig.baseUrl+"/authentication-url") 
       .then().extract().response().as(TokenResponse.class).getToken(); 

     given() 
       .contentType("application/json") 
       .header("Authorization", token) 
       .get(RestConfig.baseUrl+"/some-path") 
       .then() 
       .statusCode(200)... 
0

私は認証トークンを前後に渡さなければならない同様の要件を持っていましたが、これは春休みテンプレートではありません。その目的のために、私は応答時にトークンを取得し、要求時にヘッダーとして設定するクライアントフィルターを使用しました。仕事をすることができる安心して似たようなものがあるかどうか検索することができます。ここ が保証https://github.com/rest-assured/rest-assured/wiki/Usage

カスタム認証

残りはカスタム認証プロバイダーを作成することができ、サンプルです。 io.restassured.spi.AuthFilterインターフェイスを実装して(好ましくは)フィルタとして適用することでこれを行います。たとえば、「AUTH」という新しいヘッダーに2つのヘッダーを一緒に追加することでセキュリティが保護されているとしましょう(これはもちろん安全ではありません)。次に、この(Javaの8シンタックス)のようなことを行うことができます。。

given(). 
     filter((requestSpec, responseSpec, ctx) -> { 
      String header1 = requestSpec.getHeaders().getValue("header1"); 
      String header2 = requestSpec.getHeaders().getValue("header2"); 
      requestSpec.header("AUTH", header1 + header2); 
      return ctx.next(requestSpec, responseSpec); 
     }). 
when(). 
     get("/customAuth"). 
then(). 
    statusCode(200); 

あなたが認証フィルタを使用してフィルタしないようにしたい理由は、()与えられ行う際AuthFiltersが自動的に削除されるということであるAUTH()なし( )。 ...

+0

おかげで、フィルタを調査しようとして、残りの保証であり、どのように私はそれを使用することができます – Iriny

0

私は質問を誤解することができますが、私はそれから取得していたものから、私はこのような何かが動作するはずだと思う:

String token = 
    given(). 
      header("Content-Type", "application/json"). 
      body(/* body content goes here */). 
    when(). 
      post(/* route goes here */). 
    then(). 
      extract().path("token").toString() 
      // the above path arg depends on the response you get from the call. 

その後、次の呼び出しはのようになります。

given(). 
      header("Content-Type", "application/json"). 
      header("Authorization", token). 
    when()...etc. 

具体的な内容の一部はAPIに依存しますが、私はこの形式を常に使用しています。多くの場合、ユーザーIDやトークンなどの応答を取得し、将来の呼び出しに使用します。残りの部分で抽出する上

詳細情報は、ドキュメントを保証:私のために働いたhttps://github.com/rest-assured/rest-assured/wiki/Usage#extracting-values-from-the-response-after-validation

関連する問題