Skip to content

Commit

Permalink
SHIBUI-522[533] wip
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Jun 7, 2018
1 parent cb86b66 commit 1df9d3b
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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])
Expand All @@ -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'() {
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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()
}
}
3 changes: 0 additions & 3 deletions backend/src/test/resources/conf/278.2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@
<MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="true"
certificateFile="%{idp.home}/credentials/inc-md-cert.pem" />
<MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P14D" />
<MetadataFilter xsi:type="EntityRoleWhiteList">
<RetainedRole>md:SPSSODescriptor</RetainedRole>
</MetadataFilter>
<MetadataFilter xsi:type="EntityAttributes">
<saml:Attribute Name="here">
<saml:AttributeValue>there</saml:AttributeValue>
Expand Down
3 changes: 0 additions & 3 deletions backend/src/test/resources/conf/278.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@
<MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="true"
certificateFile="%{idp.home}/credentials/inc-md-cert.pem" />
<MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P14D" />
<MetadataFilter xsi:type="EntityRoleWhiteList">
<RetainedRole>md:SPSSODescriptor</RetainedRole>
</MetadataFilter>
</MetadataProvider>

</MetadataProvider>

0 comments on commit 1df9d3b

Please sign in to comment.