oidc-rp: start properly configured keycloak container during tests
diff --git a/org.apache.sling.servlets.oidc-rp/README.md b/org.apache.sling.servlets.oidc-rp/README.md
index 9ad8688..6e37ac2 100644
--- a/org.apache.sling.servlets.oidc-rp/README.md
+++ b/org.apache.sling.servlets.oidc-rp/README.md
@@ -140,7 +140,7 @@
 #### 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 4143155..57f4b83 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.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 @@
     
     @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 50fc36a..0000000
--- 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 47b3cbf..5297f47 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" ]