diff --git a/cwms-data-api/src/main/java/cwms/cda/ApiServlet.java b/cwms-data-api/src/main/java/cwms/cda/ApiServlet.java index 8409df4a8..aaf5771ed 100644 --- a/cwms-data-api/src/main/java/cwms/cda/ApiServlet.java +++ b/cwms-data-api/src/main/java/cwms/cda/ApiServlet.java @@ -34,6 +34,7 @@ import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.google.common.flogger.FluentLogger; import cwms.cda.api.Controllers; +import cwms.cda.api.auth.userlists.UserListController; import cwms.cda.api.enums.UnitSystem; import cwms.cda.api.errors.ApplicationException; import cwms.cda.api.errors.CdaError; @@ -341,6 +342,7 @@ private void getOpenApiOptions(JavalinConfig config) { schemeProcessor.apply(ctx, api); api.getPaths().forEach((key,path) -> { setSecurityRequirements(key,path, schemeProcessor.getSecurityRequirements()); + setUserListTags(key, path); // yeah, we really need to figure out how to update everything, // this is supported as an annotation in newer versions. if (key.startsWith("/rss")) { @@ -425,6 +427,13 @@ private static void setSecurityRequirements(String key, PathItem path,List + operation.setTags(List.of(UserListController.TAG))); + } + } + private static void setSecurity(Operation op,List reqs) { if (op != null) { op.setSecurity(reqs); diff --git a/cwms-data-api/src/test/java/cwms/cda/ApiServletTest.java b/cwms-data-api/src/test/java/cwms/cda/ApiServletTest.java index 523e3b168..97fda6a3b 100644 --- a/cwms-data-api/src/test/java/cwms/cda/ApiServletTest.java +++ b/cwms-data-api/src/test/java/cwms/cda/ApiServletTest.java @@ -5,10 +5,13 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; +import cwms.cda.api.auth.userlists.UserListController; import io.javalin.http.Handler; import io.javalin.http.HandlerEntry; import io.javalin.http.HandlerType; import io.javalin.http.PathMatcher; +import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.PathItem; import java.util.List; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; @@ -17,6 +20,29 @@ public class ApiServletTest { + @Test + void test_user_list_operations_are_grouped_under_user_management() { + PathItem path = new PathItem() + .get(new Operation()) + .post(new Operation()) + .delete(new Operation()); + + ApiServlet.setUserListTags("/user/list/{user-list-id}/members", path); + + path.readOperations().forEach(operation -> + assertEquals(List.of(UserListController.TAG), operation.getTags())); + } + + @Test + void test_other_operations_are_not_retagged_as_user_management() { + Operation operation = new Operation().addTagsItem("Other"); + PathItem path = new PathItem().get(operation); + + ApiServlet.setUserListTags("/users/{user-name}", path); + + assertEquals(List.of("Other"), operation.getTags()); + } + @Test public void test_office_from_context_hq(){ String office; @@ -117,4 +143,3 @@ public void test_match_with_internal_star() { } -