package jnpf.dmsController.permission; import cn.dev33.satoken.same.SaSameUtil; import jnpf.dmsController.DmsControllerTestSupport; import jnpf.dmsPermission.DmsTrustedServiceGuard; import jnpf.dmsService.expiry.DmsFileExpiryJob; import org.junit.jupiter.api.Test; import org.mockito.InOrder; import org.mockito.MockedStatic; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; class DmsInternalExpiryControllerTest extends DmsControllerTestSupport { @Test void verifiesServiceTokenAndAllowlistBeforeRunning() { DmsTrustedServiceGuard guard = mock(DmsTrustedServiceGuard.class); DmsFileExpiryJob job = mock(DmsFileExpiryJob.class); DmsFileExpiryJob.Result result = new DmsFileExpiryJob.Result(0, 0, 0, 0, 0); when(job.run()).thenReturn(result); try (MockedStatic same = mockStatic(SaSameUtil.class)) { assertSame(result, new DmsInternalExpiryController(guard, job).run("jnpf-flowable").getData()); same.verify(SaSameUtil::checkCurrentRequestToken); InOrder order = inOrder(guard, job); order.verify(guard).requireAllowed("jnpf-flowable"); order.verify(job).run(); } } @Test void deniedCallerCannotStartRecovery() { DmsTrustedServiceGuard guard = mock(DmsTrustedServiceGuard.class); DmsFileExpiryJob job = mock(DmsFileExpiryJob.class); when(guard.requireAllowed("unknown")).thenThrow(new IllegalArgumentException("denied")); try (MockedStatic same = mockStatic(SaSameUtil.class)) { assertThrows(IllegalArgumentException.class, () -> new DmsInternalExpiryController(guard, job).run("unknown")); verifyNoInteractions(job); } } }