Search in sources :

Example 71 with Cookie

use of org.openqa.selenium.Cookie in project keycloak by keycloak.

the class LoginSettingsTest method getCookieNames.

private Set<String> getCookieNames() {
    Set<Cookie> cookies = driver.manage().getCookies();
    Set<String> cookieNames = new HashSet<>();
    for (Cookie cookie : cookies) {
        cookieNames.add(cookie.getName());
    }
    return cookieNames;
}
Also used : Cookie(org.openqa.selenium.Cookie) HashSet(java.util.HashSet)

Example 72 with Cookie

use of org.openqa.selenium.Cookie in project keycloak by keycloak.

the class CookiesPathTest method testMultipleCookies.

@Test
public void testMultipleCookies() throws IOException {
    String requestURI = OAuthClient.AUTH_SERVER_ROOT + "/realms/foo/account";
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DAY_OF_YEAR, 1);
    // create old cookie with wrong path
    BasicClientCookie wrongCookie = new BasicClientCookie(AuthenticationSessionManager.AUTH_SESSION_ID, AUTH_SESSION_VALUE);
    wrongCookie.setDomain(AUTH_SERVER_HOST);
    wrongCookie.setPath(OLD_COOKIE_PATH);
    wrongCookie.setExpiryDate(calendar.getTime());
    // obtain new cookies
    CookieStore cookieStore = getCorrectCookies(requestURI);
    cookieStore.addCookie(wrongCookie);
    Assert.assertThat(cookieStore.getCookies(), Matchers.hasSize(3));
    login(requestURI, cookieStore);
    // old cookie has been removed
    // now we have AUTH_SESSION_ID, KEYCLOAK_IDENTITY, KEYCLOAK_SESSION
    Assert.assertThat(cookieStore.getCookies().stream().map(org.apache.http.cookie.Cookie::getName).collect(Collectors.toList()), Matchers.hasItems("AUTH_SESSION_ID", "KEYCLOAK_IDENTITY", "KEYCLOAK_SESSION"));
    // does each cookie's path end with "/"
    cookieStore.getCookies().stream().filter(c -> !"OAuth_Token_Request_State".equals(c.getName())).map(org.apache.http.cookie.Cookie::getPath).forEach(path -> Assert.assertThat(path, Matchers.endsWith("/")));
    // KEYCLOAK_SESSION should end by AUTH_SESSION_ID value
    String authSessionId = cookieStore.getCookies().stream().filter(c -> "AUTH_SESSION_ID".equals(c.getName())).findFirst().get().getValue();
    String KCSessionId = cookieStore.getCookies().stream().filter(c -> "KEYCLOAK_SESSION".equals(c.getName())).findFirst().get().getValue();
    String KCSessionSuffix = KCSessionId.split("/")[2];
    Assert.assertThat(authSessionId, Matchers.containsString(KCSessionSuffix));
}
Also used : BasicClientCookie(org.apache.http.impl.cookie.BasicClientCookie) Cookie(org.openqa.selenium.Cookie) LaxRedirectStrategy(org.apache.http.impl.client.LaxRedirectStrategy) BasicNameValuePair(org.apache.http.message.BasicNameValuePair) HttpPost(org.apache.http.client.methods.HttpPost) Arrays(java.util.Arrays) Profile(org.keycloak.common.Profile) UrlEncodedFormEntity(org.apache.http.client.entity.UrlEncodedFormEntity) AdminRoles(org.keycloak.models.AdminRoles) ContainerAssume(org.keycloak.testsuite.util.ContainerAssume) Page(org.jboss.arquillian.graphene.page.Page) AuthenticationSessionManager(org.keycloak.services.managers.AuthenticationSessionManager) OAuthClient(org.keycloak.testsuite.util.OAuthClient) CookieStore(org.apache.http.client.CookieStore) Calendar(java.util.Calendar) RealmBuilder(org.keycloak.testsuite.util.RealmBuilder) CloseableHttpResponse(org.apache.http.client.methods.CloseableHttpResponse) UserBuilder(org.keycloak.testsuite.util.UserBuilder) After(org.junit.After) LinkedList(java.util.LinkedList) CloseableHttpClient(org.apache.http.impl.client.CloseableHttpClient) BasicClientCookie(org.apache.http.impl.cookie.BasicClientCookie) HttpRequestBase(org.apache.http.client.methods.HttpRequestBase) Matchers(org.hamcrest.Matchers) Set(java.util.Set) Test(org.junit.Test) DisableFeature(org.keycloak.testsuite.arquillian.annotation.DisableFeature) IOException(java.io.IOException) AUTH_SERVER_HOST(org.keycloak.testsuite.util.ServerURLs.AUTH_SERVER_HOST) URLUtils(org.keycloak.testsuite.util.URLUtils) HttpCoreContext(org.apache.http.protocol.HttpCoreContext) Collectors(java.util.stream.Collectors) RealmRepresentation(org.keycloak.representations.idm.RealmRepresentation) IOUtils(org.apache.commons.io.IOUtils) List(java.util.List) BasicCookieStore(org.apache.http.impl.client.BasicCookieStore) AccountRoles(org.keycloak.models.AccountRoles) HttpGet(org.apache.http.client.methods.HttpGet) AbstractKeycloakTest(org.keycloak.testsuite.AbstractKeycloakTest) LoginPage(org.keycloak.testsuite.pages.LoginPage) Matchers.equalTo(org.hamcrest.Matchers.equalTo) Cookie(org.openqa.selenium.Cookie) ActionURIUtils(org.keycloak.testsuite.ActionURIUtils) Matchers.is(org.hamcrest.Matchers.is) HttpClientBuilder(org.apache.http.impl.client.HttpClientBuilder) NameValuePair(org.apache.http.NameValuePair) Assert(org.junit.Assert) CookieStore(org.apache.http.client.CookieStore) BasicCookieStore(org.apache.http.impl.client.BasicCookieStore) Calendar(java.util.Calendar) BasicClientCookie(org.apache.http.impl.cookie.BasicClientCookie) Test(org.junit.Test) AbstractKeycloakTest(org.keycloak.testsuite.AbstractKeycloakTest)

Example 73 with Cookie

use of org.openqa.selenium.Cookie in project keycloak by keycloak.

the class ImpersonationTest method impersonate.

private Set<Cookie> impersonate(Keycloak adminClient, String admin, String adminRealm) {
    BasicCookieStore cookieStore = new BasicCookieStore();
    try (CloseableHttpClient httpClient = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build()) {
        HttpUriRequest req = RequestBuilder.post().setUri(AUTH_SERVER_ROOT + "/admin/realms/test/users/" + impersonatedUserId + "/impersonation").addHeader(HttpHeaders.AUTHORIZATION, "Bearer " + adminClient.tokenManager().getAccessTokenString()).build();
        HttpResponse res = httpClient.execute(req);
        String resBody = EntityUtils.toString(res.getEntity());
        Assert.assertNotNull(resBody);
        Assert.assertTrue(resBody.contains("redirect"));
        events.expect(EventType.IMPERSONATE).session(AssertEvents.isUUID()).user(impersonatedUserId).detail(Details.IMPERSONATOR, admin).detail(Details.IMPERSONATOR_REALM, adminRealm).client((String) null).assertEvent();
        // Fetch user session notes
        final String userId = impersonatedUserId;
        final UserSessionNotesHolder notesHolder = testingClient.server("test").fetch(session -> {
            final RealmModel realm = session.realms().getRealmByName("test");
            final UserModel user = session.users().getUserById(realm, userId);
            final UserSessionModel userSession = session.sessions().getUserSessionsStream(realm, user).findFirst().get();
            return new UserSessionNotesHolder(userSession.getNotes());
        }, UserSessionNotesHolder.class);
        // Check impersonation details
        final Map<String, String> notes = notesHolder.getNotes();
        Assert.assertNotNull(notes.get(ImpersonationSessionNote.IMPERSONATOR_ID.toString()));
        Assert.assertEquals(admin, notes.get(ImpersonationSessionNote.IMPERSONATOR_USERNAME.toString()));
        Set<Cookie> cookies = cookieStore.getCookies().stream().filter(c -> c.getName().startsWith(AuthenticationManager.KEYCLOAK_IDENTITY_COOKIE)).map(c -> new Cookie(c.getName(), c.getValue(), c.getDomain(), c.getPath(), c.getExpiryDate(), c.isSecure(), true)).collect(Collectors.toSet());
        Assert.assertNotNull(cookies);
        Assert.assertThat(cookies, is(not(empty())));
        return cookies;
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
Also used : HttpUriRequest(org.apache.http.client.methods.HttpUriRequest) Cookie(org.openqa.selenium.Cookie) org.keycloak.representations.idm(org.keycloak.representations.idm) URL(java.net.URL) AssertEvents(org.keycloak.testsuite.AssertEvents) Config(org.keycloak.Config) Page(org.jboss.arquillian.graphene.page.Page) ClientErrorException(javax.ws.rs.ClientErrorException) EntityUtils(org.apache.http.util.EntityUtils) AuthenticationManager(org.keycloak.services.managers.AuthenticationManager) ClientResource(org.keycloak.admin.client.resource.ClientResource) RealmModel(org.keycloak.models.RealmModel) RealmResource(org.keycloak.admin.client.resource.RealmResource) Collectors(java.util.stream.Collectors) Keycloak(org.keycloak.admin.client.Keycloak) AuthRealm(org.keycloak.testsuite.auth.page.AuthRealm) HttpHeaders(javax.ws.rs.core.HttpHeaders) Response(javax.ws.rs.core.Response) Details(org.keycloak.events.Details) AbstractKeycloakTest(org.keycloak.testsuite.AbstractKeycloakTest) LoginPage(org.keycloak.testsuite.pages.LoginPage) ResteasyClient(org.jboss.resteasy.client.jaxrs.ResteasyClient) OAuth2Constants(org.keycloak.OAuth2Constants) java.util(java.util) BeforeClass(org.junit.BeforeClass) AuthServerContainerExclude(org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude) AdminRoles(org.keycloak.models.AdminRoles) KeycloakModelUtils(org.keycloak.models.utils.KeycloakModelUtils) Constants(org.keycloak.models.Constants) ServerURLs.getAuthServerContextRoot(org.keycloak.testsuite.util.ServerURLs.getAuthServerContextRoot) HttpUriRequest(org.apache.http.client.methods.HttpUriRequest) ResteasyClientBuilder(org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder) UserModel(org.keycloak.models.UserModel) RequestBuilder(org.apache.http.client.methods.RequestBuilder) Assume(org.junit.Assume) UserResource(org.keycloak.admin.client.resource.UserResource) AuthServer(org.keycloak.testsuite.arquillian.annotation.AuthServerContainerExclude.AuthServer) Before(org.junit.Before) AUTH_SERVER_ROOT(org.keycloak.testsuite.util.OAuthClient.AUTH_SERVER_ROOT) CloseableHttpClient(org.apache.http.impl.client.CloseableHttpClient) AppPage(org.keycloak.testsuite.pages.AppPage) Matchers(org.hamcrest.Matchers) Test(org.junit.Test) EventType(org.keycloak.events.EventType) IOException(java.io.IOException) UserSessionModel(org.keycloak.models.UserSessionModel) ImpersonationSessionNote(org.keycloak.models.ImpersonationSessionNote) org.keycloak.testsuite.util(org.keycloak.testsuite.util) BasicCookieStore(org.apache.http.impl.client.BasicCookieStore) Rule(org.junit.Rule) ImpersonationConstants(org.keycloak.models.ImpersonationConstants) Cookie(org.openqa.selenium.Cookie) HttpResponse(org.apache.http.HttpResponse) HttpClientBuilder(org.apache.http.impl.client.HttpClientBuilder) Assert(org.junit.Assert) KeycloakBuilder(org.keycloak.admin.client.KeycloakBuilder) CloseableHttpClient(org.apache.http.impl.client.CloseableHttpClient) UserSessionModel(org.keycloak.models.UserSessionModel) HttpResponse(org.apache.http.HttpResponse) IOException(java.io.IOException) RealmModel(org.keycloak.models.RealmModel) UserModel(org.keycloak.models.UserModel) BasicCookieStore(org.apache.http.impl.client.BasicCookieStore)

Aggregations

Cookie (org.openqa.selenium.Cookie)73 Test (org.junit.Test)26 WebElement (org.openqa.selenium.WebElement)16 WebDriver (org.openqa.selenium.WebDriver)14 WebDriverWait (org.openqa.selenium.support.ui.WebDriverWait)9 Date (java.util.Date)8 App (com.coveros.selenified.application.App)7 IOException (java.io.IOException)7 AbstractKeycloakTest (org.keycloak.testsuite.AbstractKeycloakTest)7 BasicClientCookie (org.apache.http.impl.cookie.BasicClientCookie)6 Test (org.testng.annotations.Test)6 Collectors (java.util.stream.Collectors)5 BasicCookieStore (org.apache.http.impl.client.BasicCookieStore)5 CloseableHttpClient (org.apache.http.impl.client.CloseableHttpClient)5 HttpClientBuilder (org.apache.http.impl.client.HttpClientBuilder)5 AuthorizeClient (org.gluu.oxauth.client.AuthorizeClient)5 Matchers (org.hamcrest.Matchers)5 Page (org.jboss.arquillian.graphene.page.Page)5 Assert (org.junit.Assert)5 AdminRoles (org.keycloak.models.AdminRoles)5