From fc448c512adb29a5d91f3f76dfc3441402791d5d Mon Sep 17 00:00:00 2001 From: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com> Date: Tue, 25 Aug 2026 12:15:33 +0800 Subject: [PATCH] test(api): reject unsupported include before search Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com> --- .../skillhub/controller/portal/SkillSearchController.java | 3 ++- .../iflytek/skillhub/compat/ClawHubCompatControllerTest.java | 3 +++ .../iflytek/skillhub/controller/SkillSearchControllerTest.java | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillSearchController.java b/server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillSearchController.java index 0568e658..403560aa 100644 --- a/server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillSearchController.java +++ b/server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillSearchController.java @@ -58,6 +58,7 @@ public class SkillSearchController extends BaseApiController { @RequestAttribute(value = "userId", required = false) String userId, @RequestAttribute(value = "userNsRoles", required = false) Map userNsRoles) { + boolean includeLabels = IncludeOptions.includesLabels(include); SkillSearchAppService.SearchResponse response = skillSearchAppService.search( q, namespace, @@ -69,7 +70,7 @@ public class SkillSearchController extends BaseApiController { userNsRoles ); - return ok("response.success.read", IncludeOptions.includesLabels(include) ? withLabels(response) : response); + return ok("response.success.read", includeLabels ? withLabels(response) : response); } private SkillSearchAppService.SearchResponse withLabels(SkillSearchAppService.SearchResponse response) { diff --git a/server/skillhub-app/src/test/java/com/iflytek/skillhub/compat/ClawHubCompatControllerTest.java b/server/skillhub-app/src/test/java/com/iflytek/skillhub/compat/ClawHubCompatControllerTest.java index e5c63f05..ac1abaff 100644 --- a/server/skillhub-app/src/test/java/com/iflytek/skillhub/compat/ClawHubCompatControllerTest.java +++ b/server/skillhub-app/src/test/java/com/iflytek/skillhub/compat/ClawHubCompatControllerTest.java @@ -50,6 +50,7 @@ import static org.mockito.ArgumentMatchers.anyMap; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.ArgumentMatchers.same; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.authentication; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; @@ -190,6 +191,8 @@ class ClawHubCompatControllerTest { void listSkills_shouldRejectUnsupportedIncludeOptions() throws Exception { mockMvc.perform(get("/api/v1/skills").param("include", "labels,stats")) .andExpect(status().isBadRequest()); + + verifyNoInteractions(skillSearchAppService); } @Test diff --git a/server/skillhub-app/src/test/java/com/iflytek/skillhub/controller/SkillSearchControllerTest.java b/server/skillhub-app/src/test/java/com/iflytek/skillhub/controller/SkillSearchControllerTest.java index b4b227f3..2674fc2e 100644 --- a/server/skillhub-app/src/test/java/com/iflytek/skillhub/controller/SkillSearchControllerTest.java +++ b/server/skillhub-app/src/test/java/com/iflytek/skillhub/controller/SkillSearchControllerTest.java @@ -18,6 +18,7 @@ import java.util.Map; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; @@ -195,6 +196,8 @@ class SkillSearchControllerTest { mockMvc.perform(get("/api/web/skills").param("include", "labels,stats")) .andExpect(status().isBadRequest()) .andExpect(jsonPath("$.code").value(400)); + + verifyNoInteractions(skillSearchAppService); } private static SkillSummaryResponse summary(Long id) {