quarkiverse / quarkus-openapi-generator

OpenAPI Generator - REST Client Generator
Apache License 2.0
108 stars 69 forks source link

Fix API key cookie authentication (#568) #569

Closed ssternal closed 5 months ago

ssternal commented 7 months ago

Fixes https://github.com/quarkiverse/quarkus-openapi-generator/issues/568: Replaces access to read-only cookies using mutable headers during API key cookie authentication. This works around a potential UnsupportedOperationException.

github-actions[bot] commented 7 months ago

🎊 PR Preview b47f3c237e3cc9c47fe979d885f9b570c229ff57 has been successfully built and deployed. See the documentation preview: https://quarkus-openapi-generator-preview-pr-569.surge.sh

ssternal commented 7 months ago

I can only work on this on fridays, but yes, my locally published snapshot fixes the issue. I will look into the ITs to see if I can create/adapt one.

Edit:

I can't get the ITs to run locally on my machine, neither using the classic nor the reactive profile. That makes developing an IT a little bit hard. Any hints?

mvn clean verify -P resteasy-classic
[INFO] Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] Quarkus - Openapi Generator - Parent                               [pom]
[INFO] Quarkus - Openapi Generator - Runtime                              [jar]
[INFO] Quarkus - Openapi Generator - Test Utils                           [jar]
[INFO] Quarkus - Openapi Generator - Deployment                           [jar]
[INFO] Quarkus - Openapi Generator - Documentation                        [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests                    [pom]
[INFO] Quarkus - Openapi Generator - Integration Tests - Array enum       [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - BeanParam        [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Change directory [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Circuit Breaker  [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Cookie Authentication [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Custom Templates [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Enum Property    [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Exclude          [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Generation Input [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Generation Tests [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Include          [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Multipart Request [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Mutiny           [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - OpenAPI Normalizer [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - PartFilename     [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - return-response  [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Security         [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Simple           [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Skip Spec Validation [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Suffix / Prefix  [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Type Mapping     [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Config Key       [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - GitHub spec      [jar]
[INFO] Quarkus - Openapi Generator - Integration Tests - Additional Properties [jar]
[...]
[INFO] --< io.quarkiverse.openapi.generator:quarkus-openapi-generator-it-array-enum >--
[INFO] Building Quarkus - Openapi Generator - Integration Tests - Array enum 2.2.14-SNAPSHOT [7/30]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.2.0:clean (default-clean) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Deleting ...\quarkus-openapi-generator\integration-tests\array-enum\target
[INFO] 
[INFO] --- maven-enforcer-plugin:3.3.0:enforce (enforce-java-version) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Skipping Rule Enforcement.
[INFO] 
[INFO] --- maven-enforcer-plugin:3.3.0:enforce (enforce-maven-version) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Skipping Rule Enforcement.
[INFO] 
[INFO] --- buildnumber-maven-plugin:3.2.0:create (get-scm-revision) @ quarkus-openapi-generator-it-array-enum ---
[INFO] 
[INFO] --- formatter-maven-plugin:2.23.0:format (format-sources) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Processed 1 files in 892ms (Formatted: 0, Skipped: 0, Unchanged: 1, Failed: 0, Readonly: 0)
[INFO] 
[INFO] --- impsort-maven-plugin:1.9.0:sort (sort-imports) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Processed 1 files in 00:00.204 (Already Sorted: 1, Needed Sorting: 0)
[INFO] 
[INFO] --- maven-resources-plugin:3.3.1:resources (default-resources) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Copying 1 resource from src\main\resources to target\classes
[INFO] 
[INFO] --- quarkus-maven-plugin:3.5.2:generate-code (default) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Generating with dryRun=false
[INFO] No .openapi-generator-ignore file found.
[INFO] OpenAPI Generator: quarkus (client)
[INFO] Generator 'quarkus' is considered stable.
[INFO] Environment variable JAVA_POST_PROCESS_FILE not defined so the Java code may not be properly formatted. To define it, try 'export JAVA_POST_PROCESS_FILE="/usr/local/bin/clang-format -i"' (Linux/Mac)
[INFO] NOTE: To enable file post-processing, 'enablePostProcessFile' must be set to `true` (--enable-post-process-file for CLI).
[INFO] Processing operation create-a-webhook
[INFO] Processing operation null
[INFO] 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[INFO] 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[INFO] writing file ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\org\openapi\quarkus\array_enum_yaml\model\WebhookCreateUpdatePayload.java
[INFO] Skipped ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\docs\WebhookCreateUpdatePayload.md (Skipped by modelDocs options supplied by user.)
[WARNING] Empty operationId found for path: get /messaging/topics. Renamed to auto-generated operationId: messagingTopicsGet
[INFO] 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[INFO] writing file ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\org\openapi\quarkus\array_enum_yaml\api\ArrayEnumResourceApi.java
[INFO] Skipped ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\org\openapi\quarkus\array_enum_yaml\api\ArrayEnumResourceApiTest.java (Skipped by apiTests options supplied by user.)
[INFO] Skipped ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\docs\ArrayEnumResourceApi.md (Skipped by apiDocs options supplied by user.)
[INFO] 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[INFO] writing file ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\org\openapi\quarkus\array_enum_yaml\api\QuarkusTopicsInformationResourceApi.java
[INFO] Skipped ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\org\openapi\quarkus\array_enum_yaml\api\QuarkusTopicsInformationResourceApiTest.java (Skipped by apiTests options supplied by user.)
[INFO] Skipped ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\docs\QuarkusTopicsInformationResourceApi.md (Skipped by apiDocs options supplied by user.)
[INFO] 'host' (OAS 2.0) or 'servers' (OAS 3.0) not defined in the spec. Default to [http://localhost] for server URL [http://localhost/]
[INFO] writing file ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\.openapi-generator-ignore
[INFO] writing file ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\.openapi-generator\VERSION
[INFO] writing file ...\quarkus-openapi-generator\integration-tests\array-enum\target\generated-sources\open-api-yaml\.openapi-generator\FILES
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 3 source files to ...\quarkus-openapi-generator\integration-tests\array-enum\target\classes
[INFO] 
[INFO] --- quarkus-maven-plugin:3.5.2:generate-code-tests (default) @ quarkus-openapi-generator-it-array-enum ---
[INFO] 
[INFO] --- maven-resources-plugin:3.3.1:testResources (default-testResources) @ quarkus-openapi-generator-it-array-enum ---
[INFO] skip non existing resourceDirectory ...\quarkus-openapi-generator\integration-tests\array-enum\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.1:testCompile (default-testCompile) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to ...\quarkus-openapi-generator\integration-tests\array-enum\target\test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:3.1.2:test (default-test) @ quarkus-openapi-generator-it-array-enum ---
[INFO] Surefire report directory: ...\quarkus-openapi-generator\integration-tests\array-enum\target\surefire-reports
[INFO] Using auto detected provider org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running io.quarkiverse.openapi.generator.it.ArrayEnumTest
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 9.337 s <<< FAILURE! -- in io.quarkiverse.openapi.generator.it.ArrayEnumTest
[ERROR] io.quarkiverse.openapi.generator.it.ArrayEnumTest.apiIsBeingGenerated -- Time elapsed: 0.047 s <<< ERROR!
java.lang.RuntimeException: 
java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
    [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1447)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:311)
    at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:158)
    at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:471)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:282)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:829)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:478)
    at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:624)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:299)
    ... 13 more

    at io.quarkus.test.junit.QuarkusTestExtension.throwBootFailureException(QuarkusTestExtension.java:639)
    at io.quarkus.test.junit.QuarkusTestExtension.interceptTestClassConstructor(QuarkusTestExtension.java:723)
    at java.base/java.util.Optional.orElseGet(Optional.java:369)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
Caused by: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
    [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1447)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:311)
    at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:158)
    at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:471)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:282)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:829)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:478)
    at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:624)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:299)
    ... 13 more

    at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:336)
    at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:253)
    at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:60)
    at io.quarkus.test.junit.QuarkusTestExtension.doJavaStart(QuarkusTestExtension.java:223)
    at io.quarkus.test.junit.QuarkusTestExtension.ensureStarted(QuarkusTestExtension.java:606)
    at io.quarkus.test.junit.QuarkusTestExtension.beforeAll(QuarkusTestExtension.java:656)
    ... 1 more
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
    [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1447)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:311)
    at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:158)
    at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:471)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:282)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:829)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:478)
    at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:624)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:299)
    ... 13 more

    at io.quarkus.builder.Execution.run(Execution.java:123)
    at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:79)
    at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160)
    at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:332)
    ... 6 more
Caused by: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1447)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:311)
    at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:158)
    at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:471)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:282)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:829)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:478)
    at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:624)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:299)
    ... 10 more

[INFO] 
[INFO] Results:
[INFO] 
[ERROR] Errors: 
[ERROR]   ArrayEnumTest.apiIsBeingGenerated » Runtime java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
    [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: jakarta.enterprise.inject.spi.DeploymentException: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.BeanDeployment.processErrors(BeanDeployment.java:1447)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:311)
    at io.quarkus.arc.processor.BeanProcessor.initialize(BeanProcessor.java:158)
    at io.quarkus.arc.deployment.ArcProcessor.validate(ArcProcessor.java:471)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:849)
    at io.quarkus.builder.BuildContext.run(BuildContext.java:282)
    at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
    at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2513)
    at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1538)
    at java.base/java.lang.Thread.run(Thread.java:829)
    at org.jboss.threads.JBossThread.run(JBossThread.java:501)
Caused by: jakarta.enterprise.inject.UnsatisfiedResolutionException: Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi and qualifiers [@Default]
    - java member: io.quarkiverse.openapi.generator.it.ArrayEnumTest#api
    - declared on CLASS bean [types=[io.quarkiverse.openapi.generator.it.ArrayEnumTest, java.lang.Object], qualifiers=[@Default, @Any], target=io.quarkiverse.openapi.generator.it.ArrayEnumTest]
    at io.quarkus.arc.processor.Beans.resolveInjectionPoint(Beans.java:478)
    at io.quarkus.arc.processor.BeanInfo.init(BeanInfo.java:624)
    at io.quarkus.arc.processor.BeanDeployment.init(BeanDeployment.java:299)
    ... 13 more

[INFO] 
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Quarkus - Openapi Generator - Parent 2.2.14-SNAPSHOT:
[INFO] 
[INFO] Quarkus - Openapi Generator - Parent ............... SUCCESS [  1.996 s]
[INFO] Quarkus - Openapi Generator - Runtime .............. SUCCESS [ 18.443 s]
[INFO] Quarkus - Openapi Generator - Test Utils ........... SUCCESS [  1.573 s]
[INFO] Quarkus - Openapi Generator - Deployment ........... SUCCESS [ 15.317 s]
[INFO] Quarkus - Openapi Generator - Documentation ........ SUCCESS [ 10.230 s]
[INFO] Quarkus - Openapi Generator - Integration Tests .... SUCCESS [  0.250 s]
[INFO] Quarkus - Openapi Generator - Integration Tests - Array enum FAILURE [ 23.503 s]
[INFO] Quarkus - Openapi Generator - Integration Tests - BeanParam SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Change directory SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Circuit Breaker SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Cookie Authentication SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Custom Templates SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Enum Property SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Exclude SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Generation Input SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Generation Tests SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Include SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Multipart Request SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Mutiny SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - OpenAPI Normalizer SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - PartFilename SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - return-response SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Security SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Simple SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Skip Spec Validation SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Suffix / Prefix SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Type Mapping SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Config Key SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - GitHub spec SKIPPED
[INFO] Quarkus - Openapi Generator - Integration Tests - Additional Properties SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:14 min
[INFO] Finished at: 2023-11-24T11:11:05+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.1.2:test (default-test) on project quarkus-openapi-generator-it-array-enum: 
[ERROR] 
[ERROR] Please refer to ...\quarkus-openapi-generator\integration-tests\array-enum\target\surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.1.2:test (default-test) on project quarkus-openapi-generator-it-array-enum: 
[...]

Process finished with exit code 1
ricardozanini commented 7 months ago

Can you investigate this generated file?

Unsatisfied dependency for type org.openapi.quarkus.array_enum_yaml.api.ArrayEnumResourceApi
ssternal commented 7 months ago

I have checked the generated file and everything looks fine. Therefore, I decided to have a look at the dependency injection. While reading the Quarkus DI guide I discovered the option to prevent ArC from removing configured beans. After adding the following line to my local application config, I was able to run the tests:

quarkus.arc.unremovable-types=org.eclipse.*

I have no idea why the rest client is removed per default on my local test setup, as it works fine whtin the GitHub pipeline. However, with this little hack I could verify my test works out by having a failure without the fix and a success with the fix.

ssternal commented 7 months ago

The automated build failed due to an error with the new integration test. The issue arises due to availability of two REST implementations (classic v/s reactive). This again is because of the default activated classic maven profile. During the development of the integration test I asked myself if the classic profile should be acivated per default. Since the integration tests are designed to explicitly activate it when invoking the classic integraion tests I would recommend disabling the default behavior.

hbelmiro commented 6 months ago

@ssternal we need to run tests with RESTEasy Classic and Reactive, unless in rare situations. PTAL at https://github.com/quarkiverse/quarkus-openapi-generator/blob/main/CONTRIBUTING.md#resteasy-reactive-and-resteasy-classic.

To fix the failing tests you need to remove the dependencies from the test pom.xml. Those dependencies are handled by the parent module. You can use https://github.com/quarkiverse/quarkus-openapi-generator/blob/main/integration-tests/simple/pom.xml as an example.

hbelmiro commented 5 months ago

@all-contributors add @nmirasch for code.

allcontributors[bot] commented 5 months ago

@hbelmiro

I've put up a pull request to add @nmirasch! :tada: