@Test public void authorizationRequestNoState() throws IOException { AuthorizationCodeResponse response = oauth.doLogin("test-user@localhost", "password"); Assert.assertTrue(response.isRedirected()); Assert.assertNotNull(response.getCode()); Assert.assertNull(response.getState()); Assert.assertNull(response.getError()); oauth.verifyCode(response.getCode()); }
@Test public void authorizationRequestInstalledApp() throws IOException { oauth.redirectUri(Constants.INSTALLED_APP_URN); oauth.doLogin("test-user@localhost", "password"); String title = driver.getTitle(); Assert.assertTrue(title.startsWith("Success code=")); String code = driver.findElement(By.id(OAuth2Constants.CODE)).getText(); oauth.verifyCode(code); }
@Test public void sessions() { loginPage.open(); loginPage.clickRegister(); registerPage.register( "view", "sessions", "view-sessions@localhost", "view-sessions", "password", "password"); Event registerEvent = events.expectRegister("view-sessions", "view-sessions@localhost").assertEvent(); String userId = registerEvent.getUserId(); events.expectLogin().user(userId).detail(Details.USERNAME, "view-sessions").assertEvent(); sessionsPage.open(); Assert.assertTrue(sessionsPage.isCurrent()); List<List<String>> sessions = sessionsPage.getSessions(); Assert.assertEquals(1, sessions.size()); Assert.assertEquals("127.0.0.1", sessions.get(0).get(0)); // Create second session WebDriver driver2 = WebRule.createWebDriver(); try { OAuthClient oauth2 = new OAuthClient(driver2); oauth2.state("mystate"); oauth2.doLogin("view-sessions", "password"); Event login2Event = events.expectLogin().user(userId).detail(Details.USERNAME, "view-sessions").assertEvent(); sessionsPage.open(); sessions = sessionsPage.getSessions(); Assert.assertEquals(2, sessions.size()); sessionsPage.logoutAll(); events.expectLogout(registerEvent.getSessionId()); events.expectLogout(login2Event.getSessionId()); } finally { driver2.close(); } }
@Test public void authorizationValidRedirectUri() throws IOException { keycloakRule.configure( new KeycloakRule.KeycloakSetup() { @Override public void config( RealmManager manager, RealmModel adminstrationRealm, RealmModel appRealm) { appRealm.getApplicationByName("test-app").addRedirectUri(oauth.getRedirectUri()); } }); oauth.state("mystate"); AuthorizationCodeResponse response = oauth.doLogin("test-user@localhost", "password"); Assert.assertTrue(response.isRedirected()); Assert.assertNotNull(response.getCode()); oauth.verifyCode(response.getCode()); }
@Test public void getApplicationSessions() throws Exception { OAuthClient.AccessTokenResponse response = oauth.doGrantAccessTokenRequest("password", "test-user@localhost", "password"); assertEquals(200, response.getStatusCode()); OAuthClient.AuthorizationCodeResponse codeResponse = oauth.doLogin("test-user@localhost", "password"); OAuthClient.AccessTokenResponse response2 = oauth.doAccessTokenRequest(codeResponse.getCode(), "password"); assertEquals(200, response2.getStatusCode()); ApplicationResource app = keycloak.realm("test").applications().get("test-app"); assertEquals(2, (long) app.getApplicationSessionCount().get("count")); List<UserSessionRepresentation> userSessions = app.getUserSessions(0, 100); assertEquals(2, userSessions.size()); assertEquals(1, userSessions.get(0).getApplications().size()); }