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 body = new LinkedHashMap<>(); body.put("biz_sign", "sign-1"); body.put("review_sign", Arrays.asList("sign-2", " ")); List 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 signs = DmsAuditRequestSignResolver.resolve(form); assertEquals(Arrays.asList("sign-review", "sign-primary"), Arrays.asList( signs.get(0).getSignId(), signs.get(1).getSignId())); } }