Я использую Играть! v1.2.6 и защищенный модуль.Играйте! framework FunctionalTest игнорирует операцию входа в защищенное приложение
Я хочу проверить некоторые из моих контроллеров, поэтому я написал FunctionalTest
. Меня беспокоит, что любая страница в моем приложении защищена, поэтому сначала пользователь (или тестовый класс) должен войти в систему. Я видел a similar question на 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
.
Что я делаю неправильно? Как я могу исправить свою проблему?
Спасибо.