私はプレイを使用しています!v1.2.6、およびセキュア モジュール。
コントローラーのいくつかをテストしたいので、FunctionalTest
. 私の懸念は、アプリケーション内のすべてのページが保護されているため、ユーザー (またはテスト クラス) が最初にログインする必要があることです。SO で同様の質問を見たので、次のコードを書きました。
public class ApplicationTest extends FunctionalTest {
// Simulate a login and create a new request...
public Request createAuthenticatedRequest(String url) {
Map<String, String> loginInfo = new HashMap<String, String>();
loginInfo.put("username", "test-user");
loginInfo.put("password", "test-password");
Response loginResponse = POST("/login", loginInfo);
Request request = newRequest();
request.cookies = loginResponse.cookies;
request.url = url;
return request;
}
@Test
public void test_summary_page() {
Request request = createAuthenticatedRequest("/summary");
Response response = makeRequest(request);
System.out.println("==================");
System.out.println("Content: '" + getContent(response) + "'");
System.out.println("------------------");
System.out.println(" > " + response.headers.get("Location") + " ; " + response.status);
System.out.println("==================");
assertIsOk(response);
assertContentMatch("Summary page", response);
assertContentType("text/html", response);
assertCharset(play.Play.defaultWebEncoding, response);
}
ただし、これは機能していません。テスト メソッドの出力は次のとおりです。
==================
Content: ''
------------------
> [/login] ; 302
==================
これは、ユーザーがログインしていない場合と同様に、リクエストが (HTTP コード302
) ログイン ページにリダイレクトされたことを意味します。
また、Secure クラスでは、メソッドboolean authenticate(String username, String password)
にログ メッセージを追加して、実際に認証の試行があるかどうかを確認しましたが、FunctionalTest
.
私が間違っていることは何ですか?問題を解決するにはどうすればよいですか?
ありがとう。