Create resource for repositories of one namespace

This commit is contained in:
René Pfeuffer
2020-09-03 07:53:56 +02:00
parent edc6088296
commit 4d09f71d40
4 changed files with 158 additions and 2 deletions

View File

@@ -133,6 +133,7 @@ public class RepositoryRootResourceTest extends RepositoryTestBase {
super.manager = repositoryManager;
RepositoryCollectionToDtoMapper repositoryCollectionToDtoMapper = new RepositoryCollectionToDtoMapper(repositoryToDtoMapper, resourceLinks);
super.repositoryCollectionResource = new RepositoryCollectionResource(repositoryManager, repositoryCollectionToDtoMapper, dtoToRepositoryMapper, resourceLinks, repositoryInitializer);
super.repositoryNamespaceResource = new RepositoryNamespaceResource(repositoryManager, repositoryCollectionToDtoMapper);
dispatcher.addSingletonResource(getRepositoryRootResource());
when(serviceFactory.create(any(Repository.class))).thenReturn(service);
when(scmPathInfoStore.get()).thenReturn(uriInfo);
@@ -206,6 +207,40 @@ public class RepositoryRootResourceTest extends RepositoryTestBase {
assertFalse(filterCaptor.getValue().test(new Repository("rep", "rep", "x", "x")));
}
@Test
public void shouldCreateFilterForNamespace() throws URISyntaxException {
PageResult<Repository> singletonPageResult = createSingletonPageResult(mockRepository("space", "repo"));
when(repositoryManager.getPage(filterCaptor.capture(), any(), eq(0), eq(10))).thenReturn(singletonPageResult);
when(configuration.getNamespaceStrategy()).thenReturn("CustomNamespaceStrategy");
MockHttpRequest request = MockHttpRequest.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space");
MockHttpResponse response = new MockHttpResponse();
dispatcher.invoke(request, response);
assertEquals(SC_OK, response.getStatus());
assertTrue(filterCaptor.getValue().test(new Repository("x", "git", "space", "repo")));
assertFalse(filterCaptor.getValue().test(new Repository("x", "git", "spaceX", "repository")));
assertFalse(filterCaptor.getValue().test(new Repository("x", "git", "x", "space")));
}
@Test
public void shouldCreateFilterForNamespaceWithQuery() throws URISyntaxException {
PageResult<Repository> singletonPageResult = createSingletonPageResult(mockRepository("space", "repo"));
when(repositoryManager.getPage(filterCaptor.capture(), any(), eq(0), eq(10))).thenReturn(singletonPageResult);
when(configuration.getNamespaceStrategy()).thenReturn("CustomNamespaceStrategy");
MockHttpRequest request = MockHttpRequest.get("/" + RepositoryRootResource.REPOSITORIES_PATH_V2 + "space?q=Rep");
MockHttpResponse response = new MockHttpResponse();
dispatcher.invoke(request, response);
assertEquals(SC_OK, response.getStatus());
assertTrue(filterCaptor.getValue().test(new Repository("x", "git", "space", "repo")));
assertFalse(filterCaptor.getValue().test(new Repository("x", "git", "space", "other")));
assertFalse(filterCaptor.getValue().test(new Repository("x", "git", "Rep", "Repository")));
}
@Test
public void shouldHandleUpdateForNotExistingRepository() throws URISyntaxException, IOException {
URL url = Resources.getResource("sonia/scm/api/v2/repository-test-update.json");

View File

@@ -44,6 +44,7 @@ abstract class RepositoryTestBase {
FileHistoryRootResource fileHistoryRootResource;
IncomingRootResource incomingRootResource;
RepositoryCollectionResource repositoryCollectionResource;
RepositoryNamespaceResource repositoryNamespaceResource;
AnnotateResource annotateResource;
RepositoryRootResource getRepositoryRootResource() {
@@ -65,6 +66,7 @@ abstract class RepositoryTestBase {
dtoToRepositoryMapper,
manager,
repositoryBasedResourceProvider)),
of(repositoryNamespaceResource),
of(repositoryCollectionResource));
}
}