Files
flow-center-service/src/test/java/com/yunhai/flowcenter/service/OapiFlowEmbedTaskUrlTest.java
T

78 lines
3.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.yunhai.flowcenter.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yunhai.flowcenter.engine.AssigneeResolver;
import com.yunhai.flowcenter.engine.FlowEngine;
import com.yunhai.flowcenter.model.OapiModels;
import com.yunhai.flowcenter.repository.FlwCallbackRegRepository;
import com.yunhai.flowcenter.repository.FlwCcRepository;
import com.yunhai.flowcenter.repository.FlwDefRepository;
import com.yunhai.flowcenter.repository.FlwInstanceRepository;
import com.yunhai.flowcenter.repository.FlwTaskRepository;
import com.yunhai.platform.apistd.BizException;
import com.yunhai.platform.openapi.base.OpenApiAppClient;
import com.yunhai.platform.openapi.base.OpenApiUserClient;
import com.yunhai.platform.utils.exception.ErrorCode;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.beans.factory.ObjectProvider;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* F9 mode=task 直跳任务办理页(P6.2):pageUrl = front-url + #/task/{taskId}(无 token);
* taskId 缺失 PARAM_ERROR;front-url 未配置沿用 fail-fast 纪律(先于一切定位)。
*/
@DisplayName("embed/url mode=task(F9 任务页直跳)")
class OapiFlowEmbedTaskUrlTest {
private OapiFlowService service;
@BeforeEach
void setUp() {
service = new OapiFlowService(Mockito.mock(FlwDefRepository.class),
Mockito.mock(FlwInstanceRepository.class), Mockito.mock(FlwTaskRepository.class),
Mockito.mock(FlwCcRepository.class), Mockito.mock(FlwCallbackRegRepository.class),
Mockito.mock(FlowInstanceService.class), Mockito.mock(FlowTaskService.class),
Mockito.mock(FlowEngine.class), Mockito.mock(AssigneeResolver.class),
new ObjectMapper(), Mockito.mock(OpenApiUserClient.class),
Mockito.mock(OpenApiAppClient.class), Mockito.mock(DiagramTokenService.class),
Mockito.mock(ObjectProvider.class));
}
private void frontUrl(String value) {
org.springframework.test.util.ReflectionTestUtils.setField(service, "embedFrontUrl", value);
}
@Test
void taskModeIssuesCenterTaskPageUrlWithoutToken() {
frontUrl("http://fc.local/flow-center");
OapiModels.EmbedUrlVo vo = service.embedUrl(1L, null, null, null, "task", 88L);
assertEquals("http://fc.local/flow-center/#/task/88", vo.getPageUrl(),
"pageUrl = front-url(补尾斜杠)+ #/task/{taskId}");
assertEquals(0L, vo.getExpiresIn(), "无 token 模式无有效期,expiresIn=0");
}
@Test
void taskModeWithoutTaskIdRejected() {
frontUrl("http://fc.local/flow-center");
BizException e = assertThrows(BizException.class,
() -> service.embedUrl(1L, null, null, null, "task", null));
assertEquals(ErrorCode.PARAM_ERROR, e.getErrorCode(), "缺 taskId 是参数错误");
assertTrue(e.getMessage().contains("taskId"), "报错须点名缺失参数");
}
@Test
void missingFrontUrlStillFailsFastEvenForTaskMode() {
frontUrl(" ");
BizException e = assertThrows(BizException.class,
() -> service.embedUrl(1L, null, null, null, "task", 88L));
assertEquals(ErrorCode.INTERNAL_SERVER_ERROR, e.getErrorCode(),
"配置缺失优先于 mode 分支:宁可拒绝也不发打不开的地址");
}
}