From 4b0b45b86f10175ee01240e96201c77c3b39d0ea Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 12:02:51 -0700 Subject: [PATCH 01/13] SHIBUI-1992 removed initializefrombackupfile default --- .../JPAMetadataResolverServiceImpl.groovy | 2 +- .../FileBackedHttpMetadataResolver.java | 2 +- ...penSamlFileBackedHTTPMetadataResolver.java | 22 +- ...taFiltersControllerIntegrationTests.groovy | 298 +++++++++--------- .../ui/domain/EntityDescriptorTest.groovy | 3 +- .../admin/ui/util/TestHelpers.groovy | 27 +- 6 files changed, 188 insertions(+), 166 deletions(-) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy index 5dfbf65eb..eab25d04e 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy @@ -447,7 +447,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { 'xsi:type': 'FileBackedHTTPMetadataProvider', backingFile: resolver.backingFile, metadataURL: resolver.metadataURL, - initializeFromBackupFile: !resolver.initializeFromBackupFile ?: null, + initializeFromBackupFile: resolver.initializeFromBackupFile, backupFileInitNextRefreshDelay: resolver.backupFileInitNextRefreshDelay, requireValidMetadata: !resolver.requireValidMetadata ?: null, failFastInitialization: !resolver.failFastInitialization ?: null, diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/FileBackedHttpMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/FileBackedHttpMetadataResolver.java index 17fe28ab9..9966d567f 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/FileBackedHttpMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/FileBackedHttpMetadataResolver.java @@ -25,7 +25,7 @@ public FileBackedHttpMetadataResolver() { private String backingFile; - private Boolean initializeFromBackupFile = true; + private Boolean initializeFromBackupFile; private String backupFileInitNextRefreshDelay; diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java index 9660950d7..6a54c409b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java @@ -35,7 +35,7 @@ public class OpenSamlFileBackedHTTPMetadataResolver extends FileBackedHTTPMetada public OpenSamlFileBackedHTTPMetadataResolver(ParserPool parserPool, IndexWriter indexWriter, - FileBackedHttpMetadataResolver sourceResolver) throws ResolverException { + FileBackedHttpMetadataResolver sourceResolver) throws ResolverException { super(HttpClients.createMinimal(), sourceResolver.getMetadataURL(), sourceResolver.getBackingFile()); this.indexWriter = indexWriter; this.sourceResolver = sourceResolver; @@ -43,21 +43,21 @@ public OpenSamlFileBackedHTTPMetadataResolver(ParserPool parserPool, this.setId(sourceResolver.getResourceId()); - OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromHttpMetadataResolverAttributes( - this, sourceResolver.getHttpMetadataResolverAttributes()); - OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes( - this, sourceResolver.getReloadableMetadataResolverAttributes(), parserPool); + OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromHttpMetadataResolverAttributes(this, + sourceResolver.getHttpMetadataResolverAttributes()); + OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes(this, + sourceResolver.getReloadableMetadataResolverAttributes(), parserPool); - this.setBackupFile(placeholderResolverService() - .resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackingFile())); + this.setBackupFile(placeholderResolverService().resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackingFile())); this.setBackupFileInitNextRefreshDelay(toMillis(placeholderResolverService() - .resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackupFileInitNextRefreshDelay()))); - - this.setInitializeFromBackupFile(sourceResolver.getInitializeFromBackupFile()); + .resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackupFileInitNextRefreshDelay()))); + if (sourceResolver.getInitializeFromBackupFile() != null) { + this.setInitializeFromBackupFile(sourceResolver.getInitializeFromBackupFile()); + } this.setMetadataFilter(new MetadataFilterChain()); - //TODO: Where does this get set in OpenSAML land? + // TODO: Where does this get set in OpenSAML land? // sourceResolver.getMetadataURL(); } diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerIntegrationTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerIntegrationTests.groovy index a07353b9c..08abfc4b4 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerIntegrationTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerIntegrationTests.groovy @@ -92,157 +92,157 @@ class MetadataFiltersControllerIntegrationTests extends Specification { createRequestHttpEntityFor { JsonOutput.toJson(existingFilterMap) }, String) then: - updatedResultFromPUT.statusCode.value() == 200 + updatedResultFromPUT.statusCode.value() == 200 } - def "PUT EntityAttributesFilter and update it"() { - given: 'MetadataResolver with attached entity attributes is available in data store' - def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') - resolver.metadataFilters << generator.entityAttributesFilter() - def filterResourceId = resolver.metadataFilters[0].resourceId - def resolverResourceId = resolver.resourceId - metadataResolverRepository.save(resolver) - MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) - OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) - - when: 'GET request is made with resource Id matching the existing filter' - def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) - def existingFilterMap = jsonSlurper.parseText(result.body) - - and: 'PUT call is made with modified filter state' - existingFilterMap.name = 'Entity Attributes Filter Updated' - def updatedResultFromPUT = this.restTemplate.exchange( - "$BASE_URI/$resolverResourceId/Filters/$filterResourceId", - PUT, - createRequestHttpEntityFor { JsonOutput.toJson(existingFilterMap) }, String) - - then: - updatedResultFromPUT.statusCode.value() == 200 - } - - def "DELETE Filter"() { - given: 'MetadataResolver with attached filter is available in data store' - def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') - resolver.metadataFilters << generator.entityAttributesFilter() - def filterResourceId = resolver.metadataFilters[0].resourceId - def resolverResourceId = resolver.resourceId - metadataResolverRepository.save(resolver) - - - when: 'GET request is made with resource Id matching the existing filter' - def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) - - then: - result.statusCode.value() == 200 - - and: 'DELETE call is made and then GET call is made for the just deleted resource' - restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filterResourceId") - def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) - - then: 'The deleted resource is gone' - GETResultAfterDelete.statusCode.value() == 404 - } - - def "DELETE Filter with resolver having more than TWO filters attached"() { - given: 'MetadataResolver with 3 attached filters is available in data store' - def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') - resolver.metadataFilters << generator.entityAttributesFilter() - resolver.metadataFilters << generator.entityAttributesFilter() - resolver.metadataFilters << generator.entityAttributesFilter() - resolver.metadataFilters << generator.entityAttributesFilter() - resolver.metadataFilters << generator.entityAttributesFilter() - resolver.metadataFilters << generator.entityAttributesFilter() - resolver.metadataFilters << generator.entityAttributesFilter() - def filter_THREE_ResourceId = resolver.metadataFilters[2].resourceId - def filter_SIX_ResourceId = resolver.metadataFilters[5].resourceId - def resolverResourceId = resolver.resourceId - metadataResolverRepository.save(resolver) - - when: 'GET resolver to count the original number of filters' - def originalResolverResult = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) - - then: - originalResolverResult.body.metadataFilters.size == 7 - - when: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter' - restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId") - def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId", String) - - then: 'The deleted resource is gone' - GETResultAfterDelete.statusCodeValue == 404 - - and: 'GET resolver to count modified number of filters' - def resolverResult_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) - - then: - resolverResult_2.body.metadataFilters.size == 6 - - and: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter' - restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId") - def GETResultAfterDelete_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId", String) - - then: 'The deleted resource is gone' - GETResultAfterDelete_2.statusCodeValue == 404 - - and: 'GET resolver to count modified number of filters' - def resolverResult_3 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) - - then: - resolverResult_3.body.metadataFilters.size == 5 - } - - def "POST new Filter updates resolver's modifiedDate - SHIBUI-1500"() { - given: 'MetadataResolver with attached entity attributes is available in data store' - def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') - def filter = generator.entityAttributesFilter() - def resolverResourceId = resolver.resourceId - metadataResolverRepository.save(resolver) - MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) - OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) - - when: 'Resolver without filter is fetched' - def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", String) - def originalModifiedDate = jsonSlurper.parseText(result.body).modifiedDate - - and: 'POST call is made with new filter' - result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String) - def afterFilterAddedModifiedDate = jsonSlurper.parseText(result.body).modifiedDate - - then: - originalModifiedDate < afterFilterAddedModifiedDate - } - - def "EntityAttributesFilter with invalid script does not result in persisting that filter"() { - def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') - def resolverResourceId = resolver.resourceId - metadataResolverRepository.save(resolver) - MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) - OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) - def filter = new EntityAttributesFilter().with { - it.name = 'SHIBUI-1249' - it.resourceId = 'SHIBUI-1249' - it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with { - it.entityAttributesFilterTargetType = CONDITION_SCRIPT - it.singleValue = """ - echo('invalid; - """ - it - } - it - } - - when: - def result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String) - - then: - result.statusCodeValue == 400 - - when: - result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) - - then: - result.body.metadataFilters.size == 0 - } +// def "PUT EntityAttributesFilter and update it"() { +// given: 'MetadataResolver with attached entity attributes is available in data store' +// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') +// resolver.metadataFilters << generator.entityAttributesFilter() +// def filterResourceId = resolver.metadataFilters[0].resourceId +// def resolverResourceId = resolver.resourceId +// metadataResolverRepository.save(resolver) +// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) +// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) +// +// when: 'GET request is made with resource Id matching the existing filter' +// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) +// def existingFilterMap = jsonSlurper.parseText(result.body) +// +// and: 'PUT call is made with modified filter state' +// existingFilterMap.name = 'Entity Attributes Filter Updated' +// def updatedResultFromPUT = this.restTemplate.exchange( +// "$BASE_URI/$resolverResourceId/Filters/$filterResourceId", +// PUT, +// createRequestHttpEntityFor { JsonOutput.toJson(existingFilterMap) }, String) +// +// then: +// updatedResultFromPUT.statusCode.value() == 200 +// } +// +// def "DELETE Filter"() { +// given: 'MetadataResolver with attached filter is available in data store' +// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') +// resolver.metadataFilters << generator.entityAttributesFilter() +// def filterResourceId = resolver.metadataFilters[0].resourceId +// def resolverResourceId = resolver.resourceId +// metadataResolverRepository.save(resolver) +// +// +// when: 'GET request is made with resource Id matching the existing filter' +// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) +// +// then: +// result.statusCode.value() == 200 +// +// and: 'DELETE call is made and then GET call is made for the just deleted resource' +// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filterResourceId") +// def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) +// +// then: 'The deleted resource is gone' +// GETResultAfterDelete.statusCode.value() == 404 +// } +// +// def "DELETE Filter with resolver having more than TWO filters attached"() { +// given: 'MetadataResolver with 3 attached filters is available in data store' +// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') +// resolver.metadataFilters << generator.entityAttributesFilter() +// resolver.metadataFilters << generator.entityAttributesFilter() +// resolver.metadataFilters << generator.entityAttributesFilter() +// resolver.metadataFilters << generator.entityAttributesFilter() +// resolver.metadataFilters << generator.entityAttributesFilter() +// resolver.metadataFilters << generator.entityAttributesFilter() +// resolver.metadataFilters << generator.entityAttributesFilter() +// def filter_THREE_ResourceId = resolver.metadataFilters[2].resourceId +// def filter_SIX_ResourceId = resolver.metadataFilters[5].resourceId +// def resolverResourceId = resolver.resourceId +// metadataResolverRepository.save(resolver) +// +// when: 'GET resolver to count the original number of filters' +// def originalResolverResult = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) +// +// then: +// originalResolverResult.body.metadataFilters.size == 7 +// +// when: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter' +// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId") +// def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId", String) +// +// then: 'The deleted resource is gone' +// GETResultAfterDelete.statusCodeValue == 404 +// +// and: 'GET resolver to count modified number of filters' +// def resolverResult_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) +// +// then: +// resolverResult_2.body.metadataFilters.size == 6 +// +// and: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter' +// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId") +// def GETResultAfterDelete_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId", String) +// +// then: 'The deleted resource is gone' +// GETResultAfterDelete_2.statusCodeValue == 404 +// +// and: 'GET resolver to count modified number of filters' +// def resolverResult_3 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) +// +// then: +// resolverResult_3.body.metadataFilters.size == 5 +// } +// +// def "POST new Filter updates resolver's modifiedDate - SHIBUI-1500"() { +// given: 'MetadataResolver with attached entity attributes is available in data store' +// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') +// def filter = generator.entityAttributesFilter() +// def resolverResourceId = resolver.resourceId +// metadataResolverRepository.save(resolver) +// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) +// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) +// +// when: 'Resolver without filter is fetched' +// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", String) +// def originalModifiedDate = jsonSlurper.parseText(result.body).modifiedDate +// +// and: 'POST call is made with new filter' +// result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String) +// def afterFilterAddedModifiedDate = jsonSlurper.parseText(result.body).modifiedDate +// +// then: +// originalModifiedDate < afterFilterAddedModifiedDate +// } +// +// def "EntityAttributesFilter with invalid script does not result in persisting that filter"() { +// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') +// def resolverResourceId = resolver.resourceId +// metadataResolverRepository.save(resolver) +// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) +// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) +// def filter = new EntityAttributesFilter().with { +// it.name = 'SHIBUI-1249' +// it.resourceId = 'SHIBUI-1249' +// it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with { +// it.entityAttributesFilterTargetType = CONDITION_SCRIPT +// it.singleValue = """ +// echo('invalid; +// """ +// it +// } +// it +// } +// +// when: +// def result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String) +// +// then: +// result.statusCodeValue == 400 +// +// when: +// result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) +// +// then: +// result.body.metadataFilters.size == 0 +// } private HttpEntity createRequestHttpEntityFor(Closure jsonBodySupplier) { new HttpEntity(jsonBodySupplier(), ['Content-Type': 'application/json'] as HttpHeaders) diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/EntityDescriptorTest.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/EntityDescriptorTest.groovy index b0906a68c..94cf7762a 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/EntityDescriptorTest.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/EntityDescriptorTest.groovy @@ -68,7 +68,8 @@ class EntityDescriptorTest extends Specification { metadataURL: 'https://idp.unicon.net/idp/shibboleth', backingFile: "%{idp.home}/metadata/test.xml", reloadableMetadataResolverAttributes: new ReloadableMetadataResolverAttributes(), - httpMetadataResolverAttributes: new HttpMetadataResolverAttributes() + httpMetadataResolverAttributes: new HttpMetadataResolverAttributes(), + initializeFromBackupFile: Boolean.TRUE ) ).with { it.initialize() diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestHelpers.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestHelpers.groovy index 0b175c5ad..f50263663 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestHelpers.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/util/TestHelpers.groovy @@ -2,11 +2,20 @@ package edu.internet2.tier.shibboleth.admin.ui.util import edu.internet2.tier.shibboleth.admin.ui.security.model.User import groovy.xml.XmlUtil +import junit.framework.Assert +import javax.xml.transform.Source; +import javax.xml.transform.Transformer +import javax.xml.transform.TransformerException +import javax.xml.transform.TransformerFactory +import javax.xml.transform.dom.DOMSource +import javax.xml.transform.stream.StreamResult + import org.apache.commons.lang.StringUtils import org.springframework.security.core.context.SecurityContextHolder import org.w3c.dom.Document import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input +import org.xmlunit.builder.Input.Builder /** * @author Bill Smith (wsmith@unicon.net) @@ -29,15 +38,27 @@ class TestHelpers { } static void generatedXmlIsTheSameAsExpectedXml(String expectedXmlResource, Document generatedXml) { - assert !DiffBuilder.compare(Input.fromStream(TestHelpers.getResourceAsStream(expectedXmlResource))) - .withTest(Input.fromDocument(generatedXml)) + def Builder builder = Input.fromDocument(generatedXml) + def Source source = builder.build() + def myDiff = DiffBuilder.compare(Input.fromStream(TestHelpers.getResourceAsStream(expectedXmlResource))) + .withTest(builder) .withAttributeFilter({attribute -> !attribute.name.equals("sourceDirectory")}) .ignoreComments() .ignoreWhitespace() .build() - .hasDifferences() + System.out.println("@@@ \n" + getString(source) + "\n") + Assert.assertFalse(myDiff.toString(), myDiff.hasDifferences()); } + public static String getString(DOMSource domSource) throws TransformerException { + StringWriter writer = new StringWriter(); + StreamResult result = new StreamResult(writer); + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer transformer = tf.newTransformer(); + transformer.transform(domSource, result); + return writer.toString(); + } + static String XmlDocumentToString(Document document) { return XmlUtil.serialize(document.documentElement) } From fc8bba51162cb618065021b3b185551fc3af9f8c Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 12:20:54 -0700 Subject: [PATCH 02/13] SHIBUI-1992 removed disregardTLSCertificate = false (now null rather than a default) --- .../HttpMetadataResolverAttributes.java | 2 +- ...taFiltersControllerIntegrationTests.groovy | 296 +++++++++--------- 2 files changed, 149 insertions(+), 149 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/HttpMetadataResolverAttributes.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/HttpMetadataResolverAttributes.java index 8054ba852..706c34e08 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/HttpMetadataResolverAttributes.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/HttpMetadataResolverAttributes.java @@ -28,7 +28,7 @@ public class HttpMetadataResolverAttributes { private String socketTimeout; - private Boolean disregardTLSCertificate = false; + private Boolean disregardTLSCertificate; private String tlsTrustEngineRef; diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerIntegrationTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerIntegrationTests.groovy index 08abfc4b4..e223e0012 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerIntegrationTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerIntegrationTests.groovy @@ -95,154 +95,154 @@ class MetadataFiltersControllerIntegrationTests extends Specification { updatedResultFromPUT.statusCode.value() == 200 } -// def "PUT EntityAttributesFilter and update it"() { -// given: 'MetadataResolver with attached entity attributes is available in data store' -// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') -// resolver.metadataFilters << generator.entityAttributesFilter() -// def filterResourceId = resolver.metadataFilters[0].resourceId -// def resolverResourceId = resolver.resourceId -// metadataResolverRepository.save(resolver) -// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) -// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) -// -// when: 'GET request is made with resource Id matching the existing filter' -// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) -// def existingFilterMap = jsonSlurper.parseText(result.body) -// -// and: 'PUT call is made with modified filter state' -// existingFilterMap.name = 'Entity Attributes Filter Updated' -// def updatedResultFromPUT = this.restTemplate.exchange( -// "$BASE_URI/$resolverResourceId/Filters/$filterResourceId", -// PUT, -// createRequestHttpEntityFor { JsonOutput.toJson(existingFilterMap) }, String) -// -// then: -// updatedResultFromPUT.statusCode.value() == 200 -// } -// -// def "DELETE Filter"() { -// given: 'MetadataResolver with attached filter is available in data store' -// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') -// resolver.metadataFilters << generator.entityAttributesFilter() -// def filterResourceId = resolver.metadataFilters[0].resourceId -// def resolverResourceId = resolver.resourceId -// metadataResolverRepository.save(resolver) -// -// -// when: 'GET request is made with resource Id matching the existing filter' -// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) -// -// then: -// result.statusCode.value() == 200 -// -// and: 'DELETE call is made and then GET call is made for the just deleted resource' -// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filterResourceId") -// def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) -// -// then: 'The deleted resource is gone' -// GETResultAfterDelete.statusCode.value() == 404 -// } -// -// def "DELETE Filter with resolver having more than TWO filters attached"() { -// given: 'MetadataResolver with 3 attached filters is available in data store' -// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') -// resolver.metadataFilters << generator.entityAttributesFilter() -// resolver.metadataFilters << generator.entityAttributesFilter() -// resolver.metadataFilters << generator.entityAttributesFilter() -// resolver.metadataFilters << generator.entityAttributesFilter() -// resolver.metadataFilters << generator.entityAttributesFilter() -// resolver.metadataFilters << generator.entityAttributesFilter() -// resolver.metadataFilters << generator.entityAttributesFilter() -// def filter_THREE_ResourceId = resolver.metadataFilters[2].resourceId -// def filter_SIX_ResourceId = resolver.metadataFilters[5].resourceId -// def resolverResourceId = resolver.resourceId -// metadataResolverRepository.save(resolver) -// -// when: 'GET resolver to count the original number of filters' -// def originalResolverResult = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) -// -// then: -// originalResolverResult.body.metadataFilters.size == 7 -// -// when: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter' -// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId") -// def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId", String) -// -// then: 'The deleted resource is gone' -// GETResultAfterDelete.statusCodeValue == 404 -// -// and: 'GET resolver to count modified number of filters' -// def resolverResult_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) -// -// then: -// resolverResult_2.body.metadataFilters.size == 6 -// -// and: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter' -// restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId") -// def GETResultAfterDelete_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId", String) -// -// then: 'The deleted resource is gone' -// GETResultAfterDelete_2.statusCodeValue == 404 -// -// and: 'GET resolver to count modified number of filters' -// def resolverResult_3 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) -// -// then: -// resolverResult_3.body.metadataFilters.size == 5 -// } -// -// def "POST new Filter updates resolver's modifiedDate - SHIBUI-1500"() { -// given: 'MetadataResolver with attached entity attributes is available in data store' -// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') -// def filter = generator.entityAttributesFilter() -// def resolverResourceId = resolver.resourceId -// metadataResolverRepository.save(resolver) -// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) -// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) -// -// when: 'Resolver without filter is fetched' -// def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", String) -// def originalModifiedDate = jsonSlurper.parseText(result.body).modifiedDate -// -// and: 'POST call is made with new filter' -// result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String) -// def afterFilterAddedModifiedDate = jsonSlurper.parseText(result.body).modifiedDate -// -// then: -// originalModifiedDate < afterFilterAddedModifiedDate -// } -// -// def "EntityAttributesFilter with invalid script does not result in persisting that filter"() { -// def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') -// def resolverResourceId = resolver.resourceId -// metadataResolverRepository.save(resolver) -// MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) -// OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) -// def filter = new EntityAttributesFilter().with { -// it.name = 'SHIBUI-1249' -// it.resourceId = 'SHIBUI-1249' -// it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with { -// it.entityAttributesFilterTargetType = CONDITION_SCRIPT -// it.singleValue = """ -// echo('invalid; -// """ -// it -// } -// it -// } -// -// when: -// def result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String) -// -// then: -// result.statusCodeValue == 400 -// -// when: -// result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) -// -// then: -// result.body.metadataFilters.size == 0 -// } + def "PUT EntityAttributesFilter and update it"() { + given: 'MetadataResolver with attached entity attributes is available in data store' + def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') + resolver.metadataFilters << generator.entityAttributesFilter() + def filterResourceId = resolver.metadataFilters[0].resourceId + def resolverResourceId = resolver.resourceId + metadataResolverRepository.save(resolver) + MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) + OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) + + when: 'GET request is made with resource Id matching the existing filter' + def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) + def existingFilterMap = jsonSlurper.parseText(result.body) + + and: 'PUT call is made with modified filter state' + existingFilterMap.name = 'Entity Attributes Filter Updated' + def updatedResultFromPUT = this.restTemplate.exchange( + "$BASE_URI/$resolverResourceId/Filters/$filterResourceId", + PUT, + createRequestHttpEntityFor { JsonOutput.toJson(existingFilterMap) }, String) + + then: + updatedResultFromPUT.statusCode.value() == 200 + } + + def "DELETE Filter"() { + given: 'MetadataResolver with attached filter is available in data store' + def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') + resolver.metadataFilters << generator.entityAttributesFilter() + def filterResourceId = resolver.metadataFilters[0].resourceId + def resolverResourceId = resolver.resourceId + metadataResolverRepository.save(resolver) + + + when: 'GET request is made with resource Id matching the existing filter' + def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) + + then: + result.statusCode.value() == 200 + + and: 'DELETE call is made and then GET call is made for the just deleted resource' + restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filterResourceId") + def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filterResourceId", String) + + then: 'The deleted resource is gone' + GETResultAfterDelete.statusCode.value() == 404 + } + + def "DELETE Filter with resolver having more than TWO filters attached"() { + given: 'MetadataResolver with 3 attached filters is available in data store' + def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') + resolver.metadataFilters << generator.entityAttributesFilter() + resolver.metadataFilters << generator.entityAttributesFilter() + resolver.metadataFilters << generator.entityAttributesFilter() + resolver.metadataFilters << generator.entityAttributesFilter() + resolver.metadataFilters << generator.entityAttributesFilter() + resolver.metadataFilters << generator.entityAttributesFilter() + resolver.metadataFilters << generator.entityAttributesFilter() + def filter_THREE_ResourceId = resolver.metadataFilters[2].resourceId + def filter_SIX_ResourceId = resolver.metadataFilters[5].resourceId + def resolverResourceId = resolver.resourceId + metadataResolverRepository.save(resolver) + + when: 'GET resolver to count the original number of filters' + def originalResolverResult = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) + + then: + originalResolverResult.body.metadataFilters.size == 7 + + when: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter' + restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId") + def GETResultAfterDelete = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_SIX_ResourceId", String) + + then: 'The deleted resource is gone' + GETResultAfterDelete.statusCodeValue == 404 + + and: 'GET resolver to count modified number of filters' + def resolverResult_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) + + then: + resolverResult_2.body.metadataFilters.size == 6 + + and: 'DELETE call is made for one of the filters and then GET call is made for the just deleted filter' + restTemplate.delete("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId") + def GETResultAfterDelete_2 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId/Filters/$filter_THREE_ResourceId", String) + + then: 'The deleted resource is gone' + GETResultAfterDelete_2.statusCodeValue == 404 + + and: 'GET resolver to count modified number of filters' + def resolverResult_3 = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) + + then: + resolverResult_3.body.metadataFilters.size == 5 + } + + def "POST new Filter updates resolver's modifiedDate - SHIBUI-1500"() { + given: 'MetadataResolver with attached entity attributes is available in data store' + def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') + def filter = generator.entityAttributesFilter() + def resolverResourceId = resolver.resourceId + metadataResolverRepository.save(resolver) + MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) + OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) + + when: 'Resolver without filter is fetched' + def result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", String) + def originalModifiedDate = jsonSlurper.parseText(result.body).modifiedDate + + and: 'POST call is made with new filter' + result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String) + def afterFilterAddedModifiedDate = jsonSlurper.parseText(result.body).modifiedDate + + then: + originalModifiedDate < afterFilterAddedModifiedDate + } + + def "EntityAttributesFilter with invalid script does not result in persisting that filter"() { + def resolver = generator.buildRandomMetadataResolverOfType('FileBacked') + def resolverResourceId = resolver.resourceId + metadataResolverRepository.save(resolver) + MetadataResolver openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(resolver) + OpenSamlChainingMetadataResolverUtil.updateChainingMetadataResolver((OpenSamlChainingMetadataResolver) chainingMetadataResolver, openSamlRepresentation) + def filter = new EntityAttributesFilter().with { + it.name = 'SHIBUI-1249' + it.resourceId = 'SHIBUI-1249' + it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with { + it.entityAttributesFilterTargetType = CONDITION_SCRIPT + it.singleValue = """ + echo('invalid; + """ + it + } + it + } + + when: + def result = restTemplate.postForEntity("$BASE_URI/$resolverResourceId/Filters", filter, String) + + then: + result.statusCodeValue == 400 + + when: + result = this.restTemplate.getForEntity("$BASE_URI/$resolverResourceId", Map) + + then: + result.body.metadataFilters.size == 0 + } private HttpEntity createRequestHttpEntityFor(Closure jsonBodySupplier) { new HttpEntity(jsonBodySupplier(), ['Content-Type': 'application/json'] as HttpHeaders) From f1215823fd575aa7b224dda2d140a3b1fe808bc1 Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 12:46:57 -0700 Subject: [PATCH 03/13] SHIBUI-1992 Removed defaults: metadataresolver.enabled:true --- .../ui/domain/resolvers/MetadataResolver.java | 2 +- ...JPAMetadataResolverServiceImplTests.groovy | 23 +++++++++++++++++-- .../src/test/resources/conf/1059-disabled.xml | 11 +++++++++ .../conf/{1059.xml => 1059-enabled.xml} | 0 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 backend/src/test/resources/conf/1059-disabled.xml rename backend/src/test/resources/conf/{1059.xml => 1059-enabled.xml} (100%) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java index d24cd3638..a6d5950ec 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java @@ -58,7 +58,7 @@ public class MetadataResolver extends AbstractAuditable { @Column(unique = true) private String xmlId; - private Boolean enabled = true; + private Boolean enabled; private Boolean requireValidMetadata = true; diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImplTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImplTests.groovy index 3ab2154ea..0214b6ff8 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImplTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImplTests.groovy @@ -397,6 +397,7 @@ class JPAMetadataResolverServiceImplTests extends Specification { it.content = 'http://mdq-beta.incommon.org/global' it } + it.enabled = Boolean.TRUE it } metadataResolverRepository.save(resolver) @@ -411,12 +412,13 @@ class JPAMetadataResolverServiceImplTests extends Specification { } @DirtiesContext(methodMode = DirtiesContext.MethodMode.AFTER_METHOD) - def 'test namespace protection in nonURL resolver'() { + def 'test namespace protection in nonURL resolver with resolver setting enabled=true'() { setup: shibUIConfiguration.protectedAttributeNamespaces = ['http://shibboleth.net/ns/profiles'] def resolver = new LocalDynamicMetadataResolver().with { it.xmlId = 'LocalDynamic' it.sourceDirectory = '/tmp' + it.enabled = Boolean.TRUE it } @@ -424,7 +426,24 @@ class JPAMetadataResolverServiceImplTests extends Specification { metadataResolverRepository.save(resolver) then: - generatedXmlIsTheSameAsExpectedXml('/conf/1059.xml', metadataResolverService.generateConfiguration()) + generatedXmlIsTheSameAsExpectedXml('/conf/1059-enabled.xml', metadataResolverService.generateConfiguration()) + } + + @DirtiesContext(methodMode = DirtiesContext.MethodMode.AFTER_METHOD) + def 'test namespace protection in nonURL resolver with resolver setting enabled not set'() { + setup: + shibUIConfiguration.protectedAttributeNamespaces = ['http://shibboleth.net/ns/profiles'] + def resolver = new LocalDynamicMetadataResolver().with { + it.xmlId = 'LocalDynamic' + it.sourceDirectory = '/tmp' + it + } + + when: + metadataResolverRepository.save(resolver) + + then: + generatedXmlIsTheSameAsExpectedXml('/conf/1059-disabled.xml', metadataResolverService.generateConfiguration()) } @Ignore('there is a bug in org.opensaml.saml.metadata.resolver.filter.impl.EntityAttributesFilter.applyFilter') diff --git a/backend/src/test/resources/conf/1059-disabled.xml b/backend/src/test/resources/conf/1059-disabled.xml new file mode 100644 index 000000000..952c86ee6 --- /dev/null +++ b/backend/src/test/resources/conf/1059-disabled.xml @@ -0,0 +1,11 @@ + + + + \ No newline at end of file diff --git a/backend/src/test/resources/conf/1059.xml b/backend/src/test/resources/conf/1059-enabled.xml similarity index 100% rename from backend/src/test/resources/conf/1059.xml rename to backend/src/test/resources/conf/1059-enabled.xml From 2d94f33a0c18082df5c8b3fbe46574dab1033e08 Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 13:30:36 -0700 Subject: [PATCH 04/13] SHIBUI-1992 Removed defaults: metadataresolver.enabled:true --- .../admin/ui/util/TestObjectGenerator.groovy | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 982722ebd..0fa11811d 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 @@ -527,6 +527,8 @@ class TestObjectGenerator { it.maxRefreshDelay = 'P1D' it } + // Changes in MetadataResolver (removing defaults), so adding back those settings here. + it.enabled = Boolean.TRUE it } } @@ -543,6 +545,8 @@ class TestObjectGenerator { it.content = 'content' it } + // Changes in MetadataResolver (removing defaults), so adding back those settings here. + it.enabled = Boolean.TRUE it } } @@ -556,6 +560,8 @@ class TestObjectGenerator { it.dynamicMetadataResolverAttributes = new DynamicMetadataResolverAttributes().with { it } + // Changes in MetadataResolver (removing defaults), so adding back those settings here. + it.enabled = Boolean.TRUE it } } @@ -573,6 +579,8 @@ class TestObjectGenerator { it.reloadableMetadataResolverAttributes = new ReloadableMetadataResolverAttributes().with { it } + // Changes in MetadataResolver (removing defaults), so adding back those settings here. + it.enabled = Boolean.TRUE it } } @@ -589,6 +597,8 @@ class TestObjectGenerator { it.refreshDelayFactor = 0.3 it } + // Changes in MetadataResolver (removing defaults), so adding back those settings here. + it.enabled = Boolean.TRUE it } } From 6daca66af0dafda7509503df3e37d0a073e40c47 Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 14:56:41 -0700 Subject: [PATCH 05/13] SHIBUI-1992 Removed defaults: metadataresolver.requireValidMetadata:true --- .../ui/service/JPAMetadataResolverServiceImpl.groovy | 8 ++++---- .../admin/ui/domain/resolvers/MetadataResolver.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy index eab25d04e..b7ba6af5a 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy @@ -346,7 +346,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { 'xsi:type': 'FilesystemMetadataProvider', metadataFile: resolver.metadataFile, - requireValidMetadata: !resolver.requireValidMetadata ?: null, + requireValidMetadata: resolver.requireValidMetadata, failFastInitialization: !resolver.failFastInitialization ?: null, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, @@ -368,7 +368,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { void constructXmlNodeForResolver(DynamicHttpMetadataResolver resolver, def markupBuilderDelegate, Closure childNodes) { markupBuilderDelegate.MetadataProvider(id: resolver.xmlId, 'xsi:type': 'DynamicHTTPMetadataProvider', - requireValidMetadata: !resolver.requireValidMetadata ?: null, + requireValidMetadata: resolver.requireValidMetadata, failFastInitialization: !resolver.failFastInitialization ?: null, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, @@ -449,7 +449,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { metadataURL: resolver.metadataURL, initializeFromBackupFile: resolver.initializeFromBackupFile, backupFileInitNextRefreshDelay: resolver.backupFileInitNextRefreshDelay, - requireValidMetadata: !resolver.requireValidMetadata ?: null, + requireValidMetadata: resolver.requireValidMetadata, failFastInitialization: !resolver.failFastInitialization ?: null, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, @@ -490,7 +490,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { id: resolver.xmlId, 'xsi:type': 'LocalDynamicMetadataProvider', - requireValidMetadata: !resolver.requireValidMetadata ?: null, + requireValidMetadata: resolver.requireValidMetadata, failFastInitialization: !resolver.failFastInitialization ?: null, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java index a6d5950ec..74a384345 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java @@ -60,7 +60,7 @@ public class MetadataResolver extends AbstractAuditable { private Boolean enabled; - private Boolean requireValidMetadata = true; + private Boolean requireValidMetadata; private Boolean failFastInitialization = true; From 1badf3d87309b157e8437a720b3c661e5e1d7fbd Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 15:08:24 -0700 Subject: [PATCH 06/13] SHIBUI-1992 Removed defaults: metadataresolver.failFastInitialization:true --- .../ui/service/JPAMetadataResolverServiceImpl.groovy | 8 ++++---- .../admin/ui/domain/resolvers/MetadataResolver.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy index b7ba6af5a..8e5015a0d 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy @@ -347,7 +347,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { metadataFile: resolver.metadataFile, requireValidMetadata: resolver.requireValidMetadata, - failFastInitialization: !resolver.failFastInitialization ?: null, + failFastInitialization: resolver.failFastInitialization, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, @@ -369,7 +369,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { markupBuilderDelegate.MetadataProvider(id: resolver.xmlId, 'xsi:type': 'DynamicHTTPMetadataProvider', requireValidMetadata: resolver.requireValidMetadata, - failFastInitialization: !resolver.failFastInitialization ?: null, + failFastInitialization: resolver.failFastInitialization, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, @@ -450,7 +450,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { initializeFromBackupFile: resolver.initializeFromBackupFile, backupFileInitNextRefreshDelay: resolver.backupFileInitNextRefreshDelay, requireValidMetadata: resolver.requireValidMetadata, - failFastInitialization: !resolver.failFastInitialization ?: null, + failFastInitialization: resolver.failFastInitialization, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, @@ -491,7 +491,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { id: resolver.xmlId, 'xsi:type': 'LocalDynamicMetadataProvider', requireValidMetadata: resolver.requireValidMetadata, - failFastInitialization: !resolver.failFastInitialization ?: null, + failFastInitialization: resolver.failFastInitialization, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java index 74a384345..45324c61f 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java @@ -62,7 +62,7 @@ public class MetadataResolver extends AbstractAuditable { private Boolean requireValidMetadata; - private Boolean failFastInitialization = true; + private Boolean failFastInitialization; private Integer sortKey; From 5ad135b784c182094e1b2290c32ddc80dfae763c Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 15:18:27 -0700 Subject: [PATCH 07/13] SHIBUI-1992 Removed defaults: metadataresolver.useDefaultPredicateRegistry:true --- .../ui/service/JPAMetadataResolverServiceImpl.groovy | 8 ++++---- .../admin/ui/domain/resolvers/MetadataResolver.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy index 8e5015a0d..496b8f1b4 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy @@ -350,7 +350,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { failFastInitialization: resolver.failFastInitialization, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, - useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, + useDefaultPredicateRegistry: resolver.useDefaultPredicateRegistry, satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, parserPoolRef: resolver.reloadableMetadataResolverAttributes?.parserPoolRef, @@ -372,7 +372,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { failFastInitialization: resolver.failFastInitialization, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, - useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, + useDefaultPredicateRegistry: resolver.useDefaultPredicateRegistry, satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, parserPoolRef: resolver.dynamicMetadataResolverAttributes?.parserPoolRef, taskTimerRef: resolver.dynamicMetadataResolverAttributes?.taskTimerRef, @@ -453,7 +453,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { failFastInitialization: resolver.failFastInitialization, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, - useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, + useDefaultPredicateRegistry: resolver.useDefaultPredicateRegistry, satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, parserPoolRef: resolver.reloadableMetadataResolverAttributes?.parserPoolRef, @@ -494,7 +494,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { failFastInitialization: resolver.failFastInitialization, sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, - useDefaultPredicateRegistry: !resolver.useDefaultPredicateRegistry ?: null, + useDefaultPredicateRegistry: resolver.useDefaultPredicateRegistry, satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, parserPoolRef: resolver.dynamicMetadataResolverAttributes?.parserPoolRef, taskTimerRef: resolver.dynamicMetadataResolverAttributes?.taskTimerRef, diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java index 45324c61f..c7b91375d 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java @@ -68,7 +68,7 @@ public class MetadataResolver extends AbstractAuditable { private String criterionPredicateRegistryRef; - private Boolean useDefaultPredicateRegistry = true; + private Boolean useDefaultPredicateRegistry; private Boolean satisfyAnyPredicates = false; From 0f6d2da3bba3379456865f10c3ced673969d7264 Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 15:25:02 -0700 Subject: [PATCH 08/13] SHIBUI-1992 Removed defaults: metadataresolver.satisfyAnyPredicates:false --- .../ui/service/JPAMetadataResolverServiceImpl.groovy | 8 ++++---- .../admin/ui/domain/resolvers/MetadataResolver.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy index 496b8f1b4..7ffb5b5f7 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/JPAMetadataResolverServiceImpl.groovy @@ -351,7 +351,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, useDefaultPredicateRegistry: resolver.useDefaultPredicateRegistry, - satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, + satisfyAnyPredicates: resolver.satisfyAnyPredicates, parserPoolRef: resolver.reloadableMetadataResolverAttributes?.parserPoolRef, minRefreshDelay: resolver.reloadableMetadataResolverAttributes?.minRefreshDelay, @@ -373,7 +373,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, useDefaultPredicateRegistry: resolver.useDefaultPredicateRegistry, - satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, + satisfyAnyPredicates: resolver.satisfyAnyPredicates, parserPoolRef: resolver.dynamicMetadataResolverAttributes?.parserPoolRef, taskTimerRef: resolver.dynamicMetadataResolverAttributes?.taskTimerRef, refreshDelayFactor: resolver.dynamicMetadataResolverAttributes?.refreshDelayFactor, @@ -454,7 +454,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, useDefaultPredicateRegistry: resolver.useDefaultPredicateRegistry, - satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, + satisfyAnyPredicates: resolver.satisfyAnyPredicates, parserPoolRef: resolver.reloadableMetadataResolverAttributes?.parserPoolRef, minRefreshDelay: resolver.reloadableMetadataResolverAttributes?.minRefreshDelay, @@ -495,7 +495,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { sortKey: resolver.sortKey, criterionPredicateRegistryRef: resolver.criterionPredicateRegistryRef, useDefaultPredicateRegistry: resolver.useDefaultPredicateRegistry, - satisfyAnyPredicates: resolver.satisfyAnyPredicates ?: null, + satisfyAnyPredicates: resolver.satisfyAnyPredicates, parserPoolRef: resolver.dynamicMetadataResolverAttributes?.parserPoolRef, taskTimerRef: resolver.dynamicMetadataResolverAttributes?.taskTimerRef, refreshDelayFactor: resolver.dynamicMetadataResolverAttributes?.refreshDelayFactor, diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java index c7b91375d..7c212ef74 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java @@ -70,7 +70,7 @@ public class MetadataResolver extends AbstractAuditable { private Boolean useDefaultPredicateRegistry; - private Boolean satisfyAnyPredicates = false; + private Boolean satisfyAnyPredicates; private Boolean doInitialization = true; From be08cbb797a0fdac36ec651dea1260363058f24b Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 27 Jul 2021 15:51:17 -0700 Subject: [PATCH 09/13] SHIBUI-1992 Removed defaults: metadataresolver.doInitialization:false --- .../admin/ui/domain/resolvers/MetadataResolver.java | 2 +- .../tier/shibboleth/admin/ui/util/TestObjectGenerator.groovy | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java index 7c212ef74..13d573b56 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/MetadataResolver.java @@ -72,7 +72,7 @@ public class MetadataResolver extends AbstractAuditable { private Boolean satisfyAnyPredicates; - private Boolean doInitialization = true; + private Boolean doInitialization; @JsonIgnore private Long versionModifiedTimestamp; 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 0fa11811d..472b20694 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 @@ -529,6 +529,7 @@ class TestObjectGenerator { } // Changes in MetadataResolver (removing defaults), so adding back those settings here. it.enabled = Boolean.TRUE + it.doInitialization = Boolean.TRUE it } } @@ -547,6 +548,7 @@ class TestObjectGenerator { } // Changes in MetadataResolver (removing defaults), so adding back those settings here. it.enabled = Boolean.TRUE + it.doInitialization = Boolean.TRUE it } } @@ -562,6 +564,7 @@ class TestObjectGenerator { } // Changes in MetadataResolver (removing defaults), so adding back those settings here. it.enabled = Boolean.TRUE + it.doInitialization = Boolean.TRUE it } } @@ -581,6 +584,7 @@ class TestObjectGenerator { } // Changes in MetadataResolver (removing defaults), so adding back those settings here. it.enabled = Boolean.TRUE + it.doInitialization = Boolean.TRUE it } } @@ -599,6 +603,7 @@ class TestObjectGenerator { } // Changes in MetadataResolver (removing defaults), so adding back those settings here. it.enabled = Boolean.TRUE + it.doInitialization = Boolean.TRUE it } } From 1f32b95a0c68a2537561dde7a7c35b5bdcd3f0ee Mon Sep 17 00:00:00 2001 From: chasegawa Date: Fri, 30 Jul 2021 12:33:25 -0700 Subject: [PATCH 10/13] SHIBUI-1992 removed default being set in constructor --- .../admin/ui/domain/resolvers/FilesystemMetadataResolver.java | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/FilesystemMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/FilesystemMetadataResolver.java index ce3319d02..7002d9e71 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/FilesystemMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/FilesystemMetadataResolver.java @@ -21,7 +21,6 @@ public class FilesystemMetadataResolver extends MetadataResolver { public FilesystemMetadataResolver() { type = "FilesystemMetadataResolver"; - this.setDoInitialization(false); } private String metadataFile; From 67777a092b8b4cd3699f6036f3c4a12438737201 Mon Sep 17 00:00:00 2001 From: chasegawa Date: Fri, 30 Jul 2021 15:01:12 -0700 Subject: [PATCH 11/13] SHIBUI-1992 Bug fixes --- .../MetadataResolversController.java | 2 +- ...ResolversControllerIntegrationTests.groovy | 19 +++++++++++++++++++ .../admin/ui/util/TestObjectGenerator.groovy | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java index 96906980b..6bce7af7b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversController.java @@ -202,7 +202,7 @@ private static URI getResourceUriFor(MetadataResolver resolver) { private void doResolverInitialization(MetadataResolver persistedResolver) throws ComponentInitializationException, ResolverException, IOException { - if (persistedResolver.getDoInitialization()) { + if (persistedResolver.getDoInitialization() != null && persistedResolver.getDoInitialization()) { org.opensaml.saml.metadata.resolver.MetadataResolver openSamlRepresentation = null; try { openSamlRepresentation = metadataResolverConverterService.convertToOpenSamlRepresentation(persistedResolver); diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy index fda3a547c..b8487c9c8 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy @@ -206,6 +206,25 @@ class MetadataResolversControllerIntegrationTests extends Specification { 'ResourceBacked' | _ 'Filesystem' | _ } + + @DirtiesContext + def "SHIBUI-1992 - error creating FileBackedHTTPMetadata"() { + def resolver = new FileBackedHttpMetadataResolver().with { + it.name = 'FBHMR' + it.xmlId = '1' + it.backingFile = 'tmp/foo' + it.metadataURL = 'https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml' + it.backupFileInitNextRefreshDelay = 'PT4H' + it.enabled = Boolean.FALSE + it + } + + when: + def result = this.restTemplate.postForEntity(BASE_URI, createRequestHttpEntityFor { mapper.writeValueAsString(resolver) }, String) + + then: + result.statusCodeValue == 201 + } @Unroll def "PUT concrete MetadataResolver of type #resolverType with updated changes -> /api/MetadataResolvers/{resourceId}"(String resolverType) { 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 472b20694..e28220cc6 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 @@ -507,6 +507,7 @@ class TestObjectGenerator { it.name = 'FilesystemMetadata' it.xmlId = 'FilesystemMetadata' it.metadataFile = 'metadata/metadata.xml' + it.doInitialization = Boolean.FALSE // Removed the default setting, added back to keep tests the same. it.reloadableMetadataResolverAttributes = new ReloadableMetadataResolverAttributes().with { it From 306c551ff37e181497e447925f6037231d1827ad Mon Sep 17 00:00:00 2001 From: chasegawa Date: Mon, 2 Aug 2021 11:48:01 -0700 Subject: [PATCH 12/13] SHIBUI-1992 removing three more defaults found --- .../admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java | 3 --- backend/src/test/resources/conf/278.2.xml | 2 +- backend/src/test/resources/conf/278.xml | 2 +- backend/src/test/resources/conf/704.1.xml | 2 +- backend/src/test/resources/conf/704.2.xml | 2 +- backend/src/test/resources/conf/704.3.xml | 2 +- backend/src/test/resources/conf/984-2.xml | 2 +- backend/src/test/resources/conf/984.xml | 2 +- 8 files changed, 7 insertions(+), 10 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java index 732078747..a7fcef9e9 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/DynamicHttpMetadataResolver.java @@ -46,9 +46,6 @@ public class DynamicHttpMetadataResolver extends MetadataResolver { public DynamicHttpMetadataResolver() { type = "DynamicHttpMetadataResolver"; this.httpMetadataResolverAttributes = new HttpMetadataResolverAttributes(); - this.httpMetadataResolverAttributes.setConnectionRequestTimeout(DEFAULT_TIMEOUT); - this.httpMetadataResolverAttributes.setConnectionTimeout(DEFAULT_TIMEOUT); - this.httpMetadataResolverAttributes.setSocketTimeout(DEFAULT_TIMEOUT); this.dynamicMetadataResolverAttributes = new DynamicMetadataResolverAttributes(); } } diff --git a/backend/src/test/resources/conf/278.2.xml b/backend/src/test/resources/conf/278.2.xml index 3e4fb9d47..c8bd08e6b 100644 --- a/backend/src/test/resources/conf/278.2.xml +++ b/backend/src/test/resources/conf/278.2.xml @@ -1,5 +1,5 @@ - + content diff --git a/backend/src/test/resources/conf/278.xml b/backend/src/test/resources/conf/278.xml index 81e7072fc..0c1bfd794 100644 --- a/backend/src/test/resources/conf/278.xml +++ b/backend/src/test/resources/conf/278.xml @@ -1,5 +1,5 @@ - + content diff --git a/backend/src/test/resources/conf/704.1.xml b/backend/src/test/resources/conf/704.1.xml index 9d9f4d4b8..262dc8414 100644 --- a/backend/src/test/resources/conf/704.1.xml +++ b/backend/src/test/resources/conf/704.1.xml @@ -1,5 +1,5 @@ - + some content diff --git a/backend/src/test/resources/conf/704.2.xml b/backend/src/test/resources/conf/704.2.xml index e97ecb41e..5a185379c 100644 --- a/backend/src/test/resources/conf/704.2.xml +++ b/backend/src/test/resources/conf/704.2.xml @@ -1,5 +1,5 @@ - + diff --git a/backend/src/test/resources/conf/704.3.xml b/backend/src/test/resources/conf/704.3.xml index d408c59eb..4fdc26106 100644 --- a/backend/src/test/resources/conf/704.3.xml +++ b/backend/src/test/resources/conf/704.3.xml @@ -1,5 +1,5 @@ - + some content diff --git a/backend/src/test/resources/conf/984-2.xml b/backend/src/test/resources/conf/984-2.xml index f056d8037..c3bd16e05 100644 --- a/backend/src/test/resources/conf/984-2.xml +++ b/backend/src/test/resources/conf/984-2.xml @@ -1,5 +1,5 @@ - + http://mdq-beta.incommon.org/global diff --git a/backend/src/test/resources/conf/984.xml b/backend/src/test/resources/conf/984.xml index 09b4778eb..a67eb1a93 100644 --- a/backend/src/test/resources/conf/984.xml +++ b/backend/src/test/resources/conf/984.xml @@ -1,5 +1,5 @@ - + http://mdq-beta.incommon.org/global From 7dac3fde7eb18af77422f8099487e539de84e59d Mon Sep 17 00:00:00 2001 From: chasegawa Date: Mon, 2 Aug 2021 12:44:32 -0700 Subject: [PATCH 13/13] SHIBUI-1992 Removing default from NameIDFormatFilter --- .../shibboleth/admin/ui/domain/filters/NameIdFormatFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/NameIdFormatFilter.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/NameIdFormatFilter.java index 906926916..47bb0810b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/NameIdFormatFilter.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/NameIdFormatFilter.java @@ -27,7 +27,7 @@ public NameIdFormatFilter() { type = "NameIDFormat"; } - private Boolean removeExistingFormats = false; + private Boolean removeExistingFormats; @ElementCollection @OrderColumn