Merge remote-tracking branch 'base-version/main' into dev
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package com.zt.plat.module.system.service.integration.iwork.impl;
|
||||
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkOrgQueryReqVO;
|
||||
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkOrgRespVO;
|
||||
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrSubcompanyPageRespVO;
|
||||
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkHrSyncRespVO;
|
||||
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkOrgSyncReqVO;
|
||||
import com.zt.plat.module.system.controller.admin.integration.iwork.vo.IWorkSubcompanyQueryReqVO;
|
||||
import com.zt.plat.module.system.framework.integration.iwork.config.IWorkProperties;
|
||||
import com.zt.plat.module.system.service.integration.iwork.IWorkOrgRestService;
|
||||
import okhttp3.mockwebserver.MockResponse;
|
||||
@@ -20,7 +22,6 @@ import java.time.Clock;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -32,6 +33,7 @@ class IWorkOrgRestServiceImplTest {
|
||||
private IWorkOrgRestService service;
|
||||
private IWorkProperties properties;
|
||||
private Clock fixedClock;
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() throws Exception {
|
||||
@@ -40,7 +42,8 @@ class IWorkOrgRestServiceImplTest {
|
||||
|
||||
properties = buildProperties();
|
||||
fixedClock = Clock.fixed(Instant.ofEpochMilli(1_672_531_200_000L), ZoneOffset.UTC);
|
||||
service = new IWorkOrgRestServiceImpl(properties, new ObjectMapper(), fixedClock);
|
||||
objectMapper = new ObjectMapper();
|
||||
service = new IWorkOrgRestServiceImpl(properties, objectMapper, fixedClock);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
@@ -50,41 +53,46 @@ class IWorkOrgRestServiceImplTest {
|
||||
|
||||
@Test
|
||||
void shouldListSubcompanies() throws Exception {
|
||||
mockWebServer.enqueue(jsonResponse("{\"code\":\"1\",\"data\":{\"page\":1}}"));
|
||||
mockWebServer.enqueue(jsonResponse("{\"code\":\"1\",\"data\":{\"totalSize\":1,\"totalPage\":1,\"pageSize\":10,\"pageNumber\":1,\"dataList\":[{\"subcompanyid1\":4,\"subcompanyname\":\"总部\"}]}}"));
|
||||
|
||||
IWorkOrgQueryReqVO reqVO = new IWorkOrgQueryReqVO();
|
||||
IWorkSubcompanyQueryReqVO reqVO = new IWorkSubcompanyQueryReqVO();
|
||||
reqVO.setParams(Map.of("curpage", 1));
|
||||
IWorkOrgRespVO respVO = service.listSubcompanies(reqVO);
|
||||
IWorkHrSubcompanyPageRespVO respVO = service.listSubcompanies(reqVO);
|
||||
|
||||
assertThat(respVO.isSuccess()).isTrue();
|
||||
assertThat(respVO.getPayload()).containsEntry("page", 1);
|
||||
assertThat(respVO.getTotalSize()).isEqualTo(1);
|
||||
assertThat(respVO.getDataList()).hasSize(1);
|
||||
assertThat(respVO.getDataList().get(0).getSubcompanyname()).isEqualTo("总部");
|
||||
|
||||
RecordedRequest request = mockWebServer.takeRequest();
|
||||
assertThat(request.getPath()).isEqualTo(properties.getOrg().getPaths().getSubcompanyPage());
|
||||
String decoded = URLDecoder.decode(request.getBody().readUtf8(), StandardCharsets.UTF_8);
|
||||
assertThat(decoded).contains("params={\"curpage\":1}");
|
||||
String tokenJson = extractField(decoded, "token");
|
||||
assertThat(tokenJson).isNotBlank();
|
||||
assertThat(tokenJson).contains("\"ts\":\"1672531200000\"");
|
||||
String expectedKey = DigestUtils.md5DigestAsHex("test-seed1672531200000".getBytes(StandardCharsets.UTF_8)).toUpperCase();
|
||||
assertThat(tokenJson).contains("\"key\":\"" + expectedKey + "\"");
|
||||
JsonNode bodyNode = objectMapper.readTree(decoded);
|
||||
assertThat(bodyNode.path("params").path("curpage").asInt()).isEqualTo(1);
|
||||
JsonNode tokenNode = bodyNode.path("token");
|
||||
assertThat(tokenNode.path("ts").asText()).isEqualTo("1672531200000");
|
||||
String expectedKey = DigestUtils.md5DigestAsHex("test-seed1672531200000".getBytes(StandardCharsets.UTF_8)).toUpperCase();
|
||||
assertThat(tokenNode.path("key").asText()).isEqualTo(expectedKey);
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldSyncDepartments() throws Exception {
|
||||
mockWebServer.enqueue(jsonResponse("{\"code\":\"1\",\"result\":{}}"));
|
||||
mockWebServer.enqueue(jsonResponse("{\"code\":\"1\",\"result\":[{\"@action\":\"add\",\"code\":\"demo\",\"result\":\"success\"}]}"));
|
||||
|
||||
IWorkOrgSyncReqVO reqVO = new IWorkOrgSyncReqVO();
|
||||
reqVO.setData(List.of(Map.of("@action", "add", "code", "demo")));
|
||||
IWorkOrgRespVO respVO = service.syncDepartments(reqVO);
|
||||
IWorkHrSyncRespVO respVO = service.syncDepartments(reqVO);
|
||||
|
||||
assertThat(respVO.isSuccess()).isTrue();
|
||||
assertThat(respVO.getPayload()).containsKey("result");
|
||||
assertThat(respVO.getResult()).hasSize(1);
|
||||
assertThat(respVO.getResult().get(0).getCode()).isEqualTo("demo");
|
||||
|
||||
RecordedRequest request = mockWebServer.takeRequest();
|
||||
assertThat(request.getPath()).isEqualTo(properties.getOrg().getPaths().getSyncDepartment());
|
||||
String decoded = URLDecoder.decode(request.getBody().readUtf8(), StandardCharsets.UTF_8);
|
||||
assertThat(decoded).contains("data=[{\"@action\":\"add\",\"code\":\"demo\"}]");
|
||||
JsonNode bodyNode = objectMapper.readTree(decoded);
|
||||
assertThat(bodyNode.path("data").isArray()).isTrue();
|
||||
assertThat(bodyNode.path("data").get(0).path("code").asText()).isEqualTo("demo");
|
||||
}
|
||||
|
||||
private MockResponse jsonResponse(String body) {
|
||||
@@ -93,14 +101,6 @@ class IWorkOrgRestServiceImplTest {
|
||||
.setBody(body);
|
||||
}
|
||||
|
||||
private String extractField(String decoded, String key) {
|
||||
return Arrays.stream(decoded.split("&"))
|
||||
.filter(part -> part.startsWith(key + "="))
|
||||
.map(part -> part.substring(key.length() + 1))
|
||||
.findFirst()
|
||||
.orElse("");
|
||||
}
|
||||
|
||||
private IWorkProperties buildProperties() {
|
||||
IWorkProperties properties = new IWorkProperties();
|
||||
properties.setBaseUrl(mockWebServer.url("/").toString());
|
||||
|
||||
Reference in New Issue
Block a user