1

私は残りのサービスといくつかの安心できるテストを備えた動作中のspring-mvcアプリケーションを持っています。

@Test
public void createFoobarFromScratchReturns201(){
    expect().statusCode(201).given()    
    .queryParam("foo", generateFoo())
    .queryParam("bar", generateBar())
    .when().post("/foo/bar/");
}

=> OK

次に、ダイジェスト認証を実装しました。すべてがうまく機能しています。サービスを使用するにはログインする必要があります。

curl http://localhost:8089/foo/bar
=> HTTP ERROR 401,  Full authentication is required to access this resource

curl http://localhost:8089/foo/bar --digest -u user_test:password
=> HTTP 201, CREATED

しかし、最も明白な関数でテストをアップグレードしようとすると、まだ 401 エラーが発生します。

@Test
public void createFoobarFromScratchReturns201(){
    expect().statusCode(201).given()    
    .auth().digest("user_test", "password") // Digest added here
    .queryParam("foo", generateFoo())
    .queryParam("bar", generateBar())
    .when().post("/foo/bar/");
}

=> Expected status code <201> doesn't match actual status code <401>

preemptive()関数でいくつかの手がかりを見つけましたが、それは basic に対してのみ実装されているようです:

// Returns an AuthenticatedScheme and stores it into the general configuration
RestAssured.authentication = preemptive().basic("user_test", "password");

// Try a similar thing, but it didn't work :
RestAssured.authentication = RestAssured.digest("user_test", "password");

現在、私は2つのことを達成しようとしています:

  • ダイジェストをサポートするためにいくつかのテストをアップグレードする必要があります
  • 残りのテスト スイート (認証の問題とは関係ありません)の@Beforeを修正して、既にログインしている必要があります。

アイデアやドキュメントはありますか?

4

1 に答える 1

1

Rest Assured 内に埋め込まれた HTTP クライアントで Cookie のサポートを有効にしてみてください。

 RestAssuredConfig config = new RestAssuredConfig().httpClient(new HttpClientConfig().setParam(ClientPNames.COOKIE_POLICY, CookiePolicy.BEST_MATCH));

 expect().statusCode(201).given()    
 .auth().digest("user_test", "password") // Digest added here
 .config(config)
 .queryParam("foo", generateFoo())
 .queryParam("bar", generateBar())
 .when().post("/foo/bar/");

HTTP クライアント (したがって、Rest Assured) はダイジェスト認証をサポートしており、メソッドを使用した RestAssured の構成は適切にdigest機能します。

于 2014-07-21T13:05:11.037 に答える