Skip to content

Commit a9a6176

Browse files
committed
Fix runtime unit tests
Signed-off-by: Ricardo Zanini <[email protected]>
1 parent a015081 commit a9a6176

File tree

6 files changed

+79
-41
lines changed

6 files changed

+79
-41
lines changed

client/runtime/src/main/java/io/quarkiverse/openapi/generator/providers/AbstractAuthProvider.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,26 @@
1717
public abstract class AbstractAuthProvider implements AuthProvider {
1818

1919
private static final String BEARER_WITH_SPACE = "Bearer ";
20-
private static final String CANONICAL_AUTH_CONFIG_PROPERTY_NAME = "quarkus." +
21-
RUNTIME_TIME_CONFIG_PREFIX + ".%s.auth.%s.%s";
20+
private static final String CANONICAL_AUTH_CONFIG_PROPERTY_NAME = "quarkus." + RUNTIME_TIME_CONFIG_PREFIX
21+
+ ".%s.auth.%s.%s";
2222

2323
private final String openApiSpecId;
2424
private final String name;
2525
private final List<OperationAuthInfo> applyToOperations = new ArrayList<>();
2626

27-
protected AbstractAuthProvider(String name, String openApiSpecId,
28-
List<OperationAuthInfo> operations) {
27+
protected AbstractAuthProvider(String name, String openApiSpecId, List<OperationAuthInfo> operations) {
2928
this.name = name;
3029
this.openApiSpecId = openApiSpecId;
3130
this.applyToOperations.addAll(operations);
3231
}
3332

33+
protected static String sanitizeBearerToken(String token) {
34+
if (token != null && token.toLowerCase().startsWith(BEARER_WITH_SPACE.toLowerCase())) {
35+
return token.substring(BEARER_WITH_SPACE.length());
36+
}
37+
return token;
38+
}
39+
3440
public String getOpenApiSpecId() {
3541
return openApiSpecId;
3642
}
@@ -41,8 +47,9 @@ public String getName() {
4147
}
4248

4349
public boolean isTokenPropagation() {
44-
return ConfigProvider.getConfig().getOptionalValue(getCanonicalAuthConfigPropertyName(AuthConfig.TOKEN_PROPAGATION),
45-
Boolean.class).orElse(false);
50+
return ConfigProvider.getConfig()
51+
.getOptionalValue(getCanonicalAuthConfigPropertyName(AuthConfig.TOKEN_PROPAGATION), Boolean.class)
52+
.orElse(false);
4653
}
4754

4855
public String getTokenForPropagation(MultivaluedMap<String, Object> httpHeaders) {
@@ -61,13 +68,6 @@ public List<OperationAuthInfo> operationsToFilter() {
6168
return applyToOperations;
6269
}
6370

64-
protected static String sanitizeBearerToken(String token) {
65-
if (token != null && token.toLowerCase().startsWith(BEARER_WITH_SPACE.toLowerCase())) {
66-
return token.substring(BEARER_WITH_SPACE.length());
67-
}
68-
return token;
69-
}
70-
7171
public final String getCanonicalAuthConfigPropertyName(String authPropertyName) {
7272
return String.format(CANONICAL_AUTH_CONFIG_PROPERTY_NAME, getOpenApiSpecId(), getName(), authPropertyName);
7373
}

client/runtime/src/test/java/io/quarkiverse/openapi/generator/providers/AbstractOpenApiSpecProviderTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ abstract class AbstractOpenApiSpecProviderTest<T extends AbstractAuthProvider> {
1616

1717
protected static final String OPEN_API_FILE_SPEC_ID = "open_api_file_spec_id_json";
1818
protected static final String AUTH_SCHEME_NAME = "auth_scheme_name";
19+
protected static final String QUARKUS_CONFIG_KEY = "quarkus.openapi-generator." + OPEN_API_FILE_SPEC_ID + ".auth."
20+
+ AUTH_SCHEME_NAME;
1921

2022
@Mock
2123
protected ClientRequestContext requestContext;
@@ -27,10 +29,10 @@ abstract class AbstractOpenApiSpecProviderTest<T extends AbstractAuthProvider> {
2729
void setUp() {
2830
headers = new MultivaluedHashMap<>();
2931
Mockito.lenient().doReturn(headers).when(requestContext).getHeaders();
30-
provider = createProvider(OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME);
32+
provider = createProvider();
3133
}
3234

33-
protected abstract T createProvider(String openApiSpecId, String authSchemeName);
35+
protected abstract T createProvider();
3436

3537
protected void assertHeader(MultivaluedMap<String, Object> headers, String headerName, String value) {
3638
Assertions.assertThat(headers.getFirst(headerName))

client/runtime/src/test/java/io/quarkiverse/openapi/generator/providers/ApiKeyOpenApiSpecProviderTest.java

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,30 @@
44
import static org.assertj.core.api.Assertions.assertThatThrownBy;
55
import static org.mockito.Mockito.doReturn;
66
import static org.mockito.Mockito.verify;
7+
import static org.mockito.Mockito.when;
78

89
import java.io.IOException;
910
import java.net.URI;
1011
import java.util.List;
1112
import java.util.Objects;
13+
import java.util.Optional;
1214

1315
import jakarta.ws.rs.core.Cookie;
1416
import jakarta.ws.rs.core.HttpHeaders;
1517
import jakarta.ws.rs.core.MultivaluedMap;
1618

1719
import org.assertj.core.api.InstanceOfAssertFactories;
20+
import org.eclipse.microprofile.config.Config;
21+
import org.eclipse.microprofile.config.ConfigProvider;
1822
import org.jboss.resteasy.specimpl.MultivaluedTreeMap;
19-
import org.junit.jupiter.api.Disabled;
2023
import org.junit.jupiter.api.Test;
2124
import org.mockito.ArgumentCaptor;
2225
import org.mockito.Captor;
26+
import org.mockito.MockedStatic;
27+
import org.mockito.Mockito;
28+
29+
import io.quarkiverse.openapi.generator.AuthConfig;
2330

24-
@Disabled
2531
class ApiKeyOpenApiSpecProviderTest extends AbstractOpenApiSpecProviderTest<ApiKeyAuthenticationProvider> {
2632

2733
private static final String API_KEY_NAME = "API_KEY_NAME";
@@ -34,8 +40,9 @@ class ApiKeyOpenApiSpecProviderTest extends AbstractOpenApiSpecProviderTest<ApiK
3440
private ArgumentCaptor<URI> uriCaptor;
3541

3642
@Override
37-
protected ApiKeyAuthenticationProvider createProvider(String openApiSpecId, String authSchemeName) {
38-
return new ApiKeyAuthenticationProvider(openApiSpecId, authSchemeName, ApiKeyIn.header, API_KEY_NAME, List.of());
43+
protected ApiKeyAuthenticationProvider createProvider() {
44+
return new ApiKeyAuthenticationProvider(OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME, ApiKeyIn.header, API_KEY_NAME,
45+
List.of());
3946
}
4047

4148
@Test
@@ -53,11 +60,22 @@ void filterHeaderFromAuthorizationHeaderCase() throws IOException {
5360
}
5461

5562
@Test
56-
@Disabled
5763
void filterHeaderNotFromAuthorizationHeaderCase() throws IOException {
58-
doReturn(API_KEY_AUTH_HEADER_VALUE).when(requestContext).getHeaderString("Authorization");
59-
provider.filter(requestContext);
60-
assertHeader(headers, API_KEY_NAME, API_KEY_VALUE);
64+
try (MockedStatic<ConfigProvider> configProviderMocked = Mockito.mockStatic(ConfigProvider.class)) {
65+
Config mockedConfig = Mockito.mock(Config.class);
66+
configProviderMocked.when(ConfigProvider::getConfig).thenReturn(mockedConfig);
67+
68+
when(mockedConfig.getOptionalValue(
69+
provider.getCanonicalAuthConfigPropertyName(ApiKeyAuthenticationProvider.USE_AUTHORIZATION_HEADER_VALUE),
70+
Boolean.class)).thenReturn(Optional.of(false));
71+
when(mockedConfig.getOptionalValue(
72+
provider.getCanonicalAuthConfigPropertyName(ApiKeyAuthenticationProvider.API_KEY), String.class))
73+
.thenReturn(Optional.of(API_KEY_VALUE));
74+
doReturn(API_KEY_AUTH_HEADER_VALUE).when(requestContext).getHeaderString("Authorization");
75+
76+
provider.filter(requestContext);
77+
assertHeader(headers, API_KEY_NAME, API_KEY_VALUE);
78+
}
6179
}
6280

6381
@Test
@@ -105,9 +123,16 @@ void filterCookieCaseExisting() throws IOException {
105123

106124
@Test
107125
void tokenPropagationNotSupported() {
108-
assertThatThrownBy(() -> new ApiKeyAuthenticationProvider(OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME, ApiKeyIn.header,
109-
API_KEY_NAME, List.of())).hasMessageContaining("quarkus.openapi-generator.%s.auth.%s.token-propagation",
110-
OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME);
126+
try (MockedStatic<ConfigProvider> configProviderMocked = Mockito.mockStatic(ConfigProvider.class)) {
127+
Config mockedConfig = Mockito.mock(Config.class);
128+
configProviderMocked.when(ConfigProvider::getConfig).thenReturn(mockedConfig);
129+
when(mockedConfig.getOptionalValue(provider.getCanonicalAuthConfigPropertyName(AuthConfig.TOKEN_PROPAGATION),
130+
Boolean.class)).thenReturn(Optional.of(true));
131+
132+
assertThatThrownBy(() -> new ApiKeyAuthenticationProvider(OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME, ApiKeyIn.header,
133+
API_KEY_NAME, List.of())).hasMessageContaining("quarkus.openapi-generator.%s.auth.%s.token-propagation",
134+
OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME);
135+
}
111136
}
112137

113138
private void assertCookie(final Object cookie, final String name, final String value) {
Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
package io.quarkiverse.openapi.generator.providers;
22

33
import static org.assertj.core.api.Assertions.assertThatThrownBy;
4+
import static org.mockito.Mockito.when;
45

56
import java.io.IOException;
67
import java.util.Base64;
78
import java.util.List;
9+
import java.util.Optional;
810

911
import jakarta.ws.rs.core.HttpHeaders;
1012

11-
import org.junit.jupiter.api.Disabled;
13+
import org.eclipse.microprofile.config.Config;
14+
import org.eclipse.microprofile.config.ConfigProvider;
1215
import org.junit.jupiter.api.Test;
16+
import org.mockito.MockedStatic;
17+
import org.mockito.Mockito;
18+
19+
import io.quarkiverse.openapi.generator.AuthConfig;
1320

14-
@Disabled
1521
class BasicOpenApiSpecProviderTest extends AbstractOpenApiSpecProviderTest<BasicAuthenticationProvider> {
1622

1723
private static final String USER = "USER";
@@ -21,7 +27,7 @@ class BasicOpenApiSpecProviderTest extends AbstractOpenApiSpecProviderTest<Basic
2127
+ Base64.getEncoder().encodeToString((USER + ":" + PASSWORD).getBytes());
2228

2329
@Override
24-
protected BasicAuthenticationProvider createProvider(String openApiSpecId, String authSchemeName) {
30+
protected BasicAuthenticationProvider createProvider() {
2531
return new BasicAuthenticationProvider(OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME, List.of());
2632
}
2733

@@ -33,9 +39,16 @@ void filter() throws IOException {
3339

3440
@Test
3541
void tokenPropagationNotSupported() {
36-
assertThatThrownBy(
37-
() -> new BasicAuthenticationProvider(OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME, List.of()))
38-
.hasMessageContaining("quarkus.openapi-generator.%s.auth.%s.token-propagation", OPEN_API_FILE_SPEC_ID,
39-
AUTH_SCHEME_NAME);
42+
try (MockedStatic<ConfigProvider> configProviderMocked = Mockito.mockStatic(ConfigProvider.class)) {
43+
Config mockedConfig = Mockito.mock(Config.class);
44+
configProviderMocked.when(ConfigProvider::getConfig).thenReturn(mockedConfig);
45+
when(mockedConfig.getOptionalValue(provider.getCanonicalAuthConfigPropertyName(AuthConfig.TOKEN_PROPAGATION),
46+
Boolean.class)).thenReturn(Optional.of(true));
47+
48+
assertThatThrownBy(() -> new BasicAuthenticationProvider(OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME, List.of()))
49+
.hasMessageContaining("quarkus.openapi-generator.%s.auth.%s.token-propagation", OPEN_API_FILE_SPEC_ID,
50+
AUTH_SCHEME_NAME);
51+
}
52+
4053
}
4154
}

client/runtime/src/test/java/io/quarkiverse/openapi/generator/providers/BearerOpenApiSpecProviderTest.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,38 @@
88

99
import jakarta.ws.rs.core.HttpHeaders;
1010

11-
import org.junit.jupiter.api.Disabled;
1211
import org.junit.jupiter.api.Test;
1312
import org.junit.jupiter.params.ParameterizedTest;
1413
import org.junit.jupiter.params.provider.Arguments;
1514
import org.junit.jupiter.params.provider.MethodSource;
1615

17-
@Disabled
1816
class BearerOpenApiSpecProviderTest extends AbstractOpenApiSpecProviderTest<BearerAuthenticationProvider> {
1917

20-
private static final String TOKEN = "TOKEN";
2118
private static final String INCOMING_TOKEN = "INCOMING_TOKEN";
2219

2320
private static final String BEARER_SCHEMA = "bearer";
2421
private static final String CUSTOM_SCHEMA = "custom_scheme";
2522
private static final String HEADER_NAME = "HEADER_NAME";
2623

2724
@Override
28-
protected BearerAuthenticationProvider createProvider(String openApiSpecId, String authSchemeName) {
25+
protected BearerAuthenticationProvider createProvider() {
2926
return new BearerAuthenticationProvider(OPEN_API_FILE_SPEC_ID, AUTH_SCHEME_NAME, null,
3027
List.of());
3128
}
3229

3330
@Test
3431
void filterNoSchemaCase() throws IOException {
35-
filter(null, TOKEN, TOKEN);
32+
filter(null, INCOMING_TOKEN, INCOMING_TOKEN);
3633
}
3734

3835
@Test
3936
void filterBearerSchemaCase() throws IOException {
40-
filter(BEARER_SCHEMA, TOKEN, "Bearer " + TOKEN);
37+
filter(BEARER_SCHEMA, INCOMING_TOKEN, "Bearer " + INCOMING_TOKEN);
4138
}
4239

4340
@Test
4441
void filterCustomSchemaCase() throws IOException {
45-
filter(CUSTOM_SCHEMA, TOKEN, CUSTOM_SCHEMA + " " + TOKEN);
42+
filter(CUSTOM_SCHEMA, INCOMING_TOKEN, CUSTOM_SCHEMA + " " + INCOMING_TOKEN);
4643
}
4744

4845
private void filter(String bearerScheme, String currentToken, String expectedAuthorizationHeader) throws IOException {
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
quarkus.openapi-generator.open_api_file_spec_id_json.auth.auth_scheme_name.api-key=API_KEY_VALUE
22
quarkus.openapi-generator.open_api_file_spec_id_json.auth.auth_scheme_name.username=USER
3-
quarkus.openapi-generator.open_api_file_spec_id_json.auth.auth_scheme_name.password=PASSWORD
3+
quarkus.openapi-generator.open_api_file_spec_id_json.auth.auth_scheme_name.password=PASSWORD
4+
quarkus.openapi-generator.open_api_file_spec_id_json.auth.auth_scheme_name.bearer-token=INCOMING_TOKEN

0 commit comments

Comments
 (0)