Simplify mocking of resource links

This commit is contained in:
René Pfeuffer
2018-07-04 08:55:36 +02:00
parent 7c662ed42a
commit 6043b093da
9 changed files with 30 additions and 48 deletions

View File

@@ -20,7 +20,7 @@ class ResourceLinks {
static class GroupLinks {
private final LinkBuilder groupLinkBuilder;
private GroupLinks(UriInfo uriInfo) {
GroupLinks(UriInfo uriInfo) {
groupLinkBuilder = new LinkBuilder(uriInfo, GroupRootResource.class, GroupResource.class);
}
@@ -44,7 +44,7 @@ class ResourceLinks {
static class GroupCollectionLinks {
private final LinkBuilder collectionLinkBuilder;
private GroupCollectionLinks(UriInfo uriInfo) {
GroupCollectionLinks(UriInfo uriInfo) {
collectionLinkBuilder = new LinkBuilder(uriInfo, GroupRootResource.class, GroupCollectionResource.class);
}
@@ -64,7 +64,7 @@ class ResourceLinks {
static class UserLinks {
private final LinkBuilder userLinkBuilder;
private UserLinks(UriInfo uriInfo) {
UserLinks(UriInfo uriInfo) {
userLinkBuilder = new LinkBuilder(uriInfo, UserRootResource.class, UserResource.class);
}
@@ -88,7 +88,7 @@ class ResourceLinks {
static class UserCollectionLinks {
private final LinkBuilder collectionLinkBuilder;
private UserCollectionLinks(UriInfo uriInfo) {
UserCollectionLinks(UriInfo uriInfo) {
collectionLinkBuilder = new LinkBuilder(uriInfo, UserRootResource.class, UserCollectionResource.class);
}
@@ -108,7 +108,7 @@ class ResourceLinks {
static class RepositoryLinks {
private final LinkBuilder repositoryLinkBuilder;
private RepositoryLinks(UriInfo uriInfo) {
RepositoryLinks(UriInfo uriInfo) {
repositoryLinkBuilder = new LinkBuilder(uriInfo, RepositoryRootResource.class, RepositoryResource.class);
}
@@ -132,7 +132,7 @@ class ResourceLinks {
static class TagCollectionLinks {
private final LinkBuilder tagLinkBuilder;
private TagCollectionLinks(UriInfo uriInfo) {
TagCollectionLinks(UriInfo uriInfo) {
tagLinkBuilder = new LinkBuilder(uriInfo, RepositoryRootResource.class, RepositoryResource.class, TagRootResource.class, TagCollectionResource.class);
}
@@ -148,7 +148,7 @@ class ResourceLinks {
static class BranchCollectionLinks {
private final LinkBuilder branchLinkBuilder;
private BranchCollectionLinks(UriInfo uriInfo) {
BranchCollectionLinks(UriInfo uriInfo) {
branchLinkBuilder = new LinkBuilder(uriInfo, RepositoryRootResource.class, RepositoryResource.class, BranchRootResource.class, BranchCollectionResource.class);
}

View File

@@ -10,7 +10,6 @@ import org.jboss.resteasy.mock.MockHttpResponse;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
@@ -49,7 +48,7 @@ public class GroupRootResourceTest {
private Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@Mock
private ResourceLinks resourceLinks;
@Mock

View File

@@ -7,7 +7,6 @@ import org.apache.shiro.util.ThreadState;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import sonia.scm.group.Group;
@@ -24,7 +23,7 @@ import static org.mockito.MockitoAnnotations.initMocks;
public class GroupToGroupDtoMapperTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@Mock
private ResourceLinks resourceLinks;
@InjectMocks

View File

@@ -9,7 +9,6 @@ import org.jboss.resteasy.mock.MockHttpResponse;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import sonia.scm.repository.Repository;
@@ -39,7 +38,7 @@ public class RepositoryRootResourceTest {
@Mock
private RepositoryManager repositoryManager;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@Mock
private ResourceLinks resourceLinks;
@InjectMocks
private RepositoryToRepositoryDtoMapperImpl repositoryToDtoMapper;

View File

@@ -6,7 +6,6 @@ import org.apache.shiro.util.ThreadContext;
import org.apache.shiro.util.ThreadState;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import sonia.scm.repository.HealthCheckFailure;
@@ -26,7 +25,7 @@ import static org.mockito.MockitoAnnotations.initMocks;
public class RepositoryToRepositoryDtoMapperTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@Mock
private ResourceLinks resourceLinks;
@InjectMocks
@@ -62,7 +61,7 @@ public class RepositoryToRepositoryDtoMapperTest {
public void shouldCreateLinksForUnprivilegedUser() {
RepositoryDto dto = mapper.map(createTestRepository());
assertEquals(
"http://example.com/base/v2/groups/testspace/test",
"http://example.com/base/v2/repositories/testspace/test",
dto.getLinks().getLinkBy("self").get().getHref());
assertFalse(dto.getLinks().getLinkBy("update").isPresent());
assertFalse(dto.getLinks().getLinkBy("delete").isPresent());
@@ -73,7 +72,7 @@ public class RepositoryToRepositoryDtoMapperTest {
when(subject.isPermitted("repository:delete:1")).thenReturn(true);
RepositoryDto dto = mapper.map(createTestRepository());
assertEquals(
"http://example.com/base/v2/groups/testspace/test",
"http://example.com/base/v2/repositories/testspace/test",
dto.getLinks().getLinkBy("delete").get().getHref());
}
@@ -82,7 +81,7 @@ public class RepositoryToRepositoryDtoMapperTest {
when(subject.isPermitted("repository:modify:1")).thenReturn(true);
RepositoryDto dto = mapper.map(createTestRepository());
assertEquals(
"http://example.com/base/v2/groups/testspace/test",
"http://example.com/base/v2/repositories/testspace/test",
dto.getLinks().getLinkBy("update").get().getHref());
}
@@ -105,7 +104,7 @@ public class RepositoryToRepositoryDtoMapperTest {
public void shouldCreateTagsLink() {
RepositoryDto dto = mapper.map(createTestRepository());
assertEquals(
"http://example.com/base/v2/groups/testspace/test/tags/",
"http://example.com/base/v2/repositories/testspace/test/tags/",
dto.getLinks().getLinkBy("tags").get().getHref());
}
@@ -113,7 +112,7 @@ public class RepositoryToRepositoryDtoMapperTest {
public void shouldCreateBranchesLink() {
RepositoryDto dto = mapper.map(createTestRepository());
assertEquals(
"http://example.com/base/v2/groups/testspace/test/branches/",
"http://example.com/base/v2/repositories/testspace/test/branches/",
dto.getLinks().getLinkBy("branches").get().getHref());
}

View File

@@ -1,34 +1,23 @@
package sonia.scm.api.v2.resources;
import javax.ws.rs.core.UriInfo;
import java.net.URI;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static sonia.scm.api.v2.resources.GroupRootResource.GROUPS_PATH_V2;
import static sonia.scm.api.v2.resources.UserRootResource.USERS_PATH_V2;
public class ResourceLinksMock {
public static void initMock(ResourceLinks resourceLinks, URI baseUri) {
when(resourceLinks.user().self(anyString())).thenAnswer(invocation -> baseUri + USERS_PATH_V2 + invocation.getArguments()[0]);
when(resourceLinks.user().update(anyString())).thenAnswer(invocation -> baseUri + USERS_PATH_V2 + invocation.getArguments()[0]);
when(resourceLinks.user().delete(anyString())).thenAnswer(invocation -> baseUri + USERS_PATH_V2 + invocation.getArguments()[0]);
when(resourceLinks.userCollection().self()).thenAnswer(invocation -> baseUri + USERS_PATH_V2);
when(resourceLinks.userCollection().create()).thenAnswer(invocation -> baseUri + USERS_PATH_V2);
UriInfo uriInfo = mock(UriInfo.class);
when(uriInfo.getBaseUri()).thenReturn(baseUri);
when(resourceLinks.group().self(anyString())).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2 + invocation.getArguments()[0]);
when(resourceLinks.group().update(anyString())).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2 + invocation.getArguments()[0]);
when(resourceLinks.group().delete(anyString())).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2 + invocation.getArguments()[0]);
when(resourceLinks.groupCollection().self()).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2);
when(resourceLinks.groupCollection().create()).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2);
when(resourceLinks.repository().self(anyString(), anyString())).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2 + invocation.getArguments()[0] + "/" + invocation.getArguments()[1]);
when(resourceLinks.repository().update(anyString(), anyString())).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2 + invocation.getArguments()[0] + "/" + invocation.getArguments()[1]);
when(resourceLinks.repository().delete(anyString(), anyString())).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2 + invocation.getArguments()[0] + "/" + invocation.getArguments()[1]);
when(resourceLinks.tagCollection().self(anyString(), anyString())).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2 + invocation.getArguments()[0] + "/" + invocation.getArguments()[1] + "/tags/");
when(resourceLinks.branchCollection().self(anyString(), anyString())).thenAnswer(invocation -> baseUri + GROUPS_PATH_V2 + invocation.getArguments()[0] + "/" + invocation.getArguments()[1] + "/branches/");
when(resourceLinks.user()).thenReturn(new ResourceLinks.UserLinks(uriInfo));
when(resourceLinks.userCollection()).thenReturn(new ResourceLinks.UserCollectionLinks(uriInfo));
when(resourceLinks.group()).thenReturn(new ResourceLinks.GroupLinks(uriInfo));
when(resourceLinks.groupCollection()).thenReturn(new ResourceLinks.GroupCollectionLinks(uriInfo));
when(resourceLinks.repository()).thenReturn(new ResourceLinks.RepositoryLinks(uriInfo));
when(resourceLinks.tagCollection()).thenReturn(new ResourceLinks.TagCollectionLinks(uriInfo));
when(resourceLinks.branchCollection()).thenReturn(new ResourceLinks.BranchCollectionLinks(uriInfo));
}
}

View File

@@ -7,7 +7,6 @@ import org.apache.shiro.util.ThreadContext;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import sonia.scm.PageResult;
@@ -28,7 +27,7 @@ import static sonia.scm.PageResult.createPage;
public class UserCollectionToDtoMapperTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@Mock
private ResourceLinks resourceLinks;
@Mock
private UserToUserDtoMapper userToDtoMapper;

View File

@@ -11,7 +11,6 @@ import org.jboss.resteasy.mock.MockHttpResponse;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.InjectMocks;
import org.mockito.Mock;
@@ -51,7 +50,7 @@ public class UserRootResourceTest {
private Dispatcher dispatcher = MockDispatcherFactory.createDispatcher();
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@Mock
private ResourceLinks resourceLinks;
@Mock

View File

@@ -7,7 +7,6 @@ import org.apache.shiro.util.ThreadState;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Answers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import sonia.scm.api.rest.resources.UserResource;
@@ -25,7 +24,7 @@ import static org.mockito.MockitoAnnotations.initMocks;
public class UserToUserDtoMapperTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
@Mock
private ResourceLinks resourceLinks;
@InjectMocks