From feced4a6573f7e2ff6f047f169debd0435cdbb14 Mon Sep 17 00:00:00 2001 From: Thomas Cederholm Date: Mon, 18 May 2026 15:10:19 +0200 Subject: [PATCH] fix: Address Sonar feedback on security additions - OpenApiServer: use record deconstruction pattern for SecurityScheme.Unsupported - CredentialExtractor: rename unused catch binding to _ (java22 unnamed pattern) - SecurityBootValidationTest: hoist builder construction out of assertThatThrownBy lambdas so only build() can throw --- .../com/retailsvc/http/OpenApiServer.java | 4 +-- .../http/internal/CredentialExtractor.java | 2 +- .../http/SecurityBootValidationTest.java | 34 +++++++------------ 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/retailsvc/http/OpenApiServer.java b/src/main/java/com/retailsvc/http/OpenApiServer.java index bd0e069..550ecff 100644 --- a/src/main/java/com/retailsvc/http/OpenApiServer.java +++ b/src/main/java/com/retailsvc/http/OpenApiServer.java @@ -307,9 +307,9 @@ private static void validateSecurityWiring(Spec spec, Map - OpenApiServer.builder() - .spec(spec) - .handlers(Map.of("getX", req -> Response.ok(Map.of()))) - .port(0) - .build()) + assertThatThrownBy(builder::build) .isInstanceOf(IllegalStateException.class) .hasMessageContaining("bearerAuth"); } @@ -71,14 +66,9 @@ void unsupportedSchemeThrowsWhenReferenced() { List.of(), List.of(Map.of("oauth", List.of()))); Spec spec = Spec.from(r); + OpenApiServer.Builder builder = handlerBuilder(spec); - assertThatThrownBy( - () -> - OpenApiServer.builder() - .spec(spec) - .handlers(Map.of("getX", req -> Response.ok(Map.of()))) - .port(0) - .build()) + assertThatThrownBy(builder::build) .isInstanceOf(IllegalStateException.class) .hasMessageContaining("unsupported"); } @@ -91,18 +81,20 @@ void unknownSchemeReferenceThrows() { List.of(), List.of(Map.of("missingScheme", List.of()))); Spec spec = Spec.from(r); + OpenApiServer.Builder builder = handlerBuilder(spec); - assertThatThrownBy( - () -> - OpenApiServer.builder() - .spec(spec) - .handlers(Map.of("getX", req -> Response.ok(Map.of()))) - .port(0) - .build()) + assertThatThrownBy(builder::build) .isInstanceOf(IllegalStateException.class) .hasMessageContaining("missingScheme"); } + private static OpenApiServer.Builder handlerBuilder(Spec spec) { + return OpenApiServer.builder() + .spec(spec) + .handlers(Map.of("getX", req -> Response.ok(Map.of()))) + .port(0); + } + @Test void externalAuthSkipsAllChecks() throws Exception { Map r =