From 1df9d3b6d2afb0040ea130252a64c7b2adf85d39 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Thu, 7 Jun 2018 12:04:15 -0400 Subject: [PATCH] SHIBUI-522[533] wip --- .../JPAMetadataResolverServiceImpl.groovy | 5 --- ...JPAMetadataResolverServiceImplTests.groovy | 7 ++-- ...JPAMetadataResolverServiceImplTests.groovy | 34 +++++-------------- .../admin/ui/util/TestHelpers.groovy | 7 ++++ backend/src/test/resources/conf/278.2.xml | 3 -- backend/src/test/resources/conf/278.xml | 3 -- 6 files changed, 21 insertions(+), 38 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 e31620d18..e8c074930 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 @@ -105,11 +105,6 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { 'xsi:type': 'RequiredValidUntil', 'maxValidityInterval': 'P14D' ) - MetadataFilter( - 'xsi:type': 'EntityRoleWhiteList' - ) { - RetainedRole('md:SPSSODescriptor') - } //TODO: enhance mr.metadataFilters.each { edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter filter -> constructFilterXmlNode(filter, delegate) diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/IncommonJPAMetadataResolverServiceImplTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/IncommonJPAMetadataResolverServiceImplTests.groovy index a9e5aa638..bc32cc580 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/IncommonJPAMetadataResolverServiceImplTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/service/IncommonJPAMetadataResolverServiceImplTests.groovy @@ -6,6 +6,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFil import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilterTarget import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository +import edu.internet2.tier.shibboleth.admin.ui.util.TestHelpers import edu.internet2.tier.shibboleth.admin.util.AttributeUtility import org.opensaml.saml.metadata.resolver.ChainingMetadataResolver import org.opensaml.saml.metadata.resolver.MetadataResolver @@ -22,6 +23,8 @@ import org.xmlunit.builder.DiffBuilder import org.xmlunit.builder.Input import spock.lang.Specification +import static edu.internet2.tier.shibboleth.admin.ui.util.TestHelpers.* + @SpringBootTest @DataJpaTest @ContextConfiguration(classes = [CoreShibUiConfiguration, SearchConfiguration]) @@ -43,7 +46,7 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { def output = metadataResolverService.generateConfiguration() then: - assert !DiffBuilder.compare(Input.fromStream(this.class.getResourceAsStream('/conf/278.xml'))).withTest(Input.fromDocument(output)).ignoreComments().ignoreWhitespace().build().hasDifferences() + assert generatedXmlTheSameAsExpectedXml('/conf/278.xml', output) } def 'test generation of metadata-providers.xml with filters'() { @@ -70,7 +73,7 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { def output = metadataResolverService.generateConfiguration() then: - assert !DiffBuilder.compare(Input.fromStream(this.class.getResourceAsStream('/conf/278.2.xml'))).withTest(Input.fromDocument(output)).ignoreComments().ignoreWhitespace().build().hasDifferences() + assert generatedXmlTheSameAsExpectedXml('/conf/278.2.xml', output) } //TODO: check that this configuration is sufficient 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 e9dc3c390..fc24d7a21 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 @@ -111,43 +111,27 @@ class JPAMetadataResolverServiceImplTests extends Specification { !diff.hasDifferences() } - def 'test generating filter xml snippet'() { + def 'test generating EntityRoleWhitelistFilter xml snippet'() { given: def xml = new MarkupBuilder() def filter = testObjectGenerator.entityRoleWhitelistFilter() when: - xml.MetadataProvider(id: 'ShibbolethMetadata', - xmlns: 'urn:mace:shibboleth:2.0:metadata', - 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', - 'xsi:type': 'ChainingMetadataProvider', - 'xsi:schemaLocation': 'urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd urn:mace:shibboleth:2.0:resource http://shibboleth.net/schema/idp/shibboleth-resource.xsd urn:mace:shibboleth:2.0:security http://shibboleth.net/schema/idp/shibboleth-security.xsd urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd urn:oasis:names:tc:SAML:2.0:assertion http://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd' - ) { - MetadataProvider(id: 'HTTPMetadata', - 'xsi:type': 'FileBackedHTTPMetadataProvider', - backingFile: '%{idp.home}/metadata/incommonmd.xml', - metadataURL: 'http://md.incommon.org/InCommon/InCommon-metadata.xml', - minRefreshDelay: 'PT5M', - maxRefreshDelay: 'PT1H', - refreshDelayFactor: '0.75' - ) { - genXmlSnippet(filter, delegate) - } - } + genXmlSnippet(xml) { JPAMetadataResolverServiceImpl.cast(metadataResolverService).constructFilterXmlNode(filter, it) } println xml.toString() then: xml } - private genXmlSnippet(EntityRoleWhiteListFilter filter, xmlDelegate) { - xmlDelegate.MetadataFilter( - 'xsi:type': 'EntityRoleWhiteList', - 'xmlns:md': 'urn:oasis:names:tc:SAML:2.0:metadata' + static genXmlSnippet(MarkupBuilder xml, Closure xmlNodeGenerator) { + xml.MetadataProvider(id: 'ShibbolethMetadata', + xmlns: 'urn:mace:shibboleth:2.0:metadata', + 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', + 'xsi:type': 'ChainingMetadataProvider', + 'xsi:schemaLocation': 'urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd urn:mace:shibboleth:2.0:resource http://shibboleth.net/schema/idp/shibboleth-resource.xsd urn:mace:shibboleth:2.0:security http://shibboleth.net/schema/idp/shibboleth-security.xsd urn:oasis:names:tc:SAML:2.0:metadata http://docs.oasis-open.org/security/saml/v2.0/saml-schema-metadata-2.0.xsd urn:oasis:names:tc:SAML:2.0:assertion http://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd' ) { - filter.retainedRoles.each { - xmlDelegate.RetainedRole(it) - } + xmlNodeGenerator(delegate) } } 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 1a6a085e2..d235f9d06 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,6 +2,9 @@ package edu.internet2.tier.shibboleth.admin.ui.util import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.RelyingPartyOverridesRepresentation import org.apache.commons.lang.StringUtils +import org.w3c.dom.Document +import org.xmlunit.builder.DiffBuilder +import org.xmlunit.builder.Input /** * @author Bill Smith (wsmith@unicon.net) @@ -22,4 +25,8 @@ class TestHelpers { return count } + + static generatedXmlTheSameAsExpectedXml(String expectedXmlResource, Document generatedXml) { + !DiffBuilder.compare(Input.fromStream(this.class.getResourceAsStream(expectedXmlResource))).withTest(Input.fromDocument(generatedXml)).ignoreComments().ignoreWhitespace().build().hasDifferences() + } } diff --git a/backend/src/test/resources/conf/278.2.xml b/backend/src/test/resources/conf/278.2.xml index d8305ada3..7b8718caf 100644 --- a/backend/src/test/resources/conf/278.2.xml +++ b/backend/src/test/resources/conf/278.2.xml @@ -18,9 +18,6 @@ - - md:SPSSODescriptor - there diff --git a/backend/src/test/resources/conf/278.xml b/backend/src/test/resources/conf/278.xml index e6e0e88d0..5d02714ff 100644 --- a/backend/src/test/resources/conf/278.xml +++ b/backend/src/test/resources/conf/278.xml @@ -18,9 +18,6 @@ - - md:SPSSODescriptor -