test(api): 补齐剩余业务模块控制器接口验证
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package com.bruce.mcp.controller;
|
||||
|
||||
import com.bruce.common.handler.GlobalExceptionHandler;
|
||||
import com.bruce.mcp.service.IMcpCapabilityService;
|
||||
import com.bruce.mcp.service.IMcpImportService;
|
||||
import com.bruce.mcp.service.IMcpServerService;
|
||||
import com.bruce.mcp.service.IMcpWorkspaceService;
|
||||
import com.bruce.mcp.vo.McpWorkspaceVO;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
|
||||
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;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
/**
|
||||
* 验证 MCP 工作台查询接口的基础契约。
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class McpImportControllerTests {
|
||||
|
||||
private MockMvc mockMvc;
|
||||
|
||||
@Mock
|
||||
private IMcpImportService mcpImportService;
|
||||
|
||||
@Mock
|
||||
private IMcpServerService mcpServerService;
|
||||
|
||||
@Mock
|
||||
private IMcpCapabilityService mcpCapabilityService;
|
||||
|
||||
@Mock
|
||||
private IMcpWorkspaceService mcpWorkspaceService;
|
||||
|
||||
@InjectMocks
|
||||
private McpImportController mcpImportController;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
mockMvc = MockMvcBuilders.standaloneSetup(mcpImportController)
|
||||
.setControllerAdvice(new GlobalExceptionHandler())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
void workspaceShouldReturnStructuredWorkspaceView() throws Exception {
|
||||
McpWorkspaceVO workspace = new McpWorkspaceVO();
|
||||
workspace.setServerId(301L);
|
||||
workspace.setServerCode("jira_server");
|
||||
workspace.setServerName("Jira 服务");
|
||||
workspace.setImportType("URL");
|
||||
workspace.setHealthStatus("HEALTHY");
|
||||
|
||||
when(mcpWorkspaceService.getWorkspace(301L)).thenReturn(workspace);
|
||||
|
||||
mockMvc.perform(get("/api/mcp/workspace").param("serverId", "301"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.resultcode").value("0"))
|
||||
.andExpect(jsonPath("$.data.serverId").value(301))
|
||||
.andExpect(jsonPath("$.data.serverCode").value("jira_server"))
|
||||
.andExpect(jsonPath("$.data.healthStatus").value("HEALTHY"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.bruce.modelprovider.controller;
|
||||
|
||||
import com.bruce.common.handler.GlobalExceptionHandler;
|
||||
import com.bruce.modelprovider.service.IModelWorkspaceService;
|
||||
import com.bruce.modelprovider.vo.ModelWorkspaceVO;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
|
||||
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;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
/**
|
||||
* 验证模型工作台聚合接口的基础返回契约。
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ModelWorkspaceControllerTests {
|
||||
|
||||
private MockMvc mockMvc;
|
||||
|
||||
@Mock
|
||||
private IModelWorkspaceService modelWorkspaceService;
|
||||
|
||||
@InjectMocks
|
||||
private ModelWorkspaceController modelWorkspaceController;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
mockMvc = MockMvcBuilders.standaloneSetup(modelWorkspaceController)
|
||||
.setControllerAdvice(new GlobalExceptionHandler())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
void getWorkspaceShouldReturnStructuredAggregateView() throws Exception {
|
||||
ModelWorkspaceVO workspace = new ModelWorkspaceVO();
|
||||
workspace.setProviderCount(3);
|
||||
workspace.setModelCount(5);
|
||||
workspace.setRouteRuleCount(2);
|
||||
workspace.setRecentFailedCallCount(1);
|
||||
|
||||
when(modelWorkspaceService.getWorkspace()).thenReturn(workspace);
|
||||
|
||||
mockMvc.perform(get("/api/model/workspace"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.resultcode").value("0"))
|
||||
.andExpect(jsonPath("$.data.providerCount").value(3))
|
||||
.andExpect(jsonPath("$.data.modelCount").value(5))
|
||||
.andExpect(jsonPath("$.data.routeRuleCount").value(2));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.bruce.observability.controller;
|
||||
|
||||
import com.bruce.common.handler.GlobalExceptionHandler;
|
||||
import com.bruce.observability.service.IObservabilityExportService;
|
||||
import com.bruce.observability.service.IObservabilityRunService;
|
||||
import com.bruce.observability.service.IObservabilityTraceService;
|
||||
import com.bruce.observability.vo.ObservabilityTraceVO;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
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;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
/**
|
||||
* 验证运行观测 Trace 接口的路径参数绑定和返回结构。
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class ObservabilityTraceControllerTests {
|
||||
|
||||
private MockMvc mockMvc;
|
||||
|
||||
@Mock
|
||||
private IObservabilityRunService observabilityRunService;
|
||||
|
||||
@Mock
|
||||
private IObservabilityTraceService observabilityTraceService;
|
||||
|
||||
@Mock
|
||||
private IObservabilityExportService observabilityExportService;
|
||||
|
||||
@InjectMocks
|
||||
private ObservabilityTraceController observabilityTraceController;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
mockMvc = MockMvcBuilders.standaloneSetup(observabilityTraceController)
|
||||
.setControllerAdvice(new GlobalExceptionHandler())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
void traceShouldReturnStructuredTraceView() throws Exception {
|
||||
ObservabilityTraceVO trace = new ObservabilityTraceVO();
|
||||
trace.setRequestId("req-1001");
|
||||
trace.setWorkflowStatus("SUCCESS");
|
||||
trace.setModelCallCount(2);
|
||||
trace.setEstimatedCost(BigDecimal.valueOf(0.18));
|
||||
|
||||
when(observabilityTraceService.getTrace("req-1001")).thenReturn(trace);
|
||||
|
||||
mockMvc.perform(get("/api/observability/runs/req-1001"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.resultcode").value("0"))
|
||||
.andExpect(jsonPath("$.data.requestId").value("req-1001"))
|
||||
.andExpect(jsonPath("$.data.workflowStatus").value("SUCCESS"))
|
||||
.andExpect(jsonPath("$.data.modelCallCount").value(2));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.bruce.skill.controller;
|
||||
|
||||
import com.bruce.common.handler.GlobalExceptionHandler;
|
||||
import com.bruce.skill.service.ISkillVersionService;
|
||||
import com.bruce.skill.service.ISkillWorkspaceService;
|
||||
import com.bruce.skill.vo.SkillWorkspaceVO;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
|
||||
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;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
/**
|
||||
* 验证 Skill 工作台详情接口的基础返回结构。
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class SkillWorkspaceControllerTests {
|
||||
|
||||
private MockMvc mockMvc;
|
||||
|
||||
@Mock
|
||||
private ISkillWorkspaceService skillWorkspaceService;
|
||||
|
||||
@Mock
|
||||
private ISkillVersionService skillVersionService;
|
||||
|
||||
@InjectMocks
|
||||
private SkillWorkspaceController skillWorkspaceController;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
mockMvc = MockMvcBuilders.standaloneSetup(skillWorkspaceController)
|
||||
.setControllerAdvice(new GlobalExceptionHandler())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
void detailShouldReturnStructuredWorkspaceView() throws Exception {
|
||||
SkillWorkspaceVO workspace = new SkillWorkspaceVO();
|
||||
workspace.setSkillId(401L);
|
||||
workspace.setSkillCode("resume_extract");
|
||||
workspace.setSkillName("简历抽取");
|
||||
workspace.setStatus("PUBLISHED");
|
||||
|
||||
when(skillWorkspaceService.getWorkspace("resume_extract")).thenReturn(workspace);
|
||||
|
||||
mockMvc.perform(get("/api/skills/resume_extract"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.resultcode").value("0"))
|
||||
.andExpect(jsonPath("$.data.skillId").value(401))
|
||||
.andExpect(jsonPath("$.data.skillCode").value("resume_extract"))
|
||||
.andExpect(jsonPath("$.data.status").value("PUBLISHED"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.bruce.workflow.controller;
|
||||
|
||||
import com.bruce.common.handler.GlobalExceptionHandler;
|
||||
import com.bruce.workflow.service.IWorkflowWorkspaceService;
|
||||
import com.bruce.workflow.vo.WorkflowWorkspaceVO;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.springframework.test.web.servlet.MockMvc;
|
||||
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||
|
||||
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;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
/**
|
||||
* 验证 Workflow 工作台接口的查询参数绑定和返回结构。
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class WorkflowWorkspaceControllerTests {
|
||||
|
||||
private MockMvc mockMvc;
|
||||
|
||||
@Mock
|
||||
private IWorkflowWorkspaceService workflowWorkspaceService;
|
||||
|
||||
@InjectMocks
|
||||
private WorkflowWorkspaceController workflowWorkspaceController;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
mockMvc = MockMvcBuilders.standaloneSetup(workflowWorkspaceController)
|
||||
.setControllerAdvice(new GlobalExceptionHandler())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
void detailShouldReturnStructuredWorkspaceView() throws Exception {
|
||||
WorkflowWorkspaceVO workspace = new WorkflowWorkspaceVO();
|
||||
workspace.setProjectId(101L);
|
||||
workspace.setProjectCode("studio");
|
||||
workspace.setWorkflowId(201L);
|
||||
workspace.setWorkflowCode("workflow-support-rag");
|
||||
workspace.setWorkflowName("合同知识召回");
|
||||
|
||||
when(workflowWorkspaceService.getWorkspace(101L, 201L)).thenReturn(workspace);
|
||||
|
||||
mockMvc.perform(get("/api/workflow-workspace/detail")
|
||||
.param("projectId", "101")
|
||||
.param("workflowId", "201"))
|
||||
.andExpect(status().isOk())
|
||||
.andExpect(jsonPath("$.resultcode").value("0"))
|
||||
.andExpect(jsonPath("$.data.projectId").value(101))
|
||||
.andExpect(jsonPath("$.data.workflowCode").value("workflow-support-rag"))
|
||||
.andExpect(jsonPath("$.data.workflowName").value("合同知识召回"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user