diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java index 51ec71966..31c955d37 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java @@ -87,7 +87,7 @@ public ResponseEntity update(@PathVariable String metadataResolverId, @Reques metadataResolver.getMetadataFilters().stream() .filter(f -> f.getResourceId().equals(updatedFilter.getResourceId())) .collect(Collectors.toList()); - if (filters.size() != 1) { + if (filters.size() > 1) { // TODO: I don't think this should ever happen, but... if it does... // do something? throw exception, return error? LOGGER.warn("More than one filter was found for id {}! This is probably a bad thing.\n" + diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerTests.groovy index 2cbf71b41..e663ca337 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerTests.groovy @@ -165,26 +165,25 @@ class MetadataFiltersControllerTests extends Specification { def "FilterController.update updates the target EntityAttributes filter as desired"() { given: - def randomFilter = testObjectGenerator.entityAttributesFilter() - def updatedFilter = testObjectGenerator.entityAttributesFilter() - updatedFilter.resourceId = randomFilter.resourceId - updatedFilter.version = randomFilter.hashCode() - + def originalFilter = testObjectGenerator.entityAttributesFilter() + def updatedFilter = testObjectGenerator.copyOf(originalFilter) + updatedFilter.name = 'Updated Filter' def postedJsonBody = mapper.writeValueAsString(updatedFilter) def originalMetadataResolver = new MetadataResolver() originalMetadataResolver.setResourceId(randomGenerator.randomId()) originalMetadataResolver.setMetadataFilters(testObjectGenerator.buildAllTypesOfFilterList()) + originalMetadataResolver.metadataFilters.add(originalFilter) + def updatedMetadataResolver = new MetadataResolver() updatedMetadataResolver.setResourceId(originalMetadataResolver.getResourceId()) updatedMetadataResolver.setMetadataFilters(originalMetadataResolver.getMetadataFilters().collect()) - originalMetadataResolver.getMetadataFilters().add(randomFilter) updatedMetadataResolver.getMetadataFilters().add(updatedFilter) 1 * metadataResolverRepository.findAll() >> [originalMetadataResolver] 1 * metadataResolverRepository.save(_) >> updatedMetadataResolver - def filterUUID = randomFilter.getResourceId() + def filterUUID = updatedFilter.getResourceId() when: def result = mockMvc.perform( diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy index d3da75197..fce929b75 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy @@ -61,6 +61,17 @@ class TestObjectGenerator { } } + EntityAttributesFilter copyOf(EntityAttributesFilter entityAttributesFilter) { + new EntityAttributesFilter().with { + it.name = entityAttributesFilter.name + it.resourceId = entityAttributesFilter.resourceId + it.setEntityAttributesFilterTarget(entityAttributesFilter.entityAttributesFilterTarget) + it.setAttributes(new ArrayList(entityAttributesFilter.attributes)) + it.intoTransientRepresentation() + it + } + } + MetadataFilter buildFilter(Supplier filterSupplier) { MetadataFilter filter = filterSupplier.get() filter.setFilterEnabled(generator.randomBoolean())