@@ -552,7 +552,7 @@ public void generateApiWithAsyncSupportAndInterfaceOnlyAndJBossResponse() throws
552552 //And the generated interface contains CompletionStage<RestResponse<Pet>>
553553 TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/PetApi.java" );
554554 assertFileContains (output .toPath ().resolve ("src/gen/java/org/openapitools/api/PetApi.java" ),
555- "\n import org.jboss.resteasy.reactive.RestResponse;\n " ,
555+ "\n import org.jboss.resteasy.reactive.RestResponse;\n " ,
556556 "\n import java.util.concurrent.CompletionStage;\n " ,
557557 "CompletionStage<RestResponse<Pet>> addPet" , "CompletionStage<RestResponse<Void>> deletePet" );
558558 }
@@ -1545,4 +1545,226 @@ public void generateQuarkusConcreteClassDoesNotAddResponseStatusAnnotation() thr
15451545 "@ResponseStatus" ,
15461546 "import org.jboss.resteasy.reactive.ResponseStatus" );
15471547 }
1548+
1549+ @ Test
1550+ public void generateQuarkusInterfaceWithAuthenticatedForOAuth2EmptyScopes () throws Exception {
1551+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1552+ output .deleteOnExit ();
1553+
1554+ final OpenAPI openAPI = new OpenAPIParser ()
1555+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-no-scopes.yaml" , null , new ParseOptions ()).getOpenAPI ();
1556+
1557+ codegen .setOutputDir (output .getAbsolutePath ());
1558+ codegen .setLibrary (QUARKUS_LIBRARY );
1559+ codegen .additionalProperties ().put (INTERFACE_ONLY , true );
1560+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1561+
1562+ final ClientOptInput input = new ClientOptInput ()
1563+ .openAPI (openAPI )
1564+ .config (codegen );
1565+
1566+ final DefaultGenerator generator = new DefaultGenerator ();
1567+ final List <File > files = generator .opts (input ).generate ();
1568+
1569+ validateJavaSourceFiles (files );
1570+
1571+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1572+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1573+ assertFileContains (defaultApi , "@io.quarkus.security.Authenticated" );
1574+ }
1575+
1576+ @ Test
1577+ public void generateQuarkusImplWithAuthenticatedForOAuth2EmptyScopes () throws Exception {
1578+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1579+ output .deleteOnExit ();
1580+
1581+ final OpenAPI openAPI = new OpenAPIParser ()
1582+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-no-scopes.yaml" , null , new ParseOptions ()).getOpenAPI ();
1583+
1584+ codegen .setOutputDir (output .getAbsolutePath ());
1585+ codegen .setLibrary (QUARKUS_LIBRARY );
1586+ codegen .additionalProperties ().put (INTERFACE_ONLY , false );
1587+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1588+
1589+ final ClientOptInput input = new ClientOptInput ()
1590+ .openAPI (openAPI )
1591+ .config (codegen );
1592+
1593+ final DefaultGenerator generator = new DefaultGenerator ();
1594+ final List <File > files = generator .opts (input ).generate ();
1595+
1596+ validateJavaSourceFiles (files );
1597+
1598+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1599+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1600+ assertFileContains (defaultApi , "@io.quarkus.security.Authenticated" );
1601+ }
1602+
1603+ @ Test
1604+ public void generateQuarkusInterfaceWithoutAuthenticatedForOAuth2WithScopes () throws Exception {
1605+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1606+ output .deleteOnExit ();
1607+
1608+ final OpenAPI openAPI = new OpenAPIParser ()
1609+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-with-scopes.yaml" , null , new ParseOptions ()).getOpenAPI ();
1610+
1611+ codegen .setOutputDir (output .getAbsolutePath ());
1612+ codegen .setLibrary (QUARKUS_LIBRARY );
1613+ codegen .additionalProperties ().put (INTERFACE_ONLY , true );
1614+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1615+
1616+ final ClientOptInput input = new ClientOptInput ()
1617+ .openAPI (openAPI )
1618+ .config (codegen );
1619+
1620+ final DefaultGenerator generator = new DefaultGenerator ();
1621+ final List <File > files = generator .opts (input ).generate ();
1622+
1623+ validateJavaSourceFiles (files );
1624+
1625+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1626+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1627+ assertFileNotContains (defaultApi , "@io.quarkus.security.Authenticated" );
1628+ }
1629+
1630+ @ Test
1631+ public void generateQuarkusImplWithoutAuthenticatedForOAuth2WithScopes () throws Exception {
1632+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1633+ output .deleteOnExit ();
1634+
1635+ final OpenAPI openAPI = new OpenAPIParser ()
1636+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-with-scopes.yaml" , null , new ParseOptions ()).getOpenAPI ();
1637+
1638+ codegen .setOutputDir (output .getAbsolutePath ());
1639+ codegen .setLibrary (QUARKUS_LIBRARY );
1640+ codegen .additionalProperties ().put (INTERFACE_ONLY , false );
1641+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1642+
1643+ final ClientOptInput input = new ClientOptInput ()
1644+ .openAPI (openAPI )
1645+ .config (codegen );
1646+
1647+ final DefaultGenerator generator = new DefaultGenerator ();
1648+ final List <File > files = generator .opts (input ).generate ();
1649+
1650+ validateJavaSourceFiles (files );
1651+
1652+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1653+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1654+ assertFileNotContains (defaultApi , "@io.quarkus.security.Authenticated" );
1655+ }
1656+
1657+ @ Test
1658+ public void generateQuarkusInterfaceWithAuthenticatedOnceForOAuth2MultipleFlowsNoScopes () throws Exception {
1659+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1660+ output .deleteOnExit ();
1661+
1662+ final OpenAPI openAPI = new OpenAPIParser ()
1663+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-multi-flow-no-scopes.yaml" , null , new ParseOptions ()).getOpenAPI ();
1664+
1665+ codegen .setOutputDir (output .getAbsolutePath ());
1666+ codegen .setLibrary (QUARKUS_LIBRARY );
1667+ codegen .additionalProperties ().put (INTERFACE_ONLY , true );
1668+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1669+
1670+ final ClientOptInput input = new ClientOptInput ()
1671+ .openAPI (openAPI )
1672+ .config (codegen );
1673+
1674+ final DefaultGenerator generator = new DefaultGenerator ();
1675+ final List <File > files = generator .opts (input ).generate ();
1676+
1677+ validateJavaSourceFiles (files );
1678+
1679+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1680+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1681+ String content = Files .readString (defaultApi );
1682+ Assert .assertEquals (TestUtils .countOccurrences (content , "@io\\ .quarkus\\ .security\\ .Authenticated" ), 1 );
1683+ }
1684+
1685+ @ Test
1686+ public void generateQuarkusImplWithAuthenticatedOnceForOAuth2MultipleFlowsNoScopes () throws Exception {
1687+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1688+ output .deleteOnExit ();
1689+
1690+ final OpenAPI openAPI = new OpenAPIParser ()
1691+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-multi-flow-no-scopes.yaml" , null , new ParseOptions ()).getOpenAPI ();
1692+
1693+ codegen .setOutputDir (output .getAbsolutePath ());
1694+ codegen .setLibrary (QUARKUS_LIBRARY );
1695+ codegen .additionalProperties ().put (INTERFACE_ONLY , false );
1696+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1697+
1698+ final ClientOptInput input = new ClientOptInput ()
1699+ .openAPI (openAPI )
1700+ .config (codegen );
1701+
1702+ final DefaultGenerator generator = new DefaultGenerator ();
1703+ final List <File > files = generator .opts (input ).generate ();
1704+
1705+ validateJavaSourceFiles (files );
1706+
1707+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1708+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1709+ String content = Files .readString (defaultApi );
1710+ Assert .assertEquals (TestUtils .countOccurrences (content , "@io\\ .quarkus\\ .security\\ .Authenticated" ), 1 );
1711+ }
1712+
1713+ @ Test
1714+ public void generateQuarkusInterfaceWithAuthenticatedWhenOrSchemesIncludeEmptyScopes () throws Exception {
1715+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1716+ output .deleteOnExit ();
1717+
1718+ final OpenAPI openAPI = new OpenAPIParser ()
1719+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-or-empty-and-scoped.yaml" , null , new ParseOptions ()).getOpenAPI ();
1720+
1721+ codegen .setOutputDir (output .getAbsolutePath ());
1722+ codegen .setLibrary (QUARKUS_LIBRARY );
1723+ codegen .additionalProperties ().put (INTERFACE_ONLY , true );
1724+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1725+
1726+ final ClientOptInput input = new ClientOptInput ()
1727+ .openAPI (openAPI )
1728+ .config (codegen );
1729+
1730+ final DefaultGenerator generator = new DefaultGenerator ();
1731+ final List <File > files = generator .opts (input ).generate ();
1732+
1733+ validateJavaSourceFiles (files );
1734+
1735+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1736+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1737+ // getItems (empty-scope OR scoped) → @Authenticated; createItem (scoped only) → none: count must be exactly 1
1738+ String content = Files .readString (defaultApi );
1739+ Assert .assertEquals (TestUtils .countOccurrences (content , "@io\\ .quarkus\\ .security\\ .Authenticated" ), 1 );
1740+ }
1741+
1742+ @ Test
1743+ public void generateQuarkusImplWithAuthenticatedWhenOrSchemesIncludeEmptyScopes () throws Exception {
1744+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1745+ output .deleteOnExit ();
1746+
1747+ final OpenAPI openAPI = new OpenAPIParser ()
1748+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-or-empty-and-scoped.yaml" , null , new ParseOptions ()).getOpenAPI ();
1749+
1750+ codegen .setOutputDir (output .getAbsolutePath ());
1751+ codegen .setLibrary (QUARKUS_LIBRARY );
1752+ codegen .additionalProperties ().put (INTERFACE_ONLY , false );
1753+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1754+
1755+ final ClientOptInput input = new ClientOptInput ()
1756+ .openAPI (openAPI )
1757+ .config (codegen );
1758+
1759+ final DefaultGenerator generator = new DefaultGenerator ();
1760+ final List <File > files = generator .opts (input ).generate ();
1761+
1762+ validateJavaSourceFiles (files );
1763+
1764+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1765+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1766+ // getItems (empty-scope OR scoped) → @Authenticated; createItem (scoped only) → none: count must be exactly 1
1767+ String content = Files .readString (defaultApi );
1768+ Assert .assertEquals (TestUtils .countOccurrences (content , "@io\\ .quarkus\\ .security\\ .Authenticated" ), 1 );
1769+ }
15481770}
0 commit comments