刘光辉
3 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package jnpf.controller;
 
import com.fasterxml.jackson.databind.ObjectMapper;
import cn.dev33.satoken.same.SaSameUtil;
import org.mockito.MockedStatic;
import org.junit.After;
import jnpf.dmsEntity.storage.approval.DmsApprovedItem;
import jnpf.dmsEntity.storage.approval.DmsApprovedBatch;
import jnpf.dmsEntity.storage.form.DmsApprovedRegistrationForm;
import jnpf.fileStorage.dms.*;
import jnpf.i18n.config.I18nProperties;
import jnpf.util.context.SpringContext;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.MessageSource;
import org.springframework.context.support.StaticMessageSource;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.UUID;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
public class DmsWorkflowRegistrationHttpTest {
    DmsWorkflowFileCreateService register = mock(DmsWorkflowFileCreateService.class);
    DmsWorkflowFileActivateService activate = mock(DmsWorkflowFileActivateService.class);
    MockMvc mvc;
    MockedStatic<SaSameUtil> token;
    @After public void closeToken() { if (token != null) token.close(); }
    @Before public void setup() {
        token = mockStatic(SaSameUtil.class, withSettings().mockMaker(org.mockito.MockMakers.INLINE));
        ApplicationContext context = mock(ApplicationContext.class);
        when(context.getBean(MessageSource.class)).thenReturn(new StaticMessageSource());
        when(context.getBean(I18nProperties.class)).thenReturn(new I18nProperties());
        SpringContext.setApplicationContext(context);
        mvc = MockMvcBuilders.standaloneSetup(new DmsFileUploadController(mock(DmsFileStorageService.class),
                register, activate, mock(DmsWorkflowDownloadAuthorizeService.class), mock(DmsWorkflowPrintAuthorizeService.class))).build();
    }
    @Test public void originalRegisterRouteAcceptsDmsPushWithProgressIdAndFullFileSet() throws Exception {
        DmsApprovedBatch b = new DmsApprovedBatch(); b.setId(UUID.randomUUID()); b.setStatus("WAITING");
        b.setTenantId("tenant"); b.setLeaseToken(UUID.randomUUID().toString());
        b.setFlowId("flow"); b.setTaskId("task"); b.setAuditType("xinzeng_shenhe"); b.setSourceDigest("digest");
        DmsApprovedItem item = new DmsApprovedItem(); item.setSourceKey("main");
        b.setItems(java.util.Collections.singletonList(item));
        when(register.process(any(), eq("sign"))).thenReturn(b);
        String body = mvc.perform(post("/Dms/workflowFileRegister").header("X-DMS-Service-Id", "jnpf-dms").header("X-Audit-Biz-Sign", "sign")
                .contentType(MediaType.APPLICATION_JSON).content(new ObjectMapper().writeValueAsString(DmsApprovedRegistrationForm.from(b))))
                .andExpect(status().isOk()).andReturn().getResponse().getContentAsString();
        assertEquals("WAITING", new ObjectMapper().readTree(body).path("data").path("status").asText());
        org.mockito.ArgumentCaptor<DmsApprovedRegistrationForm> f = org.mockito.ArgumentCaptor.forClass(DmsApprovedRegistrationForm.class);
        verify(register).process(f.capture(), eq("sign")); assertEquals("task", f.getValue().getTaskId());
        assertEquals(b.getId(), f.getValue().getBatchId());
        assertEquals(b.getTenantId(), f.getValue().getTenantId());
        assertEquals(b.getLeaseToken(), f.getValue().getAttemptToken());
        token.verify(SaSameUtil::checkCurrentRequestToken);
        verifyNoInteractions(activate);
    }
    @Test public void obsoleteFileArrayMissingIdentityAndReviewAreRejected() throws Exception {
        for (String body : new String[]{"[]", "{}", "{\"sourceId\":\"flow\",\"taskId\":\"task\",\"auditType\":\"fushen\"}"}) {
            mvc.perform(post("/Dms/workflowFileRegister").header("X-DMS-Service-Id", "jnpf-dms").contentType(MediaType.APPLICATION_JSON).content(body))
                    .andExpect(status().isBadRequest());
        }
        verifyNoInteractions(register, activate);
    }
    @Test public void noAdditionalContentRouteIsExposed() throws Exception {
        mvc.perform(post("/Internal/dms/approved-content").contentType(MediaType.APPLICATION_JSON).content("{}"))
                .andExpect(status().isNotFound());
        verifyNoInteractions(register, activate);
    }
}