Skip to content

Commit 366dfd4

Browse files
committed
add tests
1 parent f5c73d1 commit 366dfd4

File tree

9 files changed

+182
-13
lines changed

9 files changed

+182
-13
lines changed

client/deployment/pom.xml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,21 @@
118118
<artifactId>quarkus-openapi-generator-test-utils</artifactId>
119119
<scope>test</scope>
120120
</dependency>
121-
121+
<dependency>
122+
<groupId>io.quarkus</groupId>
123+
<artifactId>quarkus-rest-client-oidc-filter</artifactId>
124+
<scope>test</scope>
125+
</dependency>
126+
<dependency>
127+
<groupId>jakarta.ws.rs</groupId>
128+
<artifactId>jakarta.ws.rs-api</artifactId>
129+
<scope>test</scope>
130+
</dependency>
131+
<dependency>
132+
<groupId>org.eclipse.microprofile.rest.client</groupId>
133+
<artifactId>microprofile-rest-client-api</artifactId>
134+
<scope>test</scope>
135+
</dependency>
122136
<dependency>
123137
<groupId>io.quarkus</groupId>
124138
<artifactId>quarkus-junit5-internal</artifactId>

client/deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/GeneratorProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ void produceOauthAuthentication(CombinedIndexBuildItem beanArchiveBuildItem,
6363
.addValue("name", name)
6464
.addValue("openApiSpecId", openApiSpecId)
6565
.done()
66-
.createWith(recorder.recordOauthAuthProvider(
66+
.runtimeValue(recorder.recordOauthAuthProvider(
6767
sanitizeAuthName(name),
6868
openApiSpecId,
6969
capabilities.isPresent(Capability.REST_CLIENT_REACTIVE)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package io.quarkiverse.openapi.generator.deployment.authentication;
2+
3+
import io.quarkiverse.openapi.generator.Authentication;
4+
import io.quarkiverse.openapi.generator.markers.ApiKeyAuthenticationMarker;
5+
import io.quarkiverse.openapi.generator.markers.BasicAuthenticationMarker;
6+
import io.quarkiverse.openapi.generator.markers.OauthAuthenticationMarker;
7+
import io.quarkiverse.openapi.generator.providers.ApiKeyAuthenticationProvider;
8+
import io.quarkiverse.openapi.generator.providers.BasicAuthenticationProvider;
9+
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
10+
import io.quarkus.test.QuarkusUnitTest;
11+
import jakarta.inject.Inject;
12+
import org.jboss.shrinkwrap.api.ShrinkWrap;
13+
import org.jboss.shrinkwrap.api.asset.StringAsset;
14+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
15+
import org.junit.jupiter.api.Assertions;
16+
import org.junit.jupiter.api.Test;
17+
import org.junit.jupiter.api.extension.RegisterExtension;
18+
19+
import static io.quarkiverse.openapi.generator.providers.ApiKeyIn.header;
20+
21+
22+
public class AuthenticationProviderTest {
23+
24+
@RegisterExtension
25+
static final QuarkusUnitTest unitTest = new QuarkusUnitTest()
26+
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
27+
.addClass(CompositeAuthenticationProvider.class)
28+
.addAsResource(
29+
new StringAsset("\n"
30+
),
31+
"application.properties"));
32+
33+
@Test
34+
public void test(){
35+
Assertions.assertEquals("petstore_auth", oAuth2Provider.getName());
36+
Assertions.assertEquals("spec_1", oAuth2Provider.getOpenApiSpecId());
37+
Assertions.assertEquals("basic_auth", basicAuthProvider.getName());
38+
Assertions.assertEquals("spec_1", basicAuthProvider.getOpenApiSpecId());
39+
Assertions.assertEquals("api_key", apiKeyQueryProvider.getName());
40+
Assertions.assertEquals("spec_2", apiKeyQueryProvider.getOpenApiSpecId());
41+
}
42+
43+
44+
@Inject
45+
@Authentication(name="petstore_auth", openApiSpecId="spec_1")
46+
OAuth2AuthenticationProvider oAuth2Provider;
47+
48+
@Authentication(name="basic_auth", openApiSpecId="spec_1")
49+
BasicAuthenticationProvider basicAuthProvider;
50+
51+
52+
@Authentication(name="api_key", openApiSpecId="spec_2")
53+
ApiKeyAuthenticationProvider apiKeyQueryProvider;
54+
55+
56+
57+
@jakarta.annotation.Priority(jakarta.ws.rs.Priorities.AUTHENTICATION)
58+
@OauthAuthenticationMarker(name="petstore_auth", openApiSpecId="spec_1")
59+
@BasicAuthenticationMarker(name="basic_auth", openApiSpecId="spec_1")
60+
@ApiKeyAuthenticationMarker(name="api_key", openApiSpecId="spec_2", apiKeyIn= header, apiKeyName="api_key")
61+
public static class CompositeAuthenticationProvider {
62+
63+
64+
}
65+
66+
}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package io.quarkiverse.openapi.generator.deployment.authentication;
2+
3+
import io.quarkiverse.openapi.generator.Authentication;
4+
import io.quarkiverse.openapi.generator.annotations.GeneratedClass;
5+
import io.quarkiverse.openapi.generator.markers.ApiKeyAuthenticationMarker;
6+
import io.quarkiverse.openapi.generator.markers.BasicAuthenticationMarker;
7+
import io.quarkiverse.openapi.generator.markers.OauthAuthenticationMarker;
8+
import io.quarkiverse.openapi.generator.markers.OperationMarker;
9+
import io.quarkiverse.openapi.generator.providers.ApiKeyAuthenticationProvider;
10+
import io.quarkiverse.openapi.generator.providers.BasicAuthenticationProvider;
11+
import io.quarkiverse.openapi.generator.providers.OAuth2AuthenticationProvider;
12+
import io.quarkiverse.openapi.generator.providers.OperationAuthInfo;
13+
import io.quarkus.test.QuarkusUnitTest;
14+
import jakarta.enterprise.context.ApplicationScoped;
15+
import jakarta.inject.Inject;
16+
import jakarta.ws.rs.GET;
17+
import jakarta.ws.rs.POST;
18+
import jakarta.ws.rs.Path;
19+
import jakarta.ws.rs.core.Response;
20+
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
21+
import org.jboss.shrinkwrap.api.ShrinkWrap;
22+
import org.jboss.shrinkwrap.api.asset.StringAsset;
23+
import org.jboss.shrinkwrap.api.spec.JavaArchive;
24+
import org.junit.jupiter.api.Assertions;
25+
import org.junit.jupiter.api.Test;
26+
import org.junit.jupiter.api.extension.RegisterExtension;
27+
import org.wildfly.common.Assert;
28+
29+
30+
public class OperationTest {
31+
32+
@RegisterExtension
33+
static final QuarkusUnitTest unitTest = new QuarkusUnitTest()
34+
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
35+
.addClass(PetApi.class)
36+
.addClass(CompositeAuthenticationProvider.class)
37+
.addAsResource(
38+
new StringAsset("\n"
39+
),
40+
"application.properties"));
41+
42+
@Test
43+
public void test(){
44+
Assertions.assertEquals(0, basicAuthProvider.operationsToFilter().size());
45+
Assertions.assertEquals(1, oAuth2Provider.operationsToFilter().size());
46+
OperationAuthInfo operation = oAuth2Provider.operationsToFilter().get(0);
47+
Assertions.assertEquals("addPet", operation.getOperationId());
48+
Assertions.assertEquals("POST", operation.getHttpMethod());
49+
Assertions.assertEquals("/api/v3/method1", operation.getPath());
50+
51+
}
52+
53+
54+
@Inject
55+
@Authentication(name="petstore_auth", openApiSpecId="petstore_json")
56+
OAuth2AuthenticationProvider oAuth2Provider;
57+
@Authentication(name="basic_auth", openApiSpecId="petstore_json")
58+
BasicAuthenticationProvider basicAuthProvider;
59+
60+
@RegisterRestClient(baseUri = "http://localhost/api/v3", configKey = "petstore_json")
61+
@GeneratedClass(value = "petstore.json", tag = "Pet")
62+
@ApplicationScoped
63+
public interface PetApi {
64+
65+
66+
@OperationMarker(name = "petstore_auth", openApiSpecId = "petstore_json", operationId = "addPet", method = "POST", path = "/api/v3/method1")
67+
@Path("/method1")
68+
@POST
69+
Response method1();
70+
71+
}
72+
73+
@jakarta.annotation.Priority(jakarta.ws.rs.Priorities.AUTHENTICATION)
74+
@OauthAuthenticationMarker(name="petstore_auth", openApiSpecId="petstore_json")
75+
@BasicAuthenticationMarker(name="basic_auth", openApiSpecId="petstore_json")
76+
public static class CompositeAuthenticationProvider {
77+
78+
79+
}
80+
81+
}

client/integration-tests/security/src/main/java/io/quarkiverse/openapi/generator/it/security/auth/DummyApiKeyAuthenticationProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.quarkiverse.openapi.generator.it.security.auth;
22

33
import java.io.IOException;
4+
import java.util.List;
45

56
import jakarta.annotation.PostConstruct;
67
import jakarta.annotation.Priority;
@@ -25,7 +26,7 @@ public class DummyApiKeyAuthenticationProvider implements ClientRequestFilter {
2526
@PostConstruct
2627
public void init() {
2728
authProvider = new ApiKeyAuthenticationProvider("open_weather_custom_security_yaml", "app_id", ApiKeyIn.query, "appid",
28-
generatorConfig);
29+
generatorConfig, List.of());
2930
}
3031

3132
@Override

client/runtime/src/main/java/io/quarkiverse/openapi/generator/AuthenticationRecorder.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import io.quarkiverse.openapi.generator.providers.*;
77
import io.quarkus.arc.SyntheticCreationalContext;
8+
import io.quarkus.runtime.RuntimeValue;
89
import io.quarkus.runtime.annotations.Recorder;
910

1011
@Recorder
@@ -39,12 +40,12 @@ public Function<SyntheticCreationalContext<BasicAuthenticationProvider>, BasicAu
3940
return context -> new BasicAuthenticationProvider(openApiSpecId, name, generatorConfig, operations);
4041
}
4142

42-
public Function<SyntheticCreationalContext<OAuth2AuthenticationProvider>, OAuth2AuthenticationProvider> recordOauthAuthProvider(
43+
public RuntimeValue<OAuth2AuthenticationProvider> recordOauthAuthProvider(
4344
String name,
4445
String openApiSpecId, OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate delegate,
4546
List<OperationAuthInfo> operations) {
46-
return context -> new OAuth2AuthenticationProvider(generatorConfig, name, openApiSpecId,
47-
delegate, operations);
47+
return new RuntimeValue<>(new OAuth2AuthenticationProvider(generatorConfig, name, openApiSpecId,
48+
delegate, operations)) ;
4849
}
4950

5051
public OAuth2AuthenticationProvider.OidcClientRequestFilterDelegate recordReactiveDelegate(String clientId) {

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,6 @@ public List<OperationAuthInfo> operationsToFilter() {
8383
return applyToOperations;
8484
}
8585

86-
@Override
87-
public AuthProvider addOperation(OperationAuthInfo operationAuthInfo) {
88-
this.applyToOperations.add(operationAuthInfo);
89-
return this;
90-
}
9186

9287
public String getAuthConfigParam(String paramName, String defaultValue) {
9388
if (authConfig != null) {

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,4 @@ public interface AuthProvider extends ClientRequestFilter {
1919

2020
List<OperationAuthInfo> operationsToFilter();
2121

22-
AuthProvider addOperation(OperationAuthInfo operationAuthInfo);
23-
2422
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,19 @@ public final class OperationAuthInfo {
1212
public OperationAuthInfo() {
1313
}
1414

15+
public void setOperationId(final String operationId) {
16+
this.operationId = operationId;
17+
}
18+
19+
public void setPath(final String path) {
20+
this.pathMatcher = new UrlPatternMatcher(path);
21+
this.path = path;
22+
}
23+
24+
public void setHttpMethod(final String method) {
25+
this.httpMethod = method;
26+
}
27+
1528
public String getHttpMethod() {
1629
return httpMethod;
1730
}

0 commit comments

Comments
 (0)