Skip to content

Commit

Permalink
SHIBUI-522[533]
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Jun 7, 2018
1 parent 1df9d3b commit c03a937
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ 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 @@ -19,8 +18,6 @@ import org.springframework.context.annotation.Bean
import org.springframework.data.jpa.repository.config.EnableJpaRepositories
import org.springframework.test.annotation.DirtiesContext
import org.springframework.test.context.ContextConfiguration
import org.xmlunit.builder.DiffBuilder
import org.xmlunit.builder.Input
import spock.lang.Specification

import static edu.internet2.tier.shibboleth.admin.ui.util.TestHelpers.*
Expand All @@ -46,7 +43,7 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification {
def output = metadataResolverService.generateConfiguration()

then:
assert generatedXmlTheSameAsExpectedXml('/conf/278.xml', output)
assert generatedXmlIsTheSameAsExpectedXml('/conf/278.xml', output)
}

def 'test generation of metadata-providers.xml with filters'() {
Expand All @@ -73,7 +70,7 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification {
def output = metadataResolverService.generateConfiguration()

then:
assert generatedXmlTheSameAsExpectedXml('/conf/278.2.xml', output)
assert generatedXmlIsTheSameAsExpectedXml('/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 @@ -4,11 +4,11 @@ import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfigurat
import edu.internet2.tier.shibboleth.admin.ui.configuration.SearchConfiguration
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilter
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilterTarget
import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityRoleWhiteListFilter
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.TestObjectGenerator
import edu.internet2.tier.shibboleth.admin.util.AttributeUtility
import groovy.xml.DOMBuilder
import groovy.xml.MarkupBuilder
import net.shibboleth.ext.spring.resource.ResourceHelper
import net.shibboleth.utilities.java.support.resolver.CriteriaSet
Expand All @@ -32,6 +32,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 Down Expand Up @@ -59,8 +61,21 @@ class JPAMetadataResolverServiceImplTests extends Specification {

TestObjectGenerator testObjectGenerator

DOMBuilder domBuilder

StringWriter writer

MarkupBuilder markupBuilder

def setup() {
testObjectGenerator = new TestObjectGenerator(attributeUtility)
domBuilder = DOMBuilder.newInstance()
writer = new StringWriter()
markupBuilder = new MarkupBuilder(writer)
}

def cleanup() {
writer.close()
}

def 'test adding a filter'() {
Expand Down Expand Up @@ -113,15 +128,13 @@ class JPAMetadataResolverServiceImplTests extends Specification {

def 'test generating EntityRoleWhitelistFilter xml snippet'() {
given:
def xml = new MarkupBuilder()
def filter = testObjectGenerator.entityRoleWhitelistFilter()

when:
genXmlSnippet(xml) { JPAMetadataResolverServiceImpl.cast(metadataResolverService).constructFilterXmlNode(filter, it) }
println xml.toString()
genXmlSnippet(markupBuilder) { JPAMetadataResolverServiceImpl.cast(metadataResolverService).constructFilterXmlNode(filter, it) }

then:
xml
assert generatedXmlIsTheSameAsExpectedXml('/conf/533.xml', domBuilder.parseText(writer.toString()))
}

static genXmlSnippet(MarkupBuilder xml, Closure xmlNodeGenerator) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class TestHelpers {
return count
}

static generatedXmlTheSameAsExpectedXml(String expectedXmlResource, Document generatedXml) {
static generatedXmlIsTheSameAsExpectedXml(String expectedXmlResource, Document generatedXml) {
!DiffBuilder.compare(Input.fromStream(this.class.getResourceAsStream(expectedXmlResource))).withTest(Input.fromDocument(generatedXml)).ignoreComments().ignoreWhitespace().build().hasDifferences()
}
}
12 changes: 12 additions & 0 deletions backend/src/test/resources/conf/533.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- This file is an EXAMPLE metadata configuration file. -->
<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">
<MetadataFilter xsi:type="EntityRoleWhiteList" xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata">
<RetainedRole>role1</RetainedRole>
<RetainedRole>role2</RetainedRole>
</MetadataFilter>
</MetadataProvider>

0 comments on commit c03a937

Please sign in to comment.