Skip to content

Commit a2d3bbe

Browse files
authored
Bumped Keycloak version to 13.0.1 (#3)
* simplified tests * simplified tests * Cucumber tests! * tests polish * bumped Keycloak version to 13.0.1 * renamed job
1 parent a7dae7e commit a2d3bbe

13 files changed

+157
-191
lines changed

.github/workflows/automation-tests.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: CI with 🐋 & Selenide
1+
name: automation tests
22

33
on:
44
push:
@@ -24,5 +24,5 @@ jobs:
2424
- name: Build test docker container
2525
run: docker-compose build
2626

27-
- name: Run Selenide tests
28-
run: mvn -B -ntp test -P automation-tests -D headless=true
27+
- name: Run automation tests
28+
run: mvn -B -ntp test -P automation-tests -D selenide.headless=true

.github/workflows/release-github-tag.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ jobs:
3838
mvn \
3939
--no-transfer-progress \
4040
--batch-mode \
41-
-Dgpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \
41+
-D gpg.passphrase=${{ secrets.OSSRH_GPG_SECRET_KEY_PASSWORD }} \
4242
-P ossrh \
4343
clean deploy
4444
env:
@@ -56,7 +56,6 @@ jobs:
5656

5757
- name: Build docker init container
5858
run: |
59-
echo "Building docker image = kilmajster/keycloak-username-password-attribute-authenticator:$TAG" && \
6059
docker build \
6160
--build-arg VERSION="$TAG" \
6261
-f src/main/docker/initContainer.Dockerfile \

pom.xml

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,16 @@
6262
<maven.compiler.source>11</maven.compiler.source>
6363
<maven.compiler.target>11</maven.compiler.target>
6464

65-
<keycloak.version>13.0.0</keycloak.version>
65+
<keycloak.version>13.0.1</keycloak.version>
6666

6767
<!-- test dependencies versions -->
6868
<assertj.version>3.19.0</assertj.version>
69+
<cucumber.version>6.10.4</cucumber.version>
6970
<junit.version>4.13.2</junit.version>
71+
<selenium-chrome-driver.version>3.141.59</selenium-chrome-driver.version>
72+
<selenide.version>5.21.0</selenide.version>
7073
<testcontainers.version>1.15.3</testcontainers.version>
7174
<testcontainers-keycloak.version>1.7.0</testcontainers-keycloak.version>
72-
<selenide.version>5.21.0</selenide.version>
73-
<selenium-chrome-driver.version>3.141.59</selenium-chrome-driver.version>
7475

7576
<!-- plugins versions -->
7677
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
@@ -96,23 +97,24 @@
9697
<dependencies>
9798
<dependency>
9899
<groupId>org.keycloak</groupId>
99-
<artifactId>keycloak-server-spi</artifactId>
100+
<artifactId>keycloak-services</artifactId>
100101
<version>${keycloak.version}</version>
101102
<scope>provided</scope>
102103
</dependency>
103104
<dependency>
104105
<groupId>org.keycloak</groupId>
105-
<artifactId>keycloak-server-spi-private</artifactId>
106+
<artifactId>keycloak-server-spi</artifactId>
106107
<version>${keycloak.version}</version>
107108
<scope>provided</scope>
108109
</dependency>
109110
<dependency>
110111
<groupId>org.keycloak</groupId>
111-
<artifactId>keycloak-services</artifactId>
112+
<artifactId>keycloak-server-spi-private</artifactId>
112113
<version>${keycloak.version}</version>
113114
<scope>provided</scope>
114115
</dependency>
115116

117+
116118
<!-- test dependencies -->
117119
<dependency>
118120
<groupId>junit</groupId>
@@ -154,6 +156,19 @@
154156
<groupId>org.seleniumhq.selenium</groupId>
155157
<artifactId>selenium-chrome-driver</artifactId>
156158
<version>${selenium-chrome-driver.version}</version>
159+
<scope>test</scope>
160+
</dependency>
161+
<dependency>
162+
<groupId>io.cucumber</groupId>
163+
<artifactId>cucumber-java</artifactId>
164+
<version>${cucumber.version}</version>
165+
<scope>test</scope>
166+
</dependency>
167+
<dependency>
168+
<groupId>io.cucumber</groupId>
169+
<artifactId>cucumber-junit</artifactId>
170+
<version>${cucumber.version}</version>
171+
<scope>test</scope>
157172
</dependency>
158173
</dependencies>
159174

@@ -184,7 +199,7 @@
184199
<artifactId>maven-surefire-plugin</artifactId>
185200
<version>${maven-surefire-plugin.version}</version>
186201
<configuration>
187-
<includes>**/*AT</includes>
202+
<includes>**/CucumberConfig.java</includes>
188203
</configuration>
189204
</plugin>
190205
</plugins>
@@ -237,7 +252,6 @@
237252
<artifactId>maven-gpg-plugin</artifactId>
238253
<version>${maven-gpg-plugin.version}</version>
239254
<configuration>
240-
<!-- Prevent gpg from using pinentry programs -->
241255
<gpgArguments>
242256
<arg>--pinentry-mode</arg>
243257
<arg>loopback</arg>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.github.kilmajster.keycloak;
2+
3+
import io.cucumber.junit.Cucumber;
4+
import io.cucumber.junit.CucumberOptions;
5+
import org.junit.runner.RunWith;
6+
7+
@RunWith(Cucumber.class)
8+
@CucumberOptions(features = "src/test/resources/cucumber")
9+
public class CucumberConfig {
10+
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package io.github.kilmajster.keycloak;
2+
3+
import com.codeborne.selenide.SelenideElement;
4+
import dasniko.testcontainers.keycloak.KeycloakContainer;
5+
import io.cucumber.java.en.And;
6+
import io.cucumber.java.en.Given;
7+
import io.cucumber.java.en.Then;
8+
import io.cucumber.java.en.When;
9+
import org.junit.Before;
10+
import org.openqa.selenium.By;
11+
import org.slf4j.Logger;
12+
import org.slf4j.LoggerFactory;
13+
import org.testcontainers.containers.output.Slf4jLogConsumer;
14+
15+
import static com.codeborne.selenide.Condition.text;
16+
import static com.codeborne.selenide.Selenide.$;
17+
import static com.codeborne.selenide.Selenide.open;
18+
import static io.github.kilmajster.keycloak.TestConstants.*;
19+
import static org.assertj.core.api.Assertions.assertThat;
20+
21+
public final class KeycloakSteps {
22+
23+
private static final Logger log = LoggerFactory.getLogger(KeycloakSteps.class);
24+
25+
private final KeycloakContainer keycloak = new KeycloakContainer(KEYCLOAK_DEV_DOCKER_IMAGE)
26+
.withRealmImportFile("dev-realm.json")
27+
.withLogConsumer(new Slf4jLogConsumer(log));
28+
29+
@Given("keycloak is running with default setup")
30+
public void keycloak_is_running_with_default_setup() {
31+
if (!keycloak.isRunning()) {
32+
log.info("Starting keycloak container...");
33+
keycloak.start();
34+
}
35+
}
36+
37+
@Given("keycloak is running with LOGIN_FORM_ATTRIBUTE_LABEL = {string}")
38+
public void keycloak_is_running_with_login_form_attribute_label_env(final String envLoginFormAttributeLabel) {
39+
keycloak.addEnv("LOGIN_FORM_ATTRIBUTE_LABEL", envLoginFormAttributeLabel);
40+
if (!keycloak.isRunning()) {
41+
log.info("Starting keycloak container with LOGIN_FORM_ATTRIBUTE_LABEL = " + envLoginFormAttributeLabel);
42+
keycloak.start();
43+
}
44+
}
45+
46+
@When("user goes to the account console page")
47+
public void go_to_keycloak_account_page() {
48+
final String keycloakUrl = TestConstants.KEYCLOAK_LOCAL_URL_PREFIX + keycloak.getFirstMappedPort();
49+
open(keycloakUrl + "/auth/realms/dev-realm/account");
50+
}
51+
52+
@Then("user should be not logged in")
53+
public void user_should_be_not_logged_in() {
54+
final String loggedInUser = $(By.id("landingLoggedInUser")).val();
55+
assertThat(loggedInUser).isNullOrEmpty();
56+
}
57+
58+
@When("user clicks a sign in button")
59+
public static void click_sign_in_button() {
60+
log.info("click_sign_in_button()");
61+
62+
$(By.id("landingSignInButton")).click();
63+
}
64+
65+
@Then("login form with attribute input labeled as {string} should be shown")
66+
public static void verify_login_form_is_displayed_with_user_attribute_label(final String label) {
67+
log.info("verify_login_form_is_displayed_with_user_attribute_label( label = " + label + " )");
68+
69+
assertThat($(By.id("kc-form-login")).isDisplayed()).isTrue();
70+
userAttributeFormLabel().shouldHave(text(label));
71+
}
72+
73+
@When("user log into account console with a valid credentials and user attribute equal {string}")
74+
public static void log_into_account_console(final String attribute) {
75+
log.info("log_into_account_console()");
76+
77+
$(By.id("username")).val(TEST_USERNAME);
78+
$(By.id("password")).val(TEST_PASSWORD);
79+
$(By.id("login_form_user_attribute")).val(attribute);
80+
$(By.id("kc-login")).click();
81+
}
82+
83+
@Then("user should be logged into account console")
84+
public static void verify_that_user_is_logged_in() {
85+
log.info("verify_that_user_is_logged_in()");
86+
87+
$(By.id("landingLoggedInUser")).shouldHave(text("test"));
88+
}
89+
90+
private static SelenideElement userAttributeFormLabel() {
91+
return $(By.xpath("//input[@id='login_form_user_attribute']/preceding-sibling::label"));
92+
}
93+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package io.github.kilmajster.keycloak;
2+
3+
public interface TestConstants {
4+
String KEYCLOAK_DEV_DOCKER_IMAGE = "kilmajster/keycloak-with-authenticator:test";
5+
String KEYCLOAK_LOCAL_URL_PREFIX = "http://localhost:";
6+
7+
String TEST_USERNAME = "test";
8+
String TEST_PASSWORD = "test";
9+
}

src/test/java/io.github.kilmajster.keycloak/UsernamePasswordAttributeFormAT.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/test/java/io.github.kilmajster.keycloak/UsernamePasswordAttributeFormEnvVarConfigAT.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/test/java/io.github.kilmajster.keycloak/base/BaseKeycloakInDockerAT.java

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)