@Theory public void shouldGetLatestModificationsForGivenMaterial(RequestDataPoints data) { MaterialService spy = spy(materialService); doReturn(data.klass).when(spy).getMaterialClass(data.material); List<Modification> actual = spy.latestModification(data.material, null, null); assertThat(actual, is(MODIFICATIONS)); }
@Theory public void shouldGetModificationsSinceARevisionForGivenMaterial(RequestDataPoints data) { Revision revision = mock(Revision.class); MaterialService spy = spy(materialService); doReturn(data.klass).when(spy).getMaterialClass(data.material); List<Modification> actual = spy.modificationsSince(data.material, null, revision, null); assertThat(actual, is(MODIFICATIONS)); }
@Test public void shouldReturnTheRevisionsThatMatchTheGivenSearchString() { when(securityService.hasViewPermissionForPipeline("pavan", "pipeline")).thenReturn(true); LocalizedOperationResult operationResult = mock(LocalizedOperationResult.class); MaterialConfig materialConfig = mock(MaterialConfig.class); when(goConfigService.materialForPipelineWithFingerprint("pipeline", "sha")) .thenReturn(materialConfig); List<MatchedRevision> expected = Arrays.asList( new MatchedRevision( "23", "revision", "revision", "user", new DateTime(2009, 10, 10, 12, 0, 0, 0).toDate(), "comment")); when(materialRepository.findRevisionsMatching(materialConfig, "23")).thenReturn(expected); assertThat( materialService.searchRevisions( "pipeline", "sha", "23", new Username(new CaseInsensitiveString("pavan")), operationResult), is(expected)); }
@Test public void shouldThrowExceptionWhenPollerForMaterialNotFound() { try { materialService.latestModification(mock(Material.class), null, null); fail("Should have thrown up"); } catch (RuntimeException e) { assertThat(e.getMessage(), is("unknown material type null")); } }
@Test public void shouldDelegateToMaterialRepository_getTotalModificationsFor() { GitMaterialConfig materialConfig = new GitMaterialConfig("http://test.com"); GitMaterialInstance gitMaterialInstance = new GitMaterialInstance("http://test.com", null, null, "flyweight"); when(materialRepository.findMaterialInstance(materialConfig)).thenReturn(gitMaterialInstance); when(materialRepository.getTotalModificationsFor(gitMaterialInstance)).thenReturn(1L); Long totalCount = materialService.getTotalModificationsFor(materialConfig); assertThat(totalCount, is(1L)); }
@Test public void shouldReturnNotFoundIfTheMaterialDoesNotBelongToTheGivenPipeline() { when(securityService.hasViewPermissionForPipeline("pavan", "pipeline")).thenReturn(true); LocalizedOperationResult operationResult = mock(LocalizedOperationResult.class); when(goConfigService.materialForPipelineWithFingerprint("pipeline", "sha")) .thenThrow(new RuntimeException("Not found")); materialService.searchRevisions( "pipeline", "sha", "23", new Username(new CaseInsensitiveString("pavan")), operationResult); verify(operationResult) .notFound( LocalizedMessage.materialWithFingerPrintNotFound("pipeline", "sha"), HealthStateType.general(HealthStateScope.forPipeline("pipeline"))); }
@Test public void shouldNotBeAuthorizedToViewAPipeline() { when(securityService.hasViewPermissionForPipeline("pavan", "pipeline")).thenReturn(false); LocalizedOperationResult operationResult = mock(LocalizedOperationResult.class); materialService.searchRevisions( "pipeline", "sha", "search-string", new Username(new CaseInsensitiveString("pavan")), operationResult); verify(operationResult) .unauthorized( LocalizedMessage.cannotViewPipeline("pipeline"), HealthStateType.general(HealthStateScope.forPipeline("pipeline"))); }
@Test public void shouldDelegateToMaterialRepository_getModificationsFor() { GitMaterialConfig materialConfig = new GitMaterialConfig("http://test.com"); GitMaterialInstance gitMaterialInstance = new GitMaterialInstance("http://test.com", null, null, "flyweight"); Pagination pagination = Pagination.pageStartingAt(0, 10, 10); Modifications modifications = new Modifications(); modifications.add(new Modification("user", "comment", "email", new Date(), "revision")); when(materialRepository.findMaterialInstance(materialConfig)).thenReturn(gitMaterialInstance); when(materialRepository.getModificationsFor(gitMaterialInstance, pagination)) .thenReturn(modifications); Modifications gotModifications = materialService.getModificationsFor(materialConfig, pagination); assertThat(gotModifications, is(modifications)); }
@Test public void shouldGetLatestModificationForPackageMaterial() { PackageMaterial material = new PackageMaterial(); PackageDefinition packageDefinition = create( "id", "package", new Configuration(), PackageRepositoryMother.create( "id", "name", "plugin-id", "plugin-version", new Configuration())); material.setPackageDefinition(packageDefinition); when(pluginManager.doOn( eq(PackageMaterialProvider.class), eq("plugin-id"), any(ActionWithReturn.class))) .thenReturn(new PackageRevision("blah-123", new Date(), "user")); List<Modification> modifications = materialService.latestModification(material, null, null); assertThat(modifications.get(0).getRevision(), is("blah-123")); }
private void assertHasModifcation(MaterialRevisions materialRevisions, boolean b) { HgMaterial hgMaterial = new HgMaterial("foo.com", null); when(materialRepository.findLatestModification(hgMaterial)).thenReturn(materialRevisions); assertThat(materialService.hasModificationFor(hgMaterial), is(b)); }