Skip to content

Commit 2b11989

Browse files
committed
test: Add workflow with matrix tests
1 parent 8eb9cac commit 2b11989

File tree

6 files changed

+43
-4
lines changed

6 files changed

+43
-4
lines changed

.github/workflows/matrix.yml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Compatibility Matrix
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
compatibility:
8+
runs-on: ubuntu-latest
9+
strategy:
10+
fail-fast: false
11+
matrix:
12+
keycloak_version: [ 21.0.2, 21.1.2, 22.0.5, 23.0.5, latest, nightly ]
13+
extension_version: [ 21.2.1, 21.3.0, 22.0.0, 22.1.0, 23.0.0 ]
14+
steps:
15+
- uses: actions/checkout@v4
16+
with:
17+
ref: v${{ matrix.extension_version }}
18+
- name: Set up JDK 17
19+
uses: actions/setup-java@v4
20+
with:
21+
distribution: 'temurin'
22+
java-version: 17
23+
cache: 'maven'
24+
- name: Clean and compile
25+
run: mvn -B -U clean test-compile --file pom.xml
26+
- name: Download extension
27+
run: curl -L -o target/keycloak-restrict-client-auth.jar https://github.com/sventorben/keycloak-restrict-client-auth/releases/download/v${{ matrix.extension_version }}/keycloak-restrict-client-auth.jar
28+
- name: Compatibility tests
29+
run: mvn -B -U failsafe:integration-test failsafe:verify --file pom.xml -Dkeycloak.version=${{ matrix.keycloak_version }} -DuseJar=true

pom.xml

+2
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
<!-- For compatibility tests -->
5757
<keycloak.version>${version.keycloak}</keycloak.version>
5858
<keycloak.dist>quarkus</keycloak.dist>
59+
<useJar>false</useJar>
5960

6061
<version.mockito>5.10.0</version.mockito>
6162
</properties>
@@ -87,6 +88,7 @@
8788
<org.jboss.logging.provider>log4j2</org.jboss.logging.provider>
8889
<keycloak.version>${keycloak.version}</keycloak.version>
8990
<keycloak.dist>${keycloak.dist}</keycloak.dist>
91+
<useJar>${useJar}</useJar>
9092
</systemPropertyVariables>
9193
</configuration>
9294
</plugin>

src/test/java/de/sventorben/keycloak/authorization/client/ClientPolicyIT.java

-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ class ClientPolicyIT {
3434

3535
@Container
3636
private static final KeycloakContainer KEYCLOAK_CONTAINER = FullImageName.createContainer()
37-
.withProviderClassesFrom("target/classes")
3837
.withExposedPorts(KEYCLOAK_HTTP_PORT)
3938
.withLogConsumer(new Slf4jLogConsumer(LOGGER).withSeparateOutputStreams())
4039
.withRealmImportFile("/test-realm.json")

src/test/java/de/sventorben/keycloak/authorization/client/ConfigIT.java

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ class ConfigIT {
2626

2727
@Container
2828
private static final KeycloakContainer KEYCLOAK_CONTAINER = FullImageName.createContainer()
29-
.withProviderClassesFrom("target/classes")
3029
.withExposedPorts(KEYCLOAK_HTTP_PORT)
3130
.withLogConsumer(new Slf4jLogConsumer(LOGGER).withSeparateOutputStreams())
3231
.withStartupTimeout(Duration.ofSeconds(90))

src/test/java/de/sventorben/keycloak/authorization/client/FullImageName.java

+12-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import org.testcontainers.images.ImagePullPolicy;
55
import org.testcontainers.images.PullPolicy;
66

7+
import java.io.File;
8+
import java.util.List;
9+
710
import static de.sventorben.keycloak.authorization.client.FullImageName.Distribution.quarkus;
811
import static java.lang.module.ModuleDescriptor.Version;
912

@@ -20,6 +23,8 @@ enum Distribution {
2023
private static final String NIGHTLY_VERSION = "nightly";
2124
private static final String KEYCLOAK_VERSION = System.getProperty("keycloak.version", LATEST_VERSION);
2225

26+
private static final boolean USE_JAR = Boolean.parseBoolean(System.getProperty("useJar", "false"));
27+
2328
static String get() {
2429
String imageName = "keycloak";
2530

@@ -61,8 +66,14 @@ static KeycloakContainer createContainer() {
6166
if (isLatestVersion() || isNightlyVersion()) {
6267
pullPolicy = PullPolicy.alwaysPull();
6368
}
64-
return new KeycloakContainer(fullImage)
69+
KeycloakContainer keycloakContainer = new KeycloakContainer(fullImage)
6570
.withImagePullPolicy(pullPolicy);
71+
if (USE_JAR) {
72+
keycloakContainer = keycloakContainer.withProviderLibsFrom(List.of(new File("target/keycloak-restrict-client-auth.jar")));
73+
} else {
74+
keycloakContainer = keycloakContainer.withProviderClassesFrom("target/classes");
75+
}
76+
return keycloakContainer;
6677
}
6778

6879
}

src/test/java/de/sventorben/keycloak/authorization/client/LoginIT.java

-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ class LoginIT {
3333

3434
@Container
3535
private static final KeycloakContainer KEYCLOAK_CONTAINER = FullImageName.createContainer()
36-
.withProviderClassesFrom("target/classes")
3736
.withExposedPorts(KEYCLOAK_HTTP_PORT)
3837
.withLogConsumer(new Slf4jLogConsumer(LOGGER).withSeparateOutputStreams())
3938
.withRealmImportFile("/test-realm.json")

0 commit comments

Comments
 (0)