Simplify mocking of resource links even further

This commit is contained in:
René Pfeuffer
2018-07-04 10:57:34 +02:00
parent 6043b093da
commit 397cf012a1
8 changed files with 25 additions and 37 deletions

View File

@@ -48,8 +48,7 @@ public class GroupRootResourceTest {
private Dispatcher dispatcher = MockDispatcherFactory.createDispatcher(); private Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
@Mock private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(URI.create("/"));
private ResourceLinks resourceLinks;
@Mock @Mock
private GroupManager groupManager; private GroupManager groupManager;
@@ -70,8 +69,6 @@ public class GroupRootResourceTest {
when(groupManager.getPage(any(), eq(0), eq(10))).thenReturn(new PageResult<>(singletonList(group), 1)); when(groupManager.getPage(any(), eq(0), eq(10))).thenReturn(new PageResult<>(singletonList(group), 1));
when(groupManager.get("admin")).thenReturn(group); when(groupManager.get("admin")).thenReturn(group);
ResourceLinksMock.initMock(resourceLinks, URI.create("/"));
GroupCollectionToDtoMapper groupCollectionToDtoMapper = new GroupCollectionToDtoMapper(groupToDtoMapper, resourceLinks); GroupCollectionToDtoMapper groupCollectionToDtoMapper = new GroupCollectionToDtoMapper(groupToDtoMapper, resourceLinks);
GroupCollectionResource groupCollectionResource = new GroupCollectionResource(groupManager, dtoToGroupMapper, groupCollectionToDtoMapper, resourceLinks); GroupCollectionResource groupCollectionResource = new GroupCollectionResource(groupManager, dtoToGroupMapper, groupCollectionToDtoMapper, resourceLinks);
GroupResource groupResource = new GroupResource(groupManager, groupToDtoMapper, dtoToGroupMapper); GroupResource groupResource = new GroupResource(groupManager, groupToDtoMapper, dtoToGroupMapper);

View File

@@ -8,7 +8,6 @@ import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock;
import sonia.scm.group.Group; import sonia.scm.group.Group;
import java.net.URI; import java.net.URI;
@@ -23,8 +22,8 @@ import static org.mockito.MockitoAnnotations.initMocks;
public class GroupToGroupDtoMapperTest { public class GroupToGroupDtoMapperTest {
@Mock private final URI baseUri = URI.create("http://example.com/base/");
private ResourceLinks resourceLinks; private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
@InjectMocks @InjectMocks
private GroupToGroupDtoMapperImpl mapper; private GroupToGroupDtoMapperImpl mapper;
@@ -37,12 +36,8 @@ public class GroupToGroupDtoMapperTest {
@Before @Before
public void init() throws URISyntaxException { public void init() throws URISyntaxException {
initMocks(this); initMocks(this);
URI baseUri = new URI("http://example.com/base/");
expectedBaseUri = baseUri.resolve(GroupRootResource.GROUPS_PATH_V2 + "/"); expectedBaseUri = baseUri.resolve(GroupRootResource.GROUPS_PATH_V2 + "/");
subjectThreadState.bind(); subjectThreadState.bind();
ResourceLinksMock.initMock(resourceLinks, baseUri);
ThreadContext.bind(subject); ThreadContext.bind(subject);
} }

View File

@@ -38,15 +38,16 @@ public class RepositoryRootResourceTest {
@Mock @Mock
private RepositoryManager repositoryManager; private RepositoryManager repositoryManager;
@Mock
private ResourceLinks resourceLinks; private final URI baseUri = URI.create("/");
private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
@InjectMocks @InjectMocks
private RepositoryToRepositoryDtoMapperImpl repositoryToDtoMapper; private RepositoryToRepositoryDtoMapperImpl repositoryToDtoMapper;
@Before @Before
public void prepareEnvironment() { public void prepareEnvironment() {
initMocks(this); initMocks(this);
ResourceLinksMock.initMock(resourceLinks, URI.create("/"));
RepositoryResource repositoryResource = new RepositoryResource(repositoryToDtoMapper, repositoryManager, null, null); RepositoryResource repositoryResource = new RepositoryResource(repositoryToDtoMapper, repositoryManager, null, null);
RepositoryRootResource repositoryRootResource = new RepositoryRootResource(MockProvider.of(repositoryResource)); RepositoryRootResource repositoryRootResource = new RepositoryRootResource(MockProvider.of(repositoryResource));
dispatcher.getRegistry().addSingletonResource(repositoryRootResource); dispatcher.getRegistry().addSingletonResource(repositoryRootResource);

View File

@@ -4,17 +4,16 @@ import org.apache.shiro.subject.Subject;
import org.apache.shiro.subject.support.SubjectThreadState; import org.apache.shiro.subject.support.SubjectThreadState;
import org.apache.shiro.util.ThreadContext; import org.apache.shiro.util.ThreadContext;
import org.apache.shiro.util.ThreadState; import org.apache.shiro.util.ThreadState;
import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock;
import sonia.scm.repository.HealthCheckFailure; import sonia.scm.repository.HealthCheckFailure;
import sonia.scm.repository.Permission; import sonia.scm.repository.Permission;
import sonia.scm.repository.PermissionType; import sonia.scm.repository.PermissionType;
import sonia.scm.repository.Repository; import sonia.scm.repository.Repository;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException;
import static java.util.Arrays.asList; import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@@ -25,8 +24,8 @@ import static org.mockito.MockitoAnnotations.initMocks;
public class RepositoryToRepositoryDtoMapperTest { public class RepositoryToRepositoryDtoMapperTest {
@Mock private final URI baseUri = URI.create("http://example.com/base/");
private ResourceLinks resourceLinks; private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
@InjectMocks @InjectMocks
private RepositoryToRepositoryDtoMapperImpl mapper; private RepositoryToRepositoryDtoMapperImpl mapper;
@@ -37,15 +36,18 @@ public class RepositoryToRepositoryDtoMapperTest {
private URI expectedBaseUri; private URI expectedBaseUri;
@Before @Before
public void init() throws URISyntaxException { public void init() {
initMocks(this); initMocks(this);
URI baseUri = new URI("http://example.com/base/");
expectedBaseUri = baseUri.resolve(RepositoryRootResource.REPOSITORIES_PATH_V2 + "/"); expectedBaseUri = baseUri.resolve(RepositoryRootResource.REPOSITORIES_PATH_V2 + "/");
subjectThreadState.bind(); subjectThreadState.bind();
ResourceLinksMock.initMock(resourceLinks, baseUri);
ThreadContext.bind(subject); ThreadContext.bind(subject);
} }
@After
public void cleanup() {
ThreadContext.unbindSubject();
}
@Test @Test
public void shouldMapSimpleProperties() { public void shouldMapSimpleProperties() {
RepositoryDto dto = mapper.map(createTestRepository()); RepositoryDto dto = mapper.map(createTestRepository());

View File

@@ -7,7 +7,8 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
public class ResourceLinksMock { public class ResourceLinksMock {
public static void initMock(ResourceLinks resourceLinks, URI baseUri) { public static ResourceLinks createMock(URI baseUri) {
ResourceLinks resourceLinks = mock(ResourceLinks.class);
UriInfo uriInfo = mock(UriInfo.class); UriInfo uriInfo = mock(UriInfo.class);
when(uriInfo.getBaseUri()).thenReturn(baseUri); when(uriInfo.getBaseUri()).thenReturn(baseUri);
@@ -19,5 +20,6 @@ public class ResourceLinksMock {
when(resourceLinks.repository()).thenReturn(new ResourceLinks.RepositoryLinks(uriInfo)); when(resourceLinks.repository()).thenReturn(new ResourceLinks.RepositoryLinks(uriInfo));
when(resourceLinks.tagCollection()).thenReturn(new ResourceLinks.TagCollectionLinks(uriInfo)); when(resourceLinks.tagCollection()).thenReturn(new ResourceLinks.TagCollectionLinks(uriInfo));
when(resourceLinks.branchCollection()).thenReturn(new ResourceLinks.BranchCollectionLinks(uriInfo)); when(resourceLinks.branchCollection()).thenReturn(new ResourceLinks.BranchCollectionLinks(uriInfo));
return resourceLinks;
} }
} }

View File

@@ -27,8 +27,8 @@ import static sonia.scm.PageResult.createPage;
public class UserCollectionToDtoMapperTest { public class UserCollectionToDtoMapperTest {
@Mock private final URI baseUri = URI.create("http://example.com/base/");
private ResourceLinks resourceLinks; private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
@Mock @Mock
private UserToUserDtoMapper userToDtoMapper; private UserToUserDtoMapper userToDtoMapper;
@Mock @Mock
@@ -44,9 +44,7 @@ public class UserCollectionToDtoMapperTest {
@Before @Before
public void init() throws URISyntaxException { public void init() throws URISyntaxException {
initMocks(this); initMocks(this);
URI baseUri = new URI("http://example.com/base/");
expectedBaseUri = baseUri.resolve(UserRootResource.USERS_PATH_V2 + "/"); expectedBaseUri = baseUri.resolve(UserRootResource.USERS_PATH_V2 + "/");
ResourceLinksMock.initMock(resourceLinks, baseUri);
subjectThreadState.bind(); subjectThreadState.bind();
ThreadContext.bind(subject); ThreadContext.bind(subject);
} }

View File

@@ -50,8 +50,7 @@ public class UserRootResourceTest {
private Dispatcher dispatcher = MockDispatcherFactory.createDispatcher(); private Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
@Mock private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(URI.create("/"));
private ResourceLinks resourceLinks;
@Mock @Mock
private PasswordService passwordService; private PasswordService passwordService;
@@ -72,8 +71,6 @@ public class UserRootResourceTest {
doNothing().when(userManager).modify(userCaptor.capture()); doNothing().when(userManager).modify(userCaptor.capture());
doNothing().when(userManager).delete(userCaptor.capture()); doNothing().when(userManager).delete(userCaptor.capture());
ResourceLinksMock.initMock(resourceLinks, URI.create("/"));
UserCollectionToDtoMapper userCollectionToDtoMapper = new UserCollectionToDtoMapper(userToDtoMapper, resourceLinks); UserCollectionToDtoMapper userCollectionToDtoMapper = new UserCollectionToDtoMapper(userToDtoMapper, resourceLinks);
UserCollectionResource userCollectionResource = new UserCollectionResource(userManager, dtoToUserMapper, UserCollectionResource userCollectionResource = new UserCollectionResource(userManager, dtoToUserMapper,
userCollectionToDtoMapper, resourceLinks); userCollectionToDtoMapper, resourceLinks);

View File

@@ -8,12 +8,10 @@ import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock;
import sonia.scm.api.rest.resources.UserResource; import sonia.scm.api.rest.resources.UserResource;
import sonia.scm.user.User; import sonia.scm.user.User;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException;
import java.time.Instant; import java.time.Instant;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
@@ -24,8 +22,8 @@ import static org.mockito.MockitoAnnotations.initMocks;
public class UserToUserDtoMapperTest { public class UserToUserDtoMapperTest {
@Mock private final URI baseUri = URI.create("http://example.com/base/");
private ResourceLinks resourceLinks; private final ResourceLinks resourceLinks = ResourceLinksMock.createMock(baseUri);
@InjectMocks @InjectMocks
private UserToUserDtoMapperImpl mapper; private UserToUserDtoMapperImpl mapper;
@@ -36,12 +34,10 @@ public class UserToUserDtoMapperTest {
private URI expectedBaseUri; private URI expectedBaseUri;
@Before @Before
public void init() throws URISyntaxException { public void init() {
initMocks(this); initMocks(this);
URI baseUri = new URI("http://example.com/base/");
expectedBaseUri = baseUri.resolve(UserRootResource.USERS_PATH_V2 + "/"); expectedBaseUri = baseUri.resolve(UserRootResource.USERS_PATH_V2 + "/");
subjectThreadState.bind(); subjectThreadState.bind();
ResourceLinksMock.initMock(resourceLinks, baseUri);
ThreadContext.bind(subject); ThreadContext.bind(subject);
} }