diff --git a/pom.xml b/pom.xml
index 696298b92..79c663e92 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,6 +23,11 @@
${project.basedir}/ide-config
eclipse-format.xml
+
0.31-202305291230-SNAPSHOT
5.7.0
@@ -344,6 +349,11 @@
generator-annotations
${version.io.fabric8}
+
+ io.fabric8
+ openshift-client
+ ${version.openshift-client}
+
diff --git a/testsuite/pom.xml b/testsuite/pom.xml
index 00e8684a5..7f5c2e7f3 100644
--- a/testsuite/pom.xml
+++ b/testsuite/pom.xml
@@ -47,7 +47,6 @@
io.fabric8
openshift-client
- ${version.openshift-client}
diff --git a/testsuite/src/test/java/org/jboss/intersmash/testsuite/provision/openshift/KeycloakRealmImportOperatorProvisionerTest.java b/testsuite/src/test/java/org/jboss/intersmash/testsuite/provision/openshift/KeycloakRealmImportOperatorProvisionerTest.java
index e1b2c14ce..6fc30f5f0 100644
--- a/testsuite/src/test/java/org/jboss/intersmash/testsuite/provision/openshift/KeycloakRealmImportOperatorProvisionerTest.java
+++ b/testsuite/src/test/java/org/jboss/intersmash/testsuite/provision/openshift/KeycloakRealmImportOperatorProvisionerTest.java
@@ -138,8 +138,6 @@ public static void removeOperatorGroup() {
OpenShifts.adminBinary().execute("delete", "operatorgroup", "--all");
if (!Objects.isNull(KEYCLOAK_OPERATOR_PROVISIONER))
KEYCLOAK_OPERATOR_PROVISIONER.dismiss();
- POSTGRESQL_IMAGE_PROVISIONER.undeploy();
- POSTGRESQL_IMAGE_PROVISIONER.postUndeploy();
}
@AfterEach
@@ -169,38 +167,40 @@ public void customResourcesCleanup() {
*/
@Test
public void exampleSso() {
+ name = "example-sso";
+
+ final Keycloak keycloak = new Keycloak();
+ keycloak.getMetadata().setName(name);
+ keycloak.getMetadata().setLabels(matchLabels);
+ KeycloakSpec spec = new KeycloakSpec();
+ spec.setInstances(1L);
+ Ingress ingress = new Ingress();
+ ingress.setEnabled(true);
+ spec.setIngress(ingress);
+ Hostname hostname = new Hostname();
+ hostname.setHostname(OpenShifts.master().generateHostname(name));
+ // create key, certificate and tls secret: Keycloak expects the secret to be created beforehand
+ String tlsSecretName = name + "-tls-secret";
+ CertificatesUtils.CertificateAndKey certificateAndKey = CertificatesUtils
+ .generateSelfSignedCertificateAndKey(hostname.getHostname().replaceFirst("[.].*$", ""), tlsSecretName);
+ // add TLS config to keycloak using the secret we just created
+ Http http = new Http();
+ http.setTlsSecret(certificateAndKey.tlsSecret.getMetadata().getName());
+ spec.setHttp(http);
+ spec.setHostname(hostname);
+ keycloak.setSpec(spec);
+
+ KEYCLOAK_OPERATOR_PROVISIONER = initializeOperatorProvisioner(keycloak, name);
+ KEYCLOAK_OPERATOR_PROVISIONER.configure();
try {
- name = "example-sso";
-
- final Keycloak keycloak = new Keycloak();
- keycloak.getMetadata().setName(name);
- keycloak.getMetadata().setLabels(matchLabels);
- KeycloakSpec spec = new KeycloakSpec();
- spec.setInstances(1L);
- Ingress ingress = new Ingress();
- ingress.setEnabled(true);
- spec.setIngress(ingress);
- Hostname hostname = new Hostname();
- hostname.setHostname(OpenShifts.master().generateHostname(name));
- // create key, certificate and tls secret: Keycloak expects the secret to be created beforehand
- String tlsSecretName = name + "-tls-secret";
- CertificatesUtils.CertificateAndKey certificateAndKey = CertificatesUtils
- .generateSelfSignedCertificateAndKey(hostname.getHostname().replaceFirst("[.].*$", ""), tlsSecretName);
- // add TLS config to keycloak using the secret we just created
- Http http = new Http();
- http.setTlsSecret(certificateAndKey.tlsSecret.getMetadata().getName());
- spec.setHttp(http);
- spec.setHostname(hostname);
- keycloak.setSpec(spec);
-
- KEYCLOAK_OPERATOR_PROVISIONER = initializeOperatorProvisioner(keycloak, name);
- KEYCLOAK_OPERATOR_PROVISIONER.configure();
KEYCLOAK_OPERATOR_PROVISIONER.subscribe();
-
- verifyKeycloak(keycloak, true);
- } finally {
- if (!Objects.isNull(KEYCLOAK_OPERATOR_PROVISIONER))
+ try {
+ verifyKeycloak(keycloak, true);
+ } finally {
KEYCLOAK_OPERATOR_PROVISIONER.unsubscribe();
+ }
+ } finally {
+ KEYCLOAK_OPERATOR_PROVISIONER.dismiss();
}
}
@@ -216,82 +216,93 @@ public void exampleSso() {
*/
@Test
public void exampleSsoWithDatabase() {
+ POSTGRESQL_IMAGE_PROVISIONER.configure();
try {
- POSTGRESQL_IMAGE_PROVISIONER.configure();
POSTGRESQL_IMAGE_PROVISIONER.preDeploy();
- POSTGRESQL_IMAGE_PROVISIONER.deploy();
-
- name = "example-sso";
-
- Keycloak keycloak = new Keycloak();
- keycloak.getMetadata().setName(name);
- keycloak.getMetadata().setLabels(matchLabels);
- KeycloakSpec spec = new KeycloakSpec();
- keycloak.setSpec(spec);
- spec.setInstances(1L);
- Ingress ingress = new Ingress();
- ingress.setEnabled(true);
- spec.setIngress(ingress);
- Hostname hostname = new Hostname();
- hostname.setHostname(OpenShifts.master().generateHostname(name));
- // create key, certificate and tls secret: Keycloak expects the secret to be created beforehand
- String tlsSecretName = name + "-tls-secret";
- CertificatesUtils.CertificateAndKey certificateAndKey = CertificatesUtils
- .generateSelfSignedCertificateAndKey(hostname.getHostname().replaceFirst("[.].*$", ""), tlsSecretName);
- // add TLS config to keycloak using the secret we just created
- Http http = new Http();
- http.setTlsSecret(certificateAndKey.tlsSecret.getMetadata().getName());
- spec.setHttp(http);
- spec.setHostname(hostname);
- // database
- Db db = new Db();
- db.setVendor("postgres");
- db.setHost(POSTGRESQL_IMAGE_PROVISIONER.getServiceName());
- db.setPort(Integer.toUnsignedLong(POSTGRESQL_IMAGE_PROVISIONER.getPort()));
- UsernameSecret usernameSecret = new UsernameSecret();
- usernameSecret.setName(POSTGRESQL_IMAGE_PROVISIONER.getSecretName());
- usernameSecret.setKey(PostgreSQLImageOpenShiftProvisioner.POSTGRESQL_USER_KEY);
- db.setUsernameSecret(usernameSecret);
- PasswordSecret passwordSecret = new PasswordSecret();
- passwordSecret.setName(POSTGRESQL_IMAGE_PROVISIONER.getSecretName());
- passwordSecret.setKey(PostgreSQLImageOpenShiftProvisioner.POSTGRESQL_PASSWORD_KEY);
- db.setPasswordSecret(passwordSecret);
- db.setDatabase(POSTGRESQL_IMAGE_PROVISIONER.getApplication().getDbName());
- spec.setDb(db);
-
- realmName = "saml-basic-auth";
- KeycloakRealmImport realmImport = new KeycloakRealmImport();
- realmImport.getMetadata().setName(realmName);
- realmImport.getMetadata().setLabels(matchLabels);
- KeycloakRealmImportSpec spec1 = new KeycloakRealmImportSpec();
- realmImport.setSpec(spec1);
- spec1.setKeycloakCRName(name);
- Realm realm = new Realm();
- spec1.setRealm(realm);
- realm.setId(realmName);
- realm.setRealm(realmName);
- realm.setEnabled(true);
- List users = new ArrayList<>();
- realm.setUsers(users);
- Users user1 = new Users();
- users.add(user1);
- user1.setUsername("user");
- user1.setEnabled(true);
- Credentials credentials = new Credentials();
- user1.setCredentials(List.of(credentials));
- credentials.setType("password");
- credentials.setValue("LOREDANABERTE1234");
-
- KEYCLOAK_OPERATOR_PROVISIONER = initializeOperatorProvisioner(keycloak, name);
- KEYCLOAK_OPERATOR_PROVISIONER.configure();
- KEYCLOAK_OPERATOR_PROVISIONER.subscribe();
-
- verifyKeycloak(keycloak, realmImport, true);
+ try {
+ POSTGRESQL_IMAGE_PROVISIONER.deploy();
+ try {
+ name = "example-sso";
+ Keycloak keycloak = new Keycloak();
+ keycloak.getMetadata().setName(name);
+ keycloak.getMetadata().setLabels(matchLabels);
+ KeycloakSpec spec = new KeycloakSpec();
+ keycloak.setSpec(spec);
+ spec.setInstances(1L);
+ Ingress ingress = new Ingress();
+ ingress.setEnabled(true);
+ spec.setIngress(ingress);
+ Hostname hostname = new Hostname();
+ hostname.setHostname(OpenShifts.master().generateHostname(name));
+ // create key, certificate and tls secret: Keycloak expects the secret to be created beforehand
+ String tlsSecretName = name + "-tls-secret";
+ CertificatesUtils.CertificateAndKey certificateAndKey = CertificatesUtils
+ .generateSelfSignedCertificateAndKey(hostname.getHostname().replaceFirst("[.].*$", ""),
+ tlsSecretName);
+ // add TLS config to keycloak using the secret we just created
+ Http http = new Http();
+ http.setTlsSecret(certificateAndKey.tlsSecret.getMetadata().getName());
+ spec.setHttp(http);
+ spec.setHostname(hostname);
+ // database
+ Db db = new Db();
+ db.setVendor("postgres");
+ db.setHost(POSTGRESQL_IMAGE_PROVISIONER.getServiceName());
+ db.setPort(Integer.toUnsignedLong(POSTGRESQL_IMAGE_PROVISIONER.getPort()));
+ UsernameSecret usernameSecret = new UsernameSecret();
+ usernameSecret.setName(POSTGRESQL_IMAGE_PROVISIONER.getSecretName());
+ usernameSecret.setKey(PostgreSQLImageOpenShiftProvisioner.POSTGRESQL_USER_KEY);
+ db.setUsernameSecret(usernameSecret);
+ PasswordSecret passwordSecret = new PasswordSecret();
+ passwordSecret.setName(POSTGRESQL_IMAGE_PROVISIONER.getSecretName());
+ passwordSecret.setKey(PostgreSQLImageOpenShiftProvisioner.POSTGRESQL_PASSWORD_KEY);
+ db.setPasswordSecret(passwordSecret);
+ db.setDatabase(POSTGRESQL_IMAGE_PROVISIONER.getApplication().getDbName());
+ spec.setDb(db);
+
+ realmName = "saml-basic-auth";
+ KeycloakRealmImport realmImport = new KeycloakRealmImport();
+ realmImport.getMetadata().setName(realmName);
+ realmImport.getMetadata().setLabels(matchLabels);
+ KeycloakRealmImportSpec spec1 = new KeycloakRealmImportSpec();
+ realmImport.setSpec(spec1);
+ spec1.setKeycloakCRName(name);
+ Realm realm = new Realm();
+ spec1.setRealm(realm);
+ realm.setId(realmName);
+ realm.setRealm(realmName);
+ realm.setEnabled(true);
+ List users = new ArrayList<>();
+ realm.setUsers(users);
+ Users user1 = new Users();
+ users.add(user1);
+ user1.setUsername("user");
+ user1.setEnabled(true);
+ Credentials credentials = new Credentials();
+ user1.setCredentials(List.of(credentials));
+ credentials.setType("password");
+ credentials.setValue("LOREDANABERTE1234");
+
+ KEYCLOAK_OPERATOR_PROVISIONER = initializeOperatorProvisioner(keycloak, name);
+ KEYCLOAK_OPERATOR_PROVISIONER.configure();
+ try {
+ KEYCLOAK_OPERATOR_PROVISIONER.subscribe();
+ try {
+ verifyKeycloak(keycloak, true);
+ } finally {
+ KEYCLOAK_OPERATOR_PROVISIONER.unsubscribe();
+ }
+ } finally {
+ KEYCLOAK_OPERATOR_PROVISIONER.dismiss();
+ }
+ } finally {
+ POSTGRESQL_IMAGE_PROVISIONER.undeploy();
+ }
+ } finally {
+ POSTGRESQL_IMAGE_PROVISIONER.postUndeploy();
+ }
} finally {
- if (!Objects.isNull(KEYCLOAK_OPERATOR_PROVISIONER))
- KEYCLOAK_OPERATOR_PROVISIONER.unsubscribe();
- POSTGRESQL_IMAGE_PROVISIONER.undeploy();
- POSTGRESQL_IMAGE_PROVISIONER.postUndeploy();
+ POSTGRESQL_IMAGE_PROVISIONER.dismiss();
}
}
diff --git a/tools/intersmash-tools-provisioners/src/main/java/org/jboss/intersmash/tools/util/tls/CertificatesUtils.java b/tools/intersmash-tools-provisioners/src/main/java/org/jboss/intersmash/tools/util/tls/CertificatesUtils.java
index b3d1773e9..eaae70c93 100644
--- a/tools/intersmash-tools-provisioners/src/main/java/org/jboss/intersmash/tools/util/tls/CertificatesUtils.java
+++ b/tools/intersmash-tools-provisioners/src/main/java/org/jboss/intersmash/tools/util/tls/CertificatesUtils.java
@@ -6,11 +6,11 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.text.MessageFormat;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
-
-import org.junit.jupiter.api.Assertions;
+import java.util.Objects;
import cz.xtf.core.config.OpenShiftConfig;
import cz.xtf.core.openshift.OpenShifts;
@@ -69,7 +69,9 @@ public static CertificateAndKey generateSelfSignedCertificateAndKey(String hostn
caDir.resolve(truststore).toFile().exists()) {
certificateAndKey.existing = true;
Secret tlsSecret = OpenShifts.master().getSecret(tlsSecretName);
- Assertions.assertNotNull(tlsSecret);
+ if (Objects.isNull(tlsSecret)) {
+ throw new RuntimeException(MessageFormat.format("Secret {} doesn't exist!", tlsSecretName));
+ }
certificateAndKey.tlsSecret = tlsSecret;
return certificateAndKey;
}
@@ -85,7 +87,9 @@ public static CertificateAndKey generateSelfSignedCertificateAndKey(String hostn
// create secret
try {
Secret tlsSecret = createTlsSecret(tlsSecretName, certificateAndKey.key, certificateAndKey.certificate);
- Assertions.assertNotNull(tlsSecret);
+ if (Objects.isNull(tlsSecret)) {
+ throw new RuntimeException(MessageFormat.format("Secret {} doesn't exist!", tlsSecretName));
+ }
certificateAndKey.tlsSecret = tlsSecret;
} catch (IOException e) {
throw new RuntimeException("Failed to create secret " + tlsSecretName, e);