package jnpf.dmsIntegration.audit;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import jnpf.audit.model.AuditRelatedSignDTO;
|
import jnpf.dmsEntity.permission.form.FolderRenameForm;
|
import jnpf.dmsEntity.permission.form.PermissionGrantBatchForm;
|
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.mock.web.MockHttpServletRequest;
|
import org.springframework.web.context.request.RequestContextHolder;
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
import java.util.Arrays;
|
import java.util.LinkedHashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
class DmsAuditRequestSignResolverTest {
|
|
@AfterEach
|
void clearRequest() {
|
RequestContextHolder.resetRequestAttributes();
|
}
|
|
@Test
|
void collectsBodyAndQuerySignFieldsAndDeduplicatesIds() {
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
request.addHeader("X-Audit-Biz-Sign", " sign-1 ");
|
request.addParameter("delete_sign", " sign-2 ");
|
request.addParameter("ignored", "not-a-sign");
|
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
|
Map<String, Object> body = new LinkedHashMap<>();
|
body.put("biz_sign", "sign-1");
|
body.put("review_sign", Arrays.asList("sign-2", " "));
|
|
List<AuditRelatedSignDTO> signs = DmsAuditRequestSignResolver.resolve(body);
|
|
assertEquals(Arrays.asList("sign-1", "sign-2"), Arrays.asList(
|
signs.get(0).getSignId(), signs.get(1).getSignId()));
|
assertEquals("PRIMARY", signs.get(0).getRole());
|
}
|
|
@Test
|
void bindsFolderBizSignWithoutAddingItToAuditParameters() throws Exception {
|
FolderRenameForm form = new ObjectMapper().readValue(
|
"{\"name\":\"报告\",\"revision\":1,\"biz_sign\":\"sign-json\",\"remark\":\"ignored\"}",
|
FolderRenameForm.class);
|
|
assertEquals("sign-json", form.getBizSign());
|
assertEquals(0, form.getAuditSignParameters().size());
|
}
|
|
@Test
|
void resolvesTypedAndDynamicPermissionSignFields() throws Exception {
|
PermissionGrantBatchForm form = new ObjectMapper().readValue(
|
"{\"biz_sign\":\"sign-primary\",\"review_sign\":\"sign-review\"}",
|
PermissionGrantBatchForm.class);
|
|
List<AuditRelatedSignDTO> signs = DmsAuditRequestSignResolver.resolve(form);
|
|
assertEquals(Arrays.asList("sign-review", "sign-primary"), Arrays.asList(
|
signs.get(0).getSignId(), signs.get(1).getSignId()));
|
}
|
}
|