package com.jaspersoft.jasperserver.jaxrs.client.apiadapters.authority.roles; import com.jaspersoft.jasperserver.jaxrs.client.core.SessionStorage; import org.mockito.Mock; import org.mockito.internal.util.reflection.Whitebox; import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.testng.PowerMockTestCase; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.MockitoAnnotations.initMocks; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertSame; /** * Unit tests for {@link RolesService} */ @PrepareForTest({SingleRoleRequestAdapter.class, RolesService.class}) public class RolesServiceTest extends PowerMockTestCase { @Mock private SessionStorage sessionStorageMock; @Mock private SingleRoleRequestAdapter singleRoleRequestAdapterMock; @Mock private BatchRolesRequestAdapter batchRolesRequestAdapterMock; @BeforeMethod public void before() { initMocks(this); } @Test public void should_pass_storage_to_parent_class() { RolesService rolesService = new RolesService(sessionStorageMock); SessionStorage retrieved = rolesService.getSessionStorage(); assertSame(retrieved, sessionStorageMock); } @Test public void should_return_proper_SingleRoleRequestAdapter_instance() throws Exception { // Given PowerMockito.whenNew(SingleRoleRequestAdapter.class) .withArguments(sessionStorageMock, null, "Admin").thenReturn(singleRoleRequestAdapterMock); RolesService rolesService = new RolesService(sessionStorageMock); // When SingleRoleRequestAdapter retrieved = rolesService.roleName("Admin"); // Then assertSame(retrieved, singleRoleRequestAdapterMock); PowerMockito.verifyNew(SingleRoleRequestAdapter.class, never()).withNoArguments(); PowerMockito.verifyNew(SingleRoleRequestAdapter.class, times(1)) .withArguments(sessionStorageMock, null, "Admin"); } @Test (expectedExceptions = IllegalArgumentException.class) public void should_throw_an_exception_when_role_name_is_empty() throws Exception { // Given RolesService rolesService = new RolesService(sessionStorageMock); // When rolesService.roleName(""); // Then throw an exception } @Test public void should_return_proper_instance_of_BatchRolesRequestAdapter() throws Exception { // Given PowerMockito.whenNew(BatchRolesRequestAdapter.class) .withArguments(sessionStorageMock, "MyCoolOrg").thenReturn(batchRolesRequestAdapterMock); RolesService rolesService = new RolesService(sessionStorageMock).organization("MyCoolOrg"); // When BatchRolesRequestAdapter retrieved = rolesService.allRoles(); // Then assertSame(retrieved, batchRolesRequestAdapterMock); PowerMockito.verifyNew(BatchRolesRequestAdapter.class, never()).withNoArguments(); PowerMockito.verifyNew(BatchRolesRequestAdapter.class, times(1)) .withArguments(sessionStorageMock, "MyCoolOrg"); } @Test public void should_set_proper_field_value_to_instance() { // Given RolesService rolesService = new RolesService(sessionStorageMock); // When RolesService retrieved = rolesService.organization("MyCoolOrg"); // Then assertSame(retrieved, rolesService); assertEquals(Whitebox.getInternalState(rolesService, "organizationId"), "MyCoolOrg"); } @Test(expectedExceptions = IllegalArgumentException.class) public void should_throw_an_exception_when_arg_is_empty() { // Given RolesService rolesService = new RolesService(sessionStorageMock); // When rolesService.organization(""); // Then throw an exception } @AfterMethod public void after() { reset(sessionStorageMock, singleRoleRequestAdapterMock, batchRolesRequestAdapterMock); } }