Skip to content

Commit 37d2f63

Browse files
author
admitrov
committed
fix some tests with Value
1 parent 22b2098 commit 37d2f63

File tree

12 files changed

+78
-82
lines changed

12 files changed

+78
-82
lines changed

embedded-aerospike-enterprise/src/main/java/com/playtika/testcontainers/aerospike/enterprise/SetupEnterpriseAerospikeBootstrapConfiguration.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import lombok.extern.slf4j.Slf4j;
77
import org.springframework.beans.factory.annotation.Autowired;
88
import org.springframework.beans.factory.annotation.Qualifier;
9+
import org.springframework.beans.factory.annotation.Value;
910
import org.springframework.boot.autoconfigure.AutoConfiguration;
1011
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
1112
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1213
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1314
import org.springframework.context.annotation.PropertySource;
14-
import org.springframework.core.env.Environment;
1515
import org.testcontainers.containers.GenericContainer;
1616

1717
import java.io.IOException;
@@ -34,12 +34,8 @@ public class SetupEnterpriseAerospikeBootstrapConfiguration {
3434
private GenericContainer<?> aerospikeContainer;
3535
private AerospikeProperties aerospikeProperties;
3636
private AerospikeEnterpriseProperties aerospikeEnterpriseProperties;
37-
private Environment environment;
38-
39-
@Autowired
40-
public void setEnvironment(Environment environment) {
41-
this.environment = environment;
42-
}
37+
@Value("embedded.aerospike.dockerImage:")
38+
private String dockerImage;
4339

4440
@Autowired
4541
@Qualifier(BEAN_NAME_AEROSPIKE)
@@ -67,7 +63,6 @@ public void setupEnterpriseAerospike() throws IOException, InterruptedException
6763
private void verifyAerospikeImage() {
6864
log.info("Verify Aerospike Enterprise Image");
6965

70-
String dockerImage = environment.getProperty(AEROSPIKE_DOCKER_IMAGE_PROPERTY);
7166
if (dockerImage == null) {
7267
throw new IllegalStateException("Aerospike enterprise docker image not provided, set up 'embedded.aerospike.dockerImage' property.\n"
7368
+ TEXT_TO_DOCUMENTATION);

embedded-couchbase/src/test/java/com/playtika/testcontainer/couchbase/EmbeddedCouchbaseBootstrapConfigurationTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ public void propertiesAreAvailable() {
4242
assertThat(couchbaseBucket).isNotEmpty();
4343
assertThat(couchbaseUser).isNotEmpty();
4444
assertThat(couchbasePassword).isNotEmpty();
45-
assertThat(System.getProperty("com.couchbase.bootstrapHttpDirectPort")).isNotEmpty();
46-
assertThat(System.getProperty("com.couchbase.bootstrapCarrierDirectPort")).isNotEmpty();
4745
}
4846

4947
@EnableAutoConfiguration

embedded-keycloak/src/main/java/com/playtika/testcontainer/keycloak/EmbeddedKeycloakBootstrapConfiguration.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ public KeycloakContainer keycloak(KeycloakProperties properties, ResourceLoader
6363
KeycloakContainer keycloak = new KeycloakContainer(properties, resourceLoader)
6464
.withNetworkAliases(KEYCLOAK_NETWORK_ALIAS);
6565
network.ifPresent(keycloak::withNetwork);
66-
configureCommonsAndStart(keycloak, properties, log);
67-
return keycloak;
66+
return (KeycloakContainer) configureCommonsAndStart(keycloak, properties, log);
6867
}
6968

7069
@Bean
@@ -73,7 +72,7 @@ public DynamicPropertyRegistrar keycloakDynamicPropertyRegistrar(
7372
KeycloakProperties properties) {
7473
return registry -> {
7574
registry.add("embedded.keycloak.host", keycloak::getHost);
76-
registry.add("embedded.keycloak.http-port", () -> keycloak.getMappedPort(KEYCLOAK_DEFAULT_HTTP_PORT_INTERNAL));
75+
registry.add("embedded.keycloak.http-port", keycloak::getHttpPort);
7776
registry.add("embedded.keycloak.auth-server-url", keycloak::getAuthServerUrl);
7877
registry.add("embedded.keycloak.port", () -> keycloak.getMappedPort(KEYCLOAK_DEFAULT_HTTP_PORT_INTERNAL));
7978
registry.add("embedded.keycloak.networkAlias", () -> KEYCLOAK_NETWORK_ALIAS);

embedded-keycloak/src/test/java/com/playtika/testcontainer/keycloak/spring/EmbeddedKeycloakBootstrapConfigurationTest.java

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package com.playtika.testcontainer.keycloak.spring;
22

3-
import com.playtika.testcontainer.keycloak.KeycloakContainer;
43
import com.playtika.testcontainer.keycloak.util.KeyCloakToken;
54
import com.playtika.testcontainer.keycloak.util.KeycloakClient;
5+
import com.playtika.testcontainer.keycloak.util.KeycloakClientTestConfiguration;
66
import org.junit.jupiter.api.Test;
77
import org.springframework.beans.factory.annotation.Autowired;
8-
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
98
import org.springframework.boot.test.context.SpringBootTest;
109
import org.springframework.boot.test.web.server.LocalServerPort;
11-
import org.springframework.core.env.Environment;
1210
import org.springframework.http.HttpEntity;
1311
import org.springframework.http.HttpHeaders;
1412
import org.springframework.http.ResponseEntity;
@@ -24,17 +22,11 @@
2422
import static org.springframework.http.HttpMethod.GET;
2523

2624
@SpringBootTest(
27-
classes = SpringTestApplication.class,
25+
classes = {SpringTestApplication.class, KeycloakClientTestConfiguration.class},
2826
webEnvironment = RANDOM_PORT)
2927
@ActiveProfiles({"enabled", "realm"})
3028
public class EmbeddedKeycloakBootstrapConfigurationTest {
3129

32-
@Autowired
33-
private Environment environment;
34-
@Autowired
35-
private ConfigurableListableBeanFactory beanFactory;
36-
@Autowired
37-
private KeycloakContainer keycloakContainer;
3830
@Autowired
3931
private KeycloakClient keycloakClient;
4032

@@ -46,19 +38,6 @@ public void shouldRunThroughSpringSecurity() {
4638
assertThat(callSecuredPingEndpoint()).isEqualTo("pong");
4739
}
4840

49-
@Test
50-
public void propertiesAreAvailable() {
51-
assertThat(environment.getProperty("embedded.keycloak.auth-server-url"))
52-
.isEqualTo(format("http://%s:%d/", keycloakContainer.getHost(),
53-
keycloakContainer.getHttpPort()));
54-
55-
assertThat(environment.getProperty("embedded.keycloak.host"))
56-
.isEqualTo(keycloakContainer.getIp());
57-
58-
assertThat(environment.getProperty("embedded.keycloak.http-port", Integer.class))
59-
.isEqualTo(keycloakContainer.getHttpPort());
60-
}
61-
6241
@Test
6342
public void shouldGetMasterRealmInfoFromKeycloak() {
6443
String realmInfo = keycloakClient.getRealmInfo(DEFAULT_REALM).getRealm();

embedded-keycloak/src/test/java/com/playtika/testcontainer/keycloak/spring/SpringTestApplication.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import org.springframework.beans.factory.annotation.Value;
66
import org.springframework.boot.autoconfigure.SpringBootApplication;
77
import org.springframework.context.annotation.Bean;
8-
import org.springframework.context.annotation.ComponentScan;
98
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
109
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
1110
import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
@@ -18,7 +17,6 @@
1817
@EnableWebMvc
1918
@EnableMethodSecurity(jsr250Enabled = true)
2019
@SpringBootApplication
21-
@ComponentScan(basePackages = {"com.playtika.testcontainer.keycloak"})
2220
public class SpringTestApplication {
2321

2422
@Value("${testing.keycloak.client}")
Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.playtika.testcontainer.keycloak.util;
22

3-
import org.springframework.core.env.Environment;
43
import org.springframework.http.HttpEntity;
54
import org.springframework.http.HttpHeaders;
65
import org.springframework.util.LinkedMultiValueMap;
@@ -13,48 +12,50 @@
1312

1413
public final class KeycloakClient {
1514

16-
private final Environment environment;
15+
private final String baseUrl;
16+
private final String realm;
17+
private final String clientId;
18+
private final String clientSecret;
19+
private final String username;
20+
private final String password;
1721
private final RestTemplate restTemplate;
1822

19-
private KeycloakClient(Environment environment) {
20-
this.environment = requireNonNull(environment);
23+
private KeycloakClient(String baseUrl, String realm, String clientId, String clientSecret, String username, String password) {
24+
this.baseUrl = requireNonNull(baseUrl);
25+
this.realm = requireNonNull(realm);
26+
this.clientId = requireNonNull(clientId);
27+
this.clientSecret = requireNonNull(clientSecret);
28+
this.username = requireNonNull(username);
29+
this.password = requireNonNull(password);
2130
this.restTemplate = new RestTemplate();
2231
}
2332

24-
public static KeycloakClient newKeycloakClient(Environment environment) {
25-
return new KeycloakClient(environment);
33+
public static KeycloakClient of(String baseUrl, String realm, String clientId, String clientSecret, String username, String password) {
34+
return new KeycloakClient(baseUrl, realm, clientId, clientSecret, username, password);
2635
}
2736

2837
public KeyCloakToken keycloakToken() {
2938
HttpHeaders headers = new HttpHeaders();
3039
headers.setContentType(APPLICATION_FORM_URLENCODED);
3140

3241
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
33-
map.add("client_id", fromEnv("testing.keycloak.client"));
34-
map.add("client_secret", fromEnv("testing.keycloak.client-secret"));
42+
map.add("client_id", clientId);
43+
map.add("client_secret", clientSecret);
3544
map.add("grant_type", "password");
36-
map.add("username", fromEnv("testing.keycloak.username"));
37-
map.add("password", fromEnv("testing.keycloak.password"));
45+
map.add("username", username);
46+
map.add("password", password);
3847

39-
String url = format("%s/realms/%s/protocol/openid-connect/token", baseUrl(), realm());
48+
String url = format("%s/realms/%s/protocol/openid-connect/token", baseUrl, realm);
4049
return restTemplate.postForObject(url, new HttpEntity<>(map, headers), KeyCloakToken.class);
4150
}
4251

43-
public String baseUrl() {
44-
return fromEnv("embedded.keycloak.auth-server-url");
45-
}
46-
4752
public String realm() {
48-
return fromEnv("testing.keycloak.realm");
53+
return realm;
4954
}
5055

5156
public RealmInfo getRealmInfo(String realmName) {
5257
return restTemplate.getForObject(
53-
format("%s/realms/%s", baseUrl(), realmName),
58+
format("%s/realms/%s", baseUrl, realmName),
5459
RealmInfo.class);
5560
}
56-
57-
private String fromEnv(String key) {
58-
return environment.getProperty(requireNonNull(key));
59-
}
6061
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.playtika.testcontainer.keycloak.util;
2+
3+
import org.springframework.beans.factory.annotation.Value;
4+
import org.springframework.context.annotation.Bean;
5+
import org.springframework.context.annotation.Configuration;
6+
7+
@Configuration
8+
public class KeycloakClientTestConfiguration {
9+
@Value("${embedded.keycloak.auth-server-url}")
10+
private String baseUrl;
11+
@Value("${testing.keycloak.realm}")
12+
private String realm;
13+
@Value("${testing.keycloak.client}")
14+
private String clientId;
15+
@Value("${testing.keycloak.client-secret}")
16+
private String clientSecret;
17+
@Value("${testing.keycloak.username}")
18+
private String username;
19+
@Value("${testing.keycloak.password}")
20+
private String password;
21+
22+
@Bean
23+
public KeycloakClient keycloakClient() {
24+
return KeycloakClient.of(baseUrl, realm, clientId, clientSecret, username, password);
25+
}
26+
}

embedded-keycloak/src/test/java/com/playtika/testcontainer/keycloak/vanilla/EmbeddedKeycloakRealmBootstrapConfigurationTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package com.playtika.testcontainer.keycloak.vanilla;
22

33
import com.playtika.testcontainer.keycloak.util.KeycloakClient;
4+
import com.playtika.testcontainer.keycloak.util.KeycloakClientTestConfiguration;
45
import com.playtika.testcontainer.keycloak.util.RealmInfo;
56
import org.junit.jupiter.api.Test;
67
import org.springframework.beans.factory.annotation.Autowired;
78
import org.springframework.boot.test.context.SpringBootTest;
8-
import org.springframework.core.env.Environment;
99
import org.springframework.test.context.ActiveProfiles;
1010

1111
import static org.assertj.core.api.Assertions.assertThat;
1212

13-
@SpringBootTest(classes = VanillaTestApplication.class)
13+
@SpringBootTest(classes = {VanillaTestApplication.class, KeycloakClientTestConfiguration.class})
1414
@ActiveProfiles({"active", "realm"})
1515
public class EmbeddedKeycloakRealmBootstrapConfigurationTest {
1616

17-
@Autowired
18-
private Environment environment;
1917
@Autowired
2018
private KeycloakClient keycloakClient;
2119

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package com.playtika.testcontainer.keycloak.vanilla;
22

33
import org.springframework.boot.autoconfigure.SpringBootApplication;
4-
import org.springframework.context.annotation.ComponentScan;
54

65
@SpringBootApplication
7-
@ComponentScan(basePackages = {"com.playtika.testcontainer.keycloak"})
86
public class VanillaTestApplication {
97

108
}

embedded-spicedb/src/main/java/com/playtika/testcontainer/spicedb/EmbeddedSpiceDBBootstrapConfiguration.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
import org.testcontainers.containers.GenericContainer;
1717
import org.testcontainers.containers.Network;
1818
import org.testcontainers.containers.ToxiproxyContainer;
19+
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
20+
import org.testcontainers.containers.wait.strategy.WaitAllStrategy;
21+
import org.testcontainers.containers.wait.strategy.WaitStrategy;
1922

2023
import java.util.Optional;
2124

@@ -43,14 +46,24 @@ public ToxiproxyContainer.ContainerProxy spicedbContainerProxy(ToxiproxyContaine
4346
@Bean(name = BEAN_NAME_EMBEDDED_SPICEDB, destroyMethod = "stop")
4447
public GenericContainer<?> spicedb(SpiceDBProperties properties,
4548
Optional<Network> network) {
46-
GenericContainer<?> spicedb = new GenericContainer<>(ContainerUtils.getDockerImageName(properties))
47-
.withExposedPorts(properties.getPort())
48-
.withNetworkAliases("spicedb.testcontainer.docker");
49-
network.ifPresent(spicedb::withNetwork);
50-
configureCommonsAndStart(spicedb, properties, log);
51-
return spicedb;
49+
WaitStrategy waitStrategy = new WaitAllStrategy()
50+
.withStrategy(new HostPortWaitStrategy())
51+
.withStartupTimeout(properties.getTimeoutDuration());
52+
53+
GenericContainer<?> spicedbContainer = new GenericContainer<>(ContainerUtils.getDockerImageName(properties))
54+
.withExposedPorts(properties.getPort())
55+
.withCommand("serve", "--grpc-preshared-key", properties.getPresharedKey(), "--skip-release-check")
56+
.waitingFor(waitStrategy)
57+
.withNetworkAliases(NATS_NETWORK_ALIAS);
58+
59+
network.ifPresent(spicedbContainer::withNetwork);
60+
61+
spicedbContainer = configureCommonsAndStart(spicedbContainer, properties, log);
62+
63+
return spicedbContainer;
5264
}
5365

66+
5467
@Bean
5568
public DynamicPropertyRegistrar spicedbDynamicPropertyRegistrar(
5669
@Qualifier(BEAN_NAME_EMBEDDED_SPICEDB) GenericContainer<?> spicedb,
@@ -59,6 +72,7 @@ public DynamicPropertyRegistrar spicedbDynamicPropertyRegistrar(
5972
registry.add("embedded.spicedb.host", spicedb::getHost);
6073
registry.add("embedded.spicedb.port", () -> spicedb.getMappedPort(properties.getPort()));
6174
registry.add("embedded.spicedb.networkAlias", () -> "spicedb.testcontainer.docker");
75+
registry.add("embedded.spicedb.token", properties::getPresharedKey);
6276
registry.add("embedded.spicedb.internalPort", properties::getPort);
6377
};
6478
}

0 commit comments

Comments
 (0)