Skip to content

Commit 5a25830

Browse files
committed
test: follow redirects for login flows
1 parent 404ff53 commit 5a25830

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

src/test/java/fr/cnieg/keycloak/providers/login/attribute/KeycloakLoginAttributeProviderTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ private LoginForm loadLoginForm(HttpSession session) {
238238
"state", UUID.randomUUID().toString(),
239239
"nonce", UUID.randomUUID().toString()
240240
));
241+
response = followRedirectIfNeeded(session, response);
241242
assertEquals(200, response.statusCode(), "Unable to load login page");
242243
return LoginForm.parse(response.getBody().asString());
243244
}
@@ -260,6 +261,7 @@ private LoginForm submitLoginForm(HttpSession session, LoginForm form, String us
260261

261262
private ResetPasswordForm loadResetPasswordForm(HttpSession session, String url) {
262263
Response response = session.get(url, Collections.emptyMap());
264+
response = followRedirectIfNeeded(session, response);
263265
assertEquals(200, response.statusCode(), "Unable to load reset password form");
264266
return ResetPasswordForm.parse(response.getBody().asString());
265267
}
@@ -293,6 +295,22 @@ private static String toAbsoluteUrl(String url) {
293295
return KEYCLOAK_CONTAINER.getAuthServerUrl() + url;
294296
}
295297

298+
private Response followRedirectIfNeeded(HttpSession session, Response response) {
299+
if (response == null) {
300+
return null;
301+
}
302+
if (!isRedirect(response.statusCode())) {
303+
return response;
304+
}
305+
String location = response.getHeader("Location");
306+
assertNotNull(location, "Redirect response missing Location header");
307+
return session.get(toAbsoluteUrl(location), Collections.emptyMap());
308+
}
309+
310+
private boolean isRedirect(int statusCode) {
311+
return statusCode == 301 || statusCode == 302 || statusCode == 303 || statusCode == 307 || statusCode == 308;
312+
}
313+
296314
private record KeycloakEvent(String type, String error, Map<String, String> details) {
297315
}
298316

0 commit comments

Comments
 (0)