This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git

commit 3c0acf8fe58acab9cd03cbdfb8b6a81adf9ad8d7
Author: Robert Munteanu <[email protected]>
AuthorDate: Fri Feb 10 22:43:47 2023 +0100

    oidc-rp: start properly configured keycloak container during tests
---
 org.apache.sling.servlets.oidc-rp/README.md        |  2 +-
 .../servlets/oidc_rp/AuthorizationCodeFlowIT.java  | 23 +++++++++++--------
 .../resources/keycloak-import/sling-users-0.json   | 26 ----------------------
 .../{sling-realm.json => sling.json}               | 23 +++++++++++++++++++
 4 files changed, 38 insertions(+), 36 deletions(-)

diff --git a/org.apache.sling.servlets.oidc-rp/README.md 
b/org.apache.sling.servlets.oidc-rp/README.md
index 9ad8688b..6e37ac21 100644
--- a/org.apache.sling.servlets.oidc-rp/README.md
+++ b/org.apache.sling.servlets.oidc-rp/README.md
@@ -140,7 +140,7 @@ scopes: openid
 #### Exporting the test realm
 
 ```
-$ docker run --rm --volume (pwd)/keycloak-data:/opt/keycloak/data -p 8081:8080 
-e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin 
quay.io/keycloak/keycloak:20.0.3 export --realm sling --dir 
/opt/keycloak/data/export
+$ docker run --rm --volume (pwd)/keycloak-data:/opt/keycloak/data -p 8081:8080 
-e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin 
quay.io/keycloak/keycloak:20.0.3 export --realm sling --users realm_file --file 
/opt/keycloak/data/export/sling.json
 ```
 
 ## Whiteboard graduation TODO 
diff --git 
a/org.apache.sling.servlets.oidc-rp/src/test/java/org/apache/sling/servlets/oidc_rp/AuthorizationCodeFlowIT.java
 
b/org.apache.sling.servlets.oidc-rp/src/test/java/org/apache/sling/servlets/oidc_rp/AuthorizationCodeFlowIT.java
index 4143155d..57f4b83e 100644
--- 
a/org.apache.sling.servlets.oidc-rp/src/test/java/org/apache/sling/servlets/oidc_rp/AuthorizationCodeFlowIT.java
+++ 
b/org.apache.sling.servlets.oidc-rp/src/test/java/org/apache/sling/servlets/oidc_rp/AuthorizationCodeFlowIT.java
@@ -40,6 +40,7 @@ import org.apache.http.message.BasicNameValuePair;
 import org.apache.sling.testing.clients.ClientException;
 import org.apache.sling.testing.clients.SlingClient;
 import org.apache.sling.testing.clients.SlingHttpResponse;
+import org.apache.sling.testing.clients.osgi.OsgiConsoleClient;
 import org.junit.jupiter.api.Test;
 import org.testcontainers.junit.jupiter.Container;
 import org.testcontainers.junit.jupiter.Testcontainers;
@@ -55,32 +56,36 @@ class AuthorizationCodeFlowIT {
     
     @Container
     KeycloakContainer keycloak = new 
KeycloakContainer("quay.io/keycloak/keycloak:20.0.3")
-        .withRealmImportFiles("keycloak-import/sling-realm.json",  
"keycloak-import/sling-users-0.json");
+        .withRealmImportFile("keycloak-import/sling.json");
 
     @Test
     void accessTokenIsPresentOnSuccessfulLogin() throws Exception {
-        
-//        int keycloakPort = 8081;
         int keycloakPort = keycloak.getHttpPort();
 
         // two parts
         // - local app on port 8080
         // - keycloak on port 8081
         
-        // TODO 
-        // 1. automatically start keycloak (test containers?) and import data
-        // 2. lookup external sling app from a env settting ( and start using 
maven infrastructure )
+        // TODO - lookup external sling app from a env settting ( and start 
using maven infrastructure )
 
         SlingClient sling = 
SlingClient.Builder.create(URI.create("http://localhost:8080";), "admin", 
"admin").disableRedirectHandling().build();
+
+        // configure connection to keycloak
+        
sling.adaptTo(OsgiConsoleClient.class).editConfiguration("org.apache.sling.servlets.oidc_rp.impl.OidcConnectionImpl",null,
 
+                Map.of(
+                    "name", "keycloak", 
+                    "baseUrl", "http://localhost:"; + 
keycloakPort+"/realms/sling",
+                    "clientId", "oidc-test",
+                    "clientSecret", "wM2XIbxBTLJAac2rJSuHyKaoP8IWvSwJ",
+                    "scopes", "openid"
+                )
+            );
         
         // clean up any existing tokens
         String userPath = getUserPath(sling, sling.getUser());
         sling.deletePath(userPath + "/oidc-tokens/keycloak", 200);
         sling.doGet(userPath + "/oidc-tokens/keycloak", 404);
         
-        // TODO - install OSGi config pointing to KeyCloak
-        
-        
         // kick off oidc auth
         SlingHttpResponse entryPointResponse = 
sling.doGet("/system/sling/oidc/entry-point", 302);
         Header locationHeader = entryPointResponse.getFirstHeader("location");
diff --git 
a/org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling-users-0.json
 
b/org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling-users-0.json
deleted file mode 100644
index 50fc36a2..00000000
--- 
a/org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling-users-0.json
+++ /dev/null
@@ -1,26 +0,0 @@
-{
-  "realm" : "sling",
-  "users" : [ {
-    "id" : "968d808c-5923-41b9-b96c-ca72b1fe9339",
-    "createdTimestamp" : 1676046477062,
-    "username" : "test",
-    "enabled" : true,
-    "totp" : false,
-    "emailVerified" : false,
-    "firstName" : "",
-    "lastName" : "",
-    "credentials" : [ {
-      "id" : "1e4b9853-4b98-4f7d-aee0-ee1ce151bcf7",
-      "type" : "password",
-      "userLabel" : "My password",
-      "createdDate" : 1676046529270,
-      "secretData" : 
"{\"value\":\"H4t6rcOHTueKwCD27MrQ0hbGiODFgGE9KOOOwT+Zfo5Nco12lgsHdU/F5Ny0uK3WU728ijN5iufHKQnjSKnyjQ==\",\"salt\":\"QBpLiI1/SNdwxs/JfEw/CQ==\",\"additionalParameters\":{}}",
-      "credentialData" : 
"{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\",\"additionalParameters\":{}}"
-    } ],
-    "disableableCredentialTypes" : [ ],
-    "requiredActions" : [ ],
-    "realmRoles" : [ "default-roles-sling" ],
-    "notBefore" : 0,
-    "groups" : [ ]
-  } ]
-}
\ No newline at end of file
diff --git 
a/org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling-realm.json
 
b/org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling.json
similarity index 98%
rename from 
org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling-realm.json
rename to 
org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling.json
index 47b3cbf0..5297f47f 100644
--- 
a/org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling-realm.json
+++ 
b/org.apache.sling.servlets.oidc-rp/src/test/resources/keycloak-import/sling.json
@@ -372,6 +372,29 @@
   "webAuthnPolicyPasswordlessCreateTimeout" : 0,
   "webAuthnPolicyPasswordlessAvoidSameAuthenticatorRegister" : false,
   "webAuthnPolicyPasswordlessAcceptableAaguids" : [ ],
+  "users" : [ {
+    "id" : "968d808c-5923-41b9-b96c-ca72b1fe9339",
+    "createdTimestamp" : 1676046477062,
+    "username" : "test",
+    "enabled" : true,
+    "totp" : false,
+    "emailVerified" : false,
+    "firstName" : "",
+    "lastName" : "",
+    "credentials" : [ {
+      "id" : "1e4b9853-4b98-4f7d-aee0-ee1ce151bcf7",
+      "type" : "password",
+      "userLabel" : "My password",
+      "createdDate" : 1676046529270,
+      "secretData" : 
"{\"value\":\"H4t6rcOHTueKwCD27MrQ0hbGiODFgGE9KOOOwT+Zfo5Nco12lgsHdU/F5Ny0uK3WU728ijN5iufHKQnjSKnyjQ==\",\"salt\":\"QBpLiI1/SNdwxs/JfEw/CQ==\",\"additionalParameters\":{}}",
+      "credentialData" : 
"{\"hashIterations\":27500,\"algorithm\":\"pbkdf2-sha256\",\"additionalParameters\":{}}"
+    } ],
+    "disableableCredentialTypes" : [ ],
+    "requiredActions" : [ ],
+    "realmRoles" : [ "default-roles-sling" ],
+    "notBefore" : 0,
+    "groups" : [ ]
+  } ],
   "scopeMappings" : [ {
     "clientScope" : "offline_access",
     "roles" : [ "offline_access" ]

Reply via email to