package jnpf.bizcommon.onlyoffice.controller; import jnpf.base.ActionResult; import jnpf.bizcommon.onlyoffice.service.impl.OnlyOfficeTemplatePublishFenceService; import jnpf.util.context.SpringContext; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.support.StaticApplicationContext; import java.util.concurrent.atomic.AtomicInteger; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class OnlyOfficeTemplatePublishFenceControllerTest { @BeforeClass public static void setUpSpringContext() { SpringContext.setApplicationContext(new StaticApplicationContext()); } @Test public void acquireAndReleaseRequireSameTokenBeforeMutatingSession() { AtomicInteger checks = new AtomicInteger(); OnlyOfficeTemplatePublishFenceService service = mock(OnlyOfficeTemplatePublishFenceService.class); when(service.acquire("tenant-1", "template-1", "template.docx", "annex")) .thenReturn("token-1"); when(service.release("tenant-1", "template-1", "template.docx", "annex", "token-1")) .thenReturn(true); OnlyOfficeTemplatePublishFenceController controller = new OnlyOfficeTemplatePublishFenceController(checks::incrementAndGet, service); ActionResult acquire = controller.acquire( "tenant-1", "template-1", "template.docx", "annex"); ActionResult release = controller.release( "tenant-1", "template-1", "template.docx", "annex", "token-1"); assertEquals("token-1", acquire.getData()); assertTrue(release.getData()); assertEquals(2, checks.get()); verify(service).acquire("tenant-1", "template-1", "template.docx", "annex"); verify(service).release("tenant-1", "template-1", "template.docx", "annex", "token-1"); } }