我正在使用播放!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
.
我做错了什么?如何解决我的问题?
谢谢。