keycloak-memoizeit
Changes
testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/broker/BrokerTestConstants.java 9(+6 -3)
testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractBrokerTest.java 19(+10 -9)
Details
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractBrokerTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractBrokerTest.java
index aa12b41..600b596 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractBrokerTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/AbstractBrokerTest.java
@@ -15,6 +15,7 @@ import org.keycloak.testsuite.pages.LoginPage;
import org.keycloak.testsuite.pages.UpdateAccountInformationPage;
import java.util.List;
+import java.util.stream.Collectors;
import static org.keycloak.testsuite.admin.ApiUtil.createUserWithAdminClient;
import static org.keycloak.testsuite.admin.ApiUtil.resetUserPassword;
@@ -117,11 +118,13 @@ public abstract class AbstractBrokerTest extends AbstractKeycloakTest {
public void tryToLogInAsUserInIDP() {
driver.navigate().to(getAuthRoot() + "/auth/realms/" + consumerRealmName() + "/account");
+ log.debug("Clicking social " + getIDPAlias());
accountLoginPage.clickSocial(getIDPAlias());
Assert.assertTrue("Driver should be on the provider realm page right now",
driver.getCurrentUrl().contains("/auth/realms/" + providerRealmName() + "/"));
+ log.debug("Logging in");
accountLoginPage.login(getUserLogin(), getUserPassword());
Assert.assertTrue("We must be on update user profile page right now",
@@ -130,21 +133,19 @@ public abstract class AbstractBrokerTest extends AbstractKeycloakTest {
Assert.assertTrue("We must be on correct realm right now",
driver.getCurrentUrl().contains("/auth/realms/" + consumerRealmName() + "/"));
+ log.debug("Updating info on updateAccount page");
updateAccountInformationPage.updateAccountInformation("Firstname", "Lastname");
UsersResource consumerUsers = adminClient.realm(consumerRealmName()).users();
+ Assert.assertTrue("There must be at least one user", consumerUsers.count() > 0);
+
List<UserRepresentation> users = consumerUsers.search("", 0, 5);
- Assert.assertTrue("There must be at least one user", users.size() > 0);
- boolean foundUser = false;
- for (UserRepresentation user : users) {
- if (user.getUsername().equals(getUserLogin()) && user.getEmail().equals(getUserEmail())) {
- foundUser = true;
- break;
- }
- }
+ List<UserRepresentation> correctUsers = users.stream()
+ .filter(user -> user.getUsername().equals(getUserLogin()) && user.getEmail().equals(getUserEmail()))
+ .collect(Collectors.toList());
Assert.assertTrue("There must be user " + getUserLogin() + " in realm " + consumerRealmName(),
- foundUser);
+ correctUsers.size() > 0);
}
}
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/KcOidcBrokerTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/KcOidcBrokerTest.java
index f17ed2b..7faf624 100644
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/KcOidcBrokerTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/KcOidcBrokerTest.java
@@ -8,7 +8,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
-import static org.keycloak.testsuite.broker.KcOidcBrokerConstants.*;
+import static org.keycloak.testsuite.broker.BrokerTestConstants.*;
public class KcOidcBrokerTest extends AbstractBrokerTest {
@@ -39,7 +39,7 @@ public class KcOidcBrokerTest extends AbstractBrokerTest {
client.setEnabled(true);
client.setRedirectUris(Collections.singletonList(getAuthRoot() +
- "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_ALIAS + "/endpoint/*"));
+ "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_OIDC_ALIAS + "/endpoint/*"));
return Collections.singletonList(client);
}
@@ -51,7 +51,7 @@ public class KcOidcBrokerTest extends AbstractBrokerTest {
@Override
protected IdentityProviderRepresentation setUpIdentityProvider() {
- IdentityProviderRepresentation idp = createIdentityProvider(IDP_ALIAS, IDP_PROVIDER_ID);
+ IdentityProviderRepresentation idp = createIdentityProvider(IDP_OIDC_ALIAS, IDP_OIDC_PROVIDER_ID);
Map<String, String> config = idp.getConfig();
@@ -95,7 +95,7 @@ public class KcOidcBrokerTest extends AbstractBrokerTest {
@Override
protected String getIDPAlias() {
- return IDP_ALIAS;
+ return IDP_OIDC_ALIAS;
}
}
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/KcSamlBrokerTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/KcSamlBrokerTest.java
new file mode 100644
index 0000000..a1fdc76
--- /dev/null
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/broker/KcSamlBrokerTest.java
@@ -0,0 +1,138 @@
+package org.keycloak.testsuite.broker;
+
+import org.keycloak.representations.idm.ClientRepresentation;
+import org.keycloak.representations.idm.IdentityProviderRepresentation;
+import org.keycloak.representations.idm.ProtocolMapperRepresentation;
+import org.keycloak.representations.idm.RealmRepresentation;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.keycloak.testsuite.broker.BrokerTestConstants.*;
+
+public class KcSamlBrokerTest extends AbstractBrokerTest {
+
+ @Override
+ protected RealmRepresentation createProviderRealm() {
+ RealmRepresentation realm = new RealmRepresentation();
+
+ realm.setEnabled(true);
+ realm.setRealm(REALM_PROV_NAME);
+
+ return realm;
+ }
+
+ @Override
+ protected RealmRepresentation createConsumerRealm() {
+ RealmRepresentation realm = new RealmRepresentation();
+
+ realm.setEnabled(true);
+ realm.setRealm(REALM_CONS_NAME);
+
+ return realm;
+ }
+
+ @Override
+ protected List<ClientRepresentation> createProviderClients() {
+ ClientRepresentation client = new ClientRepresentation();
+
+ client.setClientId(getAuthRoot() + "/auth/realms/" + REALM_CONS_NAME);
+ client.setEnabled(true);
+ client.setProtocol(IDP_SAML_PROVIDER_ID);
+ client.setRedirectUris(Collections.singletonList(
+ getAuthRoot() + "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_SAML_ALIAS + "/endpoint"
+ ));
+
+ Map<String, String> attributes = new HashMap<>();
+
+ attributes.put("saml.authnstatement", "true");
+ attributes.put("saml_single_logout_service_url_post",
+ getAuthRoot() + "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_SAML_ALIAS + "/endpoint");
+ attributes.put("saml_force_name_id_format",
+ getAuthRoot() + "/auth/realms/" + REALM_CONS_NAME + "/broker/" + IDP_SAML_ALIAS + "/endpoint");
+ attributes.put("saml_force_name_id_format", "true");
+ attributes.put("saml_name_id_format", "username");
+ attributes.put("saml.assertion.signature", "false");
+ attributes.put("saml.server.signature", "false");
+ attributes.put("saml.client.signature", "false");
+
+ client.setAttributes(attributes);
+
+ ProtocolMapperRepresentation mapper = new ProtocolMapperRepresentation();
+ mapper.setName("email");
+ mapper.setProtocol("saml");
+ mapper.setProtocolMapper("saml-user-property-mapper");
+ mapper.setConsentRequired(false);
+
+ Map<String, String> mapperConfig = mapper.getConfig();
+ mapperConfig.put("user.attribute", "email");
+ mapperConfig.put("attribute.name", "urn:oid:1.2.840.113549.1.9.1");
+ mapperConfig.put("attribute.nameformat", "urn:oasis:names:tc:SAML:2.0:attrname-format:uri");
+ mapperConfig.put("friendly.name", "email");
+
+ client.setProtocolMappers(Collections.singletonList(
+ mapper
+ ));
+
+ return Collections.singletonList(client);
+ }
+
+ @Override
+ protected List<ClientRepresentation> createConsumerClients() {
+ return null;
+ }
+
+ @Override
+ protected IdentityProviderRepresentation setUpIdentityProvider() {
+ IdentityProviderRepresentation idp = createIdentityProvider(IDP_SAML_ALIAS, IDP_SAML_PROVIDER_ID);
+
+ idp.setTrustEmail(true);
+ idp.setAddReadTokenRoleOnCreate(true);
+ idp.setStoreToken(true);
+
+ Map<String, String> config = idp.getConfig();
+
+ config.put("singleSignOnServiceUrl", getAuthRoot() + "/auth/realms/" + REALM_PROV_NAME + "/protocol/saml");
+ config.put("singleLogoutServiceUrl", getAuthRoot() + "/auth/realms/" + REALM_PROV_NAME + "/protocol/saml");
+ config.put("nameIDPolicyFormat", "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress");
+ config.put("forceAuthn", "true");
+ config.put("postBindingResponse", "true");
+ config.put("postBindingAuthnRequest", "true");
+ config.put("validateSignature", "false");
+ config.put("wantAuthnRequestsSigned", "false");
+
+ return idp;
+ }
+
+ @Override
+ protected String providerRealmName() {
+ return REALM_PROV_NAME;
+ }
+
+ @Override
+ protected String consumerRealmName() {
+ return REALM_CONS_NAME;
+ }
+
+ @Override
+ protected String getUserLogin() {
+ return USER_LOGIN;
+ }
+
+ @Override
+ protected String getUserPassword() {
+ return USER_PASSWORD;
+ }
+
+ @Override
+ protected String getUserEmail() {
+ return USER_EMAIL;
+ }
+
+ @Override
+ protected String getIDPAlias() {
+ return IDP_SAML_ALIAS;
+ }
+}