package jnpf.bizcommon.onlyoffice.controller; import jnpf.base.ActionResult; import jnpf.bizcommon.onlyoffice.service.impl.OnlyOfficeRecordRevisionFenceService; 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 OnlyOfficeRecordRevisionFenceControllerTest { @BeforeClass public static void setUpSpringContext() { SpringContext.setApplicationContext(new StaticApplicationContext()); } @Test public void acquireCompleteAndReleaseRequireSameToken() { AtomicInteger checks = new AtomicInteger(); OnlyOfficeRecordRevisionFenceService service = mock(OnlyOfficeRecordRevisionFenceService.class); when(service.acquire("tenant-1", "record-1", "record.docx", "annex")) .thenReturn("token-1"); when(service.complete("tenant-1", "record-1", "record.docx", "annex", "token-1")) .thenReturn(true); when(service.release("tenant-1", "record-1", "record.docx", "annex", "token-1")) .thenReturn(true); OnlyOfficeRecordRevisionFenceController controller = new OnlyOfficeRecordRevisionFenceController(checks::incrementAndGet, service); ActionResult acquire = controller.acquire( "tenant-1", "record-1", "record.docx", "annex"); ActionResult complete = controller.complete( "tenant-1", "record-1", "record.docx", "annex", "token-1"); ActionResult release = controller.release( "tenant-1", "record-1", "record.docx", "annex", "token-1"); assertEquals("token-1", acquire.getData()); assertTrue(complete.getData()); assertTrue(release.getData()); assertEquals(3, checks.get()); verify(service).acquire("tenant-1", "record-1", "record.docx", "annex"); verify(service).complete("tenant-1", "record-1", "record.docx", "annex", "token-1"); verify(service).release("tenant-1", "record-1", "record.docx", "annex", "token-1"); } }