@@ -1450,4 +1450,118 @@ public void generateQuarkusImplWithoutAuthenticatedForOAuth2WithScopes() throws
14501450 assertFileNotContains (defaultApi , "@io.quarkus.security.Authenticated" );
14511451 }
14521452
1453+ @ Test
1454+ public void generateQuarkusInterfaceWithAuthenticatedOnceForOAuth2MultipleFlowsNoScopes () throws Exception {
1455+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1456+ output .deleteOnExit ();
1457+
1458+ final OpenAPI openAPI = new OpenAPIParser ()
1459+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-multi-flow-no-scopes.yaml" , null , new ParseOptions ()).getOpenAPI ();
1460+
1461+ codegen .setOutputDir (output .getAbsolutePath ());
1462+ codegen .setLibrary (QUARKUS_LIBRARY );
1463+ codegen .additionalProperties ().put (INTERFACE_ONLY , true );
1464+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1465+
1466+ final ClientOptInput input = new ClientOptInput ()
1467+ .openAPI (openAPI )
1468+ .config (codegen );
1469+
1470+ final DefaultGenerator generator = new DefaultGenerator ();
1471+ final List <File > files = generator .opts (input ).generate ();
1472+
1473+ validateJavaSourceFiles (files );
1474+
1475+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1476+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1477+ String content = Files .readString (defaultApi );
1478+ Assert .assertEquals (TestUtils .countOccurrences (content , "@io\\ .quarkus\\ .security\\ .Authenticated" ), 1 );
1479+ }
1480+
1481+ @ Test
1482+ public void generateQuarkusImplWithAuthenticatedOnceForOAuth2MultipleFlowsNoScopes () throws Exception {
1483+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1484+ output .deleteOnExit ();
1485+
1486+ final OpenAPI openAPI = new OpenAPIParser ()
1487+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-multi-flow-no-scopes.yaml" , null , new ParseOptions ()).getOpenAPI ();
1488+
1489+ codegen .setOutputDir (output .getAbsolutePath ());
1490+ codegen .setLibrary (QUARKUS_LIBRARY );
1491+ codegen .additionalProperties ().put (INTERFACE_ONLY , false );
1492+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1493+
1494+ final ClientOptInput input = new ClientOptInput ()
1495+ .openAPI (openAPI )
1496+ .config (codegen );
1497+
1498+ final DefaultGenerator generator = new DefaultGenerator ();
1499+ final List <File > files = generator .opts (input ).generate ();
1500+
1501+ validateJavaSourceFiles (files );
1502+
1503+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1504+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1505+ String content = Files .readString (defaultApi );
1506+ Assert .assertEquals (TestUtils .countOccurrences (content , "@io\\ .quarkus\\ .security\\ .Authenticated" ), 1 );
1507+ }
1508+
1509+ @ Test
1510+ public void generateQuarkusInterfaceWithAuthenticatedWhenOrSchemesIncludeEmptyScopes () throws Exception {
1511+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1512+ output .deleteOnExit ();
1513+
1514+ final OpenAPI openAPI = new OpenAPIParser ()
1515+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-or-empty-and-scoped.yaml" , null , new ParseOptions ()).getOpenAPI ();
1516+
1517+ codegen .setOutputDir (output .getAbsolutePath ());
1518+ codegen .setLibrary (QUARKUS_LIBRARY );
1519+ codegen .additionalProperties ().put (INTERFACE_ONLY , true );
1520+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1521+
1522+ final ClientOptInput input = new ClientOptInput ()
1523+ .openAPI (openAPI )
1524+ .config (codegen );
1525+
1526+ final DefaultGenerator generator = new DefaultGenerator ();
1527+ final List <File > files = generator .opts (input ).generate ();
1528+
1529+ validateJavaSourceFiles (files );
1530+
1531+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1532+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1533+ // getItems (empty-scope OR scoped) → @Authenticated; createItem (scoped only) → none: count must be exactly 1
1534+ String content = Files .readString (defaultApi );
1535+ Assert .assertEquals (TestUtils .countOccurrences (content , "@io\\ .quarkus\\ .security\\ .Authenticated" ), 1 );
1536+ }
1537+
1538+ @ Test
1539+ public void generateQuarkusImplWithAuthenticatedWhenOrSchemesIncludeEmptyScopes () throws Exception {
1540+ final File output = Files .createTempDirectory ("test" ).toFile ().getCanonicalFile ();
1541+ output .deleteOnExit ();
1542+
1543+ final OpenAPI openAPI = new OpenAPIParser ()
1544+ .readLocation ("src/test/resources/3_0/jaxrs-spec/quarkus-oauth2-or-empty-and-scoped.yaml" , null , new ParseOptions ()).getOpenAPI ();
1545+
1546+ codegen .setOutputDir (output .getAbsolutePath ());
1547+ codegen .setLibrary (QUARKUS_LIBRARY );
1548+ codegen .additionalProperties ().put (INTERFACE_ONLY , false );
1549+ codegen .additionalProperties ().put (USE_JAKARTA_EE , true );
1550+
1551+ final ClientOptInput input = new ClientOptInput ()
1552+ .openAPI (openAPI )
1553+ .config (codegen );
1554+
1555+ final DefaultGenerator generator = new DefaultGenerator ();
1556+ final List <File > files = generator .opts (input ).generate ();
1557+
1558+ validateJavaSourceFiles (files );
1559+
1560+ final Path defaultApi = output .toPath ().resolve ("src/gen/java/org/openapitools/api/ItemsApi.java" );
1561+ TestUtils .ensureContainsFile (files , output , "src/gen/java/org/openapitools/api/ItemsApi.java" );
1562+ // getItems (empty-scope OR scoped) → @Authenticated; createItem (scoped only) → none: count must be exactly 1
1563+ String content = Files .readString (defaultApi );
1564+ Assert .assertEquals (TestUtils .countOccurrences (content , "@io\\ .quarkus\\ .security\\ .Authenticated" ), 1 );
1565+ }
1566+
14531567}
0 commit comments