Merge pull request #731 from stianst/master
Add login test with multiple sessions for same user
This commit is contained in:
commit
53489cd556
2 changed files with 64 additions and 11 deletions
|
@ -453,20 +453,24 @@ public class AccountTest {
|
||||||
|
|
||||||
// Create second session
|
// Create second session
|
||||||
WebDriver driver2 = WebRule.createWebDriver();
|
WebDriver driver2 = WebRule.createWebDriver();
|
||||||
OAuthClient oauth2 = new OAuthClient(driver2);
|
try {
|
||||||
oauth2.state("mystate");
|
OAuthClient oauth2 = new OAuthClient(driver2);
|
||||||
oauth2.doLogin("view-sessions", "password");
|
oauth2.state("mystate");
|
||||||
|
oauth2.doLogin("view-sessions", "password");
|
||||||
|
|
||||||
Event login2Event = events.expectLogin().user(userId).detail(Details.USERNAME, "view-sessions").assertEvent();
|
Event login2Event = events.expectLogin().user(userId).detail(Details.USERNAME, "view-sessions").assertEvent();
|
||||||
|
|
||||||
sessionsPage.open();
|
sessionsPage.open();
|
||||||
sessions = sessionsPage.getSessions();
|
sessions = sessionsPage.getSessions();
|
||||||
Assert.assertEquals(2, sessions.size());
|
Assert.assertEquals(2, sessions.size());
|
||||||
|
|
||||||
sessionsPage.logoutAll();
|
sessionsPage.logoutAll();
|
||||||
|
|
||||||
events.expectLogout(registerEvent.getSessionId());
|
events.expectLogout(registerEvent.getSessionId());
|
||||||
events.expectLogout(login2Event.getSessionId());
|
events.expectLogout(login2Event.getSessionId());
|
||||||
|
} finally {
|
||||||
|
driver2.close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.keycloak.OAuth2Constants;
|
import org.keycloak.OAuth2Constants;
|
||||||
import org.keycloak.events.Details;
|
import org.keycloak.events.Details;
|
||||||
|
import org.keycloak.events.Event;
|
||||||
import org.keycloak.testsuite.AssertEvents;
|
import org.keycloak.testsuite.AssertEvents;
|
||||||
import org.keycloak.testsuite.OAuthClient;
|
import org.keycloak.testsuite.OAuthClient;
|
||||||
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
import org.keycloak.testsuite.pages.AccountUpdateProfilePage;
|
||||||
|
@ -40,6 +41,7 @@ import org.openqa.selenium.WebDriver;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotEquals;
|
import static org.junit.Assert.assertNotEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||||
|
@ -88,7 +90,7 @@ public class SSOTest {
|
||||||
|
|
||||||
profilePage.open();
|
profilePage.open();
|
||||||
|
|
||||||
Assert.assertTrue(profilePage.isCurrent());
|
assertTrue(profilePage.isCurrent());
|
||||||
|
|
||||||
String sessionId2 = events.expectLogin().detail(Details.AUTH_METHOD, "sso").removeDetail(Details.USERNAME).client("test-app").assertEvent().getSessionId();
|
String sessionId2 = events.expectLogin().detail(Details.AUTH_METHOD, "sso").removeDetail(Details.USERNAME).client("test-app").assertEvent().getSessionId();
|
||||||
|
|
||||||
|
@ -105,4 +107,51 @@ public class SSOTest {
|
||||||
events.clear();
|
events.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void multipleSessions() {
|
||||||
|
loginPage.open();
|
||||||
|
loginPage.login("test-user@localhost", "password");
|
||||||
|
|
||||||
|
Assert.assertEquals(RequestType.AUTH_RESPONSE, appPage.getRequestType());
|
||||||
|
Assert.assertNotNull(oauth.getCurrentQuery().get(OAuth2Constants.CODE));
|
||||||
|
|
||||||
|
Event login1 = events.expectLogin().assertEvent();
|
||||||
|
|
||||||
|
WebDriver driver2 = WebRule.createWebDriver();
|
||||||
|
try {
|
||||||
|
OAuthClient oauth2 = new OAuthClient(driver2);
|
||||||
|
oauth2.state("mystate");
|
||||||
|
oauth2.doLogin("test-user@localhost", "password");
|
||||||
|
|
||||||
|
Event login2 = events.expectLogin().assertEvent();
|
||||||
|
|
||||||
|
Assert.assertEquals(RequestType.AUTH_RESPONSE, RequestType.valueOf(driver2.getTitle()));
|
||||||
|
Assert.assertNotNull(oauth2.getCurrentQuery().get(OAuth2Constants.CODE));
|
||||||
|
|
||||||
|
assertNotEquals(login1.getSessionId(), login2.getSessionId());
|
||||||
|
|
||||||
|
oauth.openLogout();
|
||||||
|
events.expectLogout(login1.getSessionId()).assertEvent();
|
||||||
|
|
||||||
|
oauth.openLoginForm();
|
||||||
|
|
||||||
|
assertTrue(loginPage.isCurrent());
|
||||||
|
|
||||||
|
oauth2.openLoginForm();
|
||||||
|
|
||||||
|
events.expectLogin().session(login2.getSessionId()).detail(Details.AUTH_METHOD, "sso").removeDetail(Details.USERNAME).assertEvent();
|
||||||
|
Assert.assertEquals(RequestType.AUTH_RESPONSE, RequestType.valueOf(driver2.getTitle()));
|
||||||
|
Assert.assertNotNull(oauth2.getCurrentQuery().get(OAuth2Constants.CODE));
|
||||||
|
|
||||||
|
oauth2.openLogout();
|
||||||
|
events.expectLogout(login2.getSessionId()).assertEvent();
|
||||||
|
|
||||||
|
oauth2.openLoginForm();
|
||||||
|
|
||||||
|
assertTrue(driver2.getTitle().equals("Log in to test"));
|
||||||
|
} finally {
|
||||||
|
driver2.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue