// clean protected RepositoryListResourceResponse listRepositories( Request request, boolean allReposes, boolean includeGroups) throws ResourceException { RepositoryListResourceResponse result = new RepositoryListResourceResponse(); RepositoryListResource repoRes; Collection<Repository> repositories = getRepositoryRegistry().getRepositories(); for (Repository repository : repositories) { // To save UI changes at the moment, not including groups in repo call if ((allReposes || repository.isUserManaged()) && (includeGroups || !repository.getRepositoryKind().isFacetAvailable(GroupRepository.class))) { repoRes = new RepositoryListResource(); repoRes.setResourceURI(createRepositoryReference(request, repository.getId()).toString()); repoRes.setContentResourceURI( repositoryURLBuilder.getExposedRepositoryContentUrl(repository)); repoRes.setRepoType(getRestRepoType(repository)); repoRes.setProvider(NexusCompat.getRepositoryProviderHint(repository)); repoRes.setProviderRole(NexusCompat.getRepositoryProviderRole(repository)); repoRes.setFormat(repository.getRepositoryContentClass().getId()); repoRes.setId(repository.getId()); repoRes.setName(repository.getName()); repoRes.setUserManaged(repository.isUserManaged()); repoRes.setExposed(repository.isExposed()); repoRes.setEffectiveLocalStorageUrl(repository.getLocalUrl()); if (repository.getRepositoryKind().isFacetAvailable(MavenRepository.class)) { repoRes.setRepoPolicy( repository.adaptToFacet(MavenRepository.class).getRepositoryPolicy().toString()); } if (repository.getRepositoryKind().isFacetAvailable(ProxyRepository.class)) { repoRes.setRemoteUri(repository.adaptToFacet(ProxyRepository.class).getRemoteUrl()); } result.addData(repoRes); } } return result; }
/** * Tests listing a directory, when a contained file does NOT exists. * * @throws Exception */ @SuppressWarnings({"unchecked"}) @Test public void testListFilesThrowsItemNotFoundException() throws Exception { File repoLocation = new File(getBasedir(), "target/" + getClass().getSimpleName() + "/repo/"); // the contents of the "valid" directory, only contains a "valid.txt" file File validDir = new File(repoLocation, "valid/"); validDir.mkdirs(); FileUtils.fileWrite(new File(validDir, "valid.txt"), "UTF-8", "something valid"); Collection<File> validFileCollection = Arrays.asList(validDir.listFiles()); // the contents of the "invalid" directory, this dir contains a missing file File invalidDir = new File(repoLocation, "invalid/"); invalidDir.mkdirs(); FileUtils.fileWrite(new File(invalidDir, "invalid.txt"), "UTF-8", "something valid"); List<File> invalidFileCollection = new ArrayList<File>(Arrays.asList(invalidDir.listFiles())); invalidFileCollection.add(new File(invalidDir, "missing.txt")); // Mocks Wastebasket wastebasket = mock(Wastebasket.class); LinkPersister linkPersister = mock(LinkPersister.class); MimeSupport mimeUtil = mock(MimeSupport.class); // Mock FSPeer to return the results created above FSPeer fsPeer = mock(FSPeer.class); when(fsPeer.listItems( Mockito.any(Repository.class), Mockito.any(ResourceStoreRequest.class), eq(validDir))) .thenReturn(validFileCollection); when(fsPeer.listItems( Mockito.any(Repository.class), Mockito.any(ResourceStoreRequest.class), eq(new File(repoLocation, "invalid/")))) .thenReturn(invalidFileCollection); // create Repository Mock Repository repository = mock(Repository.class); when(repository.getId()).thenReturn("mock"); when(repository.getRepositoryKind()) .thenReturn(new DefaultRepositoryKind(HostedRepository.class, null)); when(repository.getLocalUrl()).thenReturn(repoLocation.toURI().toURL().toString()); AttributesHandler attributesHandler = mock(AttributesHandler.class); when(repository.getAttributesHandler()).thenReturn(attributesHandler); DefaultFSLocalRepositoryStorage localRepositoryStorageUnderTest = new DefaultFSLocalRepositoryStorage(wastebasket, linkPersister, mimeUtil, fsPeer); ResourceStoreRequest validRequest = new ResourceStoreRequest("valid"); // positive test, valid.txt should be found Collection<StorageItem> items = localRepositoryStorageUnderTest.listItems(repository, validRequest); assertThat(items.iterator().next().getName(), equalTo("valid.txt")); assertThat(items, hasSize(1)); // missing.txt was listed in this directory, but it does NOT exist, only invalid.txt should be // found ResourceStoreRequest invalidRequest = new ResourceStoreRequest("invalid"); items = localRepositoryStorageUnderTest.listItems(repository, invalidRequest); assertThat(items.iterator().next().getName(), equalTo("invalid.txt")); assertThat(items, hasSize(1)); }