Skip to content

Commit f68e56c

Browse files
authored
Merge pull request #47 from entur/feature/ETU-62315
ETU-62315: Add support for parameter annotation in JUnit test classes.
2 parents 950848c + 603af4d commit f68e56c

File tree

5 files changed

+109
-0
lines changed

5 files changed

+109
-0
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# [Release notes](https://github.com/entur/oidc-auth-client)
22

3+
## oidc-auth-resource-server v1.1.4
4+
* Add support for parameter annotation in JUnit test classes.
5+
36
## oidc-auth-resource-server v1.1.3
47
* Moved port reservation from beforeAll into aconstuctor of TenantJsonWebToken.
58

oidc-rs-junit-tenant/src/main/java/org/entur/auth/junit/tenant/TenantJsonWebToken.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,17 +139,25 @@ public Object resolveParameter(
139139
throws ParameterResolutionException {
140140

141141
if (parameterContext.getParameter().getType() == String.class) {
142+
setupTenantAnnotation(); // Added her to support parameter annotation in JUnit test class
143+
// constructor
142144
for (var entry : TENANT_LIST) {
143145
Optional<? extends Annotation> annotation = parameterContext.findAnnotation(entry);
144146
if (annotation.isPresent()) {
145147
return tokenFactory.createToken(annotation.get());
146148
}
147149
}
148150
} else if (parameterContext.getParameter().getType() == TenantAnnotationTokenFactory.class) {
151+
setupTenantAnnotation(); // Added her to support parameter annotation in JUnit test class
152+
// constructor
149153
return tokenFactory;
150154
} else if (parameterContext.getParameter().getType() == WireMockAuthenticationServer.class) {
155+
setupTenantAnnotation(); // Added her to support parameter annotation in JUnit test class
156+
// constructor
151157
return tokenFactory.getServer();
152158
} else if (parameterContext.getParameter().getType() == WireMock.class) {
159+
setupTenantAnnotation(); // Added her to support parameter annotation in JUnit test class
160+
// constructor
153161
return tokenFactory.getServer().getMockServer();
154162
}
155163

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.entur.auth.spring.test.other;
2+
3+
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
4+
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
5+
6+
import org.entur.auth.junit.tenant.InternalTenant;
7+
import org.entur.auth.junit.tenant.TenantJsonWebToken;
8+
import org.junit.jupiter.api.Test;
9+
import org.junit.jupiter.api.TestInstance;
10+
import org.junit.jupiter.api.extension.ExtendWith;
11+
import org.springframework.beans.factory.annotation.Autowired;
12+
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
13+
import org.springframework.boot.test.context.SpringBootTest;
14+
import org.springframework.http.HttpHeaders;
15+
import org.springframework.http.MediaType;
16+
import org.springframework.test.context.junit.jupiter.SpringExtension;
17+
import org.springframework.test.web.servlet.MockMvc;
18+
19+
@ExtendWith({SpringExtension.class, TenantJsonWebToken.class})
20+
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
21+
@AutoConfigureMockMvc
22+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
23+
public class ParameterAnnotationInConstructorTest {
24+
@Autowired private MockMvc mockMvc;
25+
private final String authorization;
26+
27+
ParameterAnnotationInConstructorTest(
28+
@InternalTenant(clientId = "clientId") String authorization) {
29+
this.authorization = authorization;
30+
}
31+
32+
@Test
33+
void testInternal() throws Exception {
34+
var requestHeaders = new HttpHeaders();
35+
requestHeaders.add("Accept", MediaType.APPLICATION_JSON_VALUE);
36+
requestHeaders.add("Authorization", authorization);
37+
38+
mockMvc.perform(get("/internal").headers(requestHeaders)).andExpect(status().isOk());
39+
}
40+
}

oidc-rs-spring-boot-webflux-test/src/test/java/org/entur/auth/spring/test/other/LifecycleClassTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.entur.auth.junit.tenant.InternalTenant;
44
import org.entur.auth.junit.tenant.TenantJsonWebToken;
5+
import org.junit.jupiter.api.BeforeAll;
56
import org.junit.jupiter.api.Test;
67
import org.junit.jupiter.api.TestInstance;
78
import org.junit.jupiter.api.extension.ExtendWith;
@@ -26,6 +27,21 @@ static void registerProps(DynamicPropertyRegistry registry) {
2627
TenantJsonWebToken.setupTokenFactory();
2728
}
2829

30+
@BeforeAll
31+
void statup(@InternalTenant(clientId = "clientId") String authorization) {
32+
webTestClient
33+
.get()
34+
.uri("/internal")
35+
.headers(
36+
httpHeaders -> {
37+
httpHeaders.add("Accept", MediaType.APPLICATION_JSON_VALUE);
38+
httpHeaders.add("Authorization", authorization);
39+
})
40+
.exchange()
41+
.expectStatus()
42+
.isOk();
43+
}
44+
2945
@Test
3046
void testInternal(@InternalTenant(clientId = "clientId") String authorization) {
3147
webTestClient
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package org.entur.auth.spring.test.other;
2+
3+
import org.entur.auth.junit.tenant.InternalTenant;
4+
import org.entur.auth.junit.tenant.TenantJsonWebToken;
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.TestInstance;
7+
import org.junit.jupiter.api.extension.ExtendWith;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
10+
import org.springframework.boot.test.context.SpringBootTest;
11+
import org.springframework.http.MediaType;
12+
import org.springframework.test.context.junit.jupiter.SpringExtension;
13+
import org.springframework.test.web.reactive.server.WebTestClient;
14+
15+
@ExtendWith({SpringExtension.class, TenantJsonWebToken.class})
16+
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
17+
@AutoConfigureMockMvc
18+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
19+
public class ParameterAnnotationInConstructorTest {
20+
@Autowired private WebTestClient webTestClient;
21+
private final String authorization;
22+
23+
ParameterAnnotationInConstructorTest(
24+
@InternalTenant(clientId = "clientId") String authorization) {
25+
this.authorization = authorization;
26+
}
27+
28+
@Test
29+
void testInternal() {
30+
webTestClient
31+
.get()
32+
.uri("/internal")
33+
.headers(
34+
httpHeaders -> {
35+
httpHeaders.add("Accept", MediaType.APPLICATION_JSON_VALUE);
36+
httpHeaders.add("Authorization", authorization);
37+
})
38+
.exchange()
39+
.expectStatus()
40+
.isOk();
41+
}
42+
}

0 commit comments

Comments
 (0)