Skip to content

Commit 1050562

Browse files
authored
Merge pull request #50444 from sberyozkin/use-devservice-in-smallrye-jwt-oidc-webapp
Update smallrye-jwt-oidc-web-app test to use Keycloak Dev Service
2 parents 95f89bc + 1b2d58b commit 1050562

File tree

4 files changed

+23
-79
lines changed

4 files changed

+23
-79
lines changed

integration-tests/smallrye-jwt-oidc-webapp/pom.xml

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@
3333
<artifactId>angus-activation</artifactId>
3434
</dependency>
3535
<!-- test dependencies -->
36+
<dependency>
37+
<groupId>io.quarkus</groupId>
38+
<artifactId>quarkus-test-keycloak-server</artifactId>
39+
<scope>test</scope>
40+
</dependency>
3641
<dependency>
3742
<groupId>org.keycloak</groupId>
3843
<artifactId>keycloak-client-common-synced</artifactId>
@@ -224,34 +229,6 @@
224229
<artifactId>docker-maven-plugin</artifactId>
225230
<configuration>
226231
<images>
227-
<image>
228-
<name>${keycloak.docker.image}</name>
229-
<alias>quarkus-test-keycloak</alias>
230-
<run>
231-
<ports>
232-
<port>8180:8080</port>
233-
</ports>
234-
<env>
235-
<KC_BOOTSTRAP_ADMIN_USERNAME>admin</KC_BOOTSTRAP_ADMIN_USERNAME>
236-
<KC_BOOTSTRAP_ADMIN_PASSWORD>admin</KC_BOOTSTRAP_ADMIN_PASSWORD>
237-
</env>
238-
<cmd>
239-
<arg>start-dev</arg>
240-
</cmd>
241-
<log>
242-
<prefix>Keycloak:</prefix>
243-
<date>default</date>
244-
<color>cyan</color>
245-
</log>
246-
<wait>
247-
<!-- good docs found at: https://dmp.fabric8.io/#build-healthcheck -->
248-
<http>
249-
<url>http://localhost:8180</url>
250-
</http>
251-
<time>100000</time>
252-
</wait>
253-
</run>
254-
</image>
255232
<image>
256233
<name>${postgres.image}</name>
257234
<alias>postgresql-db</alias>

integration-tests/smallrye-jwt-oidc-webapp/src/main/resources/application.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ smallrye.jwt.path.groups=realm_access/roles
55
mp.jwt.token.header=Cookie
66
smallrye.jwt.always-check-authorization=true
77

8-
quarkus.oidc.auth-server-url=${keycloak.url}/realms/quarkus
98
quarkus.oidc.application-type=web-app
10-
quarkus.oidc.client-id=quarkus-app
11-
quarkus.oidc.credentials.secret=secret
9+
10+
quarkus.keycloak.devservices.create-realm=false
11+
quarkus.keycloak.devservices.port=8180
1212

1313
quarkus.datasource.db-kind=postgresql
1414
quarkus.datasource.username=oidc_db_token_state_manager_test_user

integration-tests/smallrye-jwt-oidc-webapp/src/test/java/io/quarkus/it/keycloak/KeycloakRealmResourceManager.java

Lines changed: 10 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
package io.quarkus.it.keycloak;
22

3-
import java.io.IOException;
43
import java.util.ArrayList;
54
import java.util.Arrays;
65
import java.util.Collections;
76
import java.util.List;
87
import java.util.Map;
98

10-
import org.keycloak.representations.AccessTokenResponse;
119
import org.keycloak.representations.idm.ClientRepresentation;
1210
import org.keycloak.representations.idm.CredentialRepresentation;
1311
import org.keycloak.representations.idm.RealmRepresentation;
1412
import org.keycloak.representations.idm.RoleRepresentation;
1513
import org.keycloak.representations.idm.RolesRepresentation;
1614
import org.keycloak.representations.idm.UserRepresentation;
17-
import org.keycloak.util.JsonSerialization;
1815

16+
import io.quarkus.test.common.DevServicesContext;
1917
import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
20-
import io.restassured.RestAssured;
18+
import io.quarkus.test.keycloak.client.KeycloakTestClient;
2119

22-
public class KeycloakRealmResourceManager implements QuarkusTestResourceLifecycleManager {
20+
public class KeycloakRealmResourceManager implements QuarkusTestResourceLifecycleManager, DevServicesContext.ContextAware {
2321

24-
private static final String KEYCLOAK_SERVER_URL = System.getProperty("keycloak.url", "http://localhost:8180");
2522
private static final String KEYCLOAK_REALM = "quarkus";
2623

24+
final KeycloakTestClient client = new KeycloakTestClient();
25+
2726
@Override
2827
public Map<String, String> start() {
2928

@@ -38,33 +37,10 @@ public Map<String, String> start() {
3837
realm.getUsers().add(createUser("bob", "user"));
3938
realm.getUsers().add(createUser("john", "tester"));
4039

41-
try {
42-
RestAssured
43-
.given()
44-
.auth().oauth2(getAdminAccessToken())
45-
.contentType("application/json")
46-
.body(JsonSerialization.writeValueAsBytes(realm))
47-
.when()
48-
.post(KEYCLOAK_SERVER_URL + "/admin/realms").then()
49-
.statusCode(201);
50-
} catch (IOException e) {
51-
throw new RuntimeException(e);
52-
}
40+
client.createRealm(realm);
5341
return Collections.emptyMap();
5442
}
5543

56-
private static String getAdminAccessToken() {
57-
return RestAssured
58-
.given()
59-
.param("grant_type", "password")
60-
.param("username", "admin")
61-
.param("password", "admin")
62-
.param("client_id", "admin-cli")
63-
.when()
64-
.post(KEYCLOAK_SERVER_URL + "/realms/master/protocol/openid-connect/token")
65-
.as(AccessTokenResponse.class).getToken();
66-
}
67-
6844
private static RealmRepresentation createRealm(String name) {
6945
RealmRepresentation realm = new RealmRepresentation();
7046

@@ -126,23 +102,11 @@ private static UserRepresentation createUser(String username, String... realmRol
126102
@Override
127103
public void stop() {
128104

129-
RestAssured
130-
.given()
131-
.auth().oauth2(getAdminAccessToken())
132-
.when()
133-
.delete(KEYCLOAK_SERVER_URL + "/admin/realms/" + KEYCLOAK_REALM).then().statusCode(204);
105+
client.deleteRealm(KEYCLOAK_REALM);
134106
}
135107

136-
public static String getAccessToken(String userName) {
137-
return RestAssured
138-
.given()
139-
.param("grant_type", "password")
140-
.param("username", userName)
141-
.param("password", userName)
142-
.param("client_id", "quarkus-app")
143-
.param("client_secret", "secret")
144-
.when()
145-
.post(KEYCLOAK_SERVER_URL + "/realms/" + KEYCLOAK_REALM + "/protocol/openid-connect/token")
146-
.as(AccessTokenResponse.class).getToken();
108+
@Override
109+
public void setIntegrationTestContext(DevServicesContext context) {
110+
client.setIntegrationTestContext(context);
147111
}
148112
}

integration-tests/smallrye-jwt-oidc-webapp/src/test/java/io/quarkus/it/keycloak/SmallRyeJwtOidcWebAppTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,18 @@
1212

1313
import io.quarkus.test.common.QuarkusTestResource;
1414
import io.quarkus.test.junit.QuarkusTest;
15+
import io.quarkus.test.keycloak.client.KeycloakTestClient;
1516
import io.restassured.RestAssured;
1617

1718
@QuarkusTest
1819
@QuarkusTestResource(KeycloakRealmResourceManager.class)
1920
public class SmallRyeJwtOidcWebAppTest {
2021

22+
final KeycloakTestClient client = new KeycloakTestClient();
23+
2124
@Test
2225
public void testGetUserNameWithBearerToken() {
23-
RestAssured.given().auth().oauth2(KeycloakRealmResourceManager.getAccessToken("alice"))
26+
RestAssured.given().auth().oauth2(client.getAccessToken("alice"))
2427
.when().get("/protected")
2528
.then()
2629
.statusCode(200)
@@ -37,7 +40,7 @@ public void testGetUserNameWithWrongBearerToken() {
3740

3841
@Test
3942
public void testGetUserNameWithCookieToken() {
40-
RestAssured.given().header("Cookie", "Bearer=" + KeycloakRealmResourceManager.getAccessToken("alice"))
43+
RestAssured.given().header("Cookie", "Bearer=" + client.getAccessToken("alice"))
4144
.when().get("/protected")
4245
.then()
4346
.statusCode(200)

0 commit comments

Comments
 (0)