From ca965cef8c300716617e8b523028dbe3744aeac7 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Mon, 18 Jun 2018 11:28:03 -0400 Subject: [PATCH 1/6] SHIBUI-605: testing filter generation --- ...ncommonJPAMetadataResolverServiceImplTests.groovy | 12 ++++++++++++ backend/src/test/resources/conf/278.2.xml | 5 ++++- backend/src/test/resources/conf/278.xml | 5 ++++- 3 files changed, 20 insertions(+), 2 deletions(-) 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 7bf8c2cba..26d05eda8 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 @@ -4,6 +4,7 @@ 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 @@ -41,6 +42,9 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { def 'simple test generation of metadata-providers.xml'() { when: + def mr = metadataResolverRepository.findAll().iterator().next() + mr.metadataFilters << entityRoleWhiteListFilterForXmlGenerationTests() + metadataResolverRepository.save(mr) def output = metadataResolverService.generateConfiguration() then: @@ -66,6 +70,7 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { it.attributes = [attribute] it }) + mr.metadataFilters << entityRoleWhiteListFilterForXmlGenerationTests() metadataResolverRepository.save(mr) def output = metadataResolverService.generateConfiguration() @@ -74,6 +79,13 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { assert generatedXmlIsTheSameAsExpectedXml('/conf/278.2.xml', output) } + EntityRoleWhiteListFilter entityRoleWhiteListFilterForXmlGenerationTests() { + new EntityRoleWhiteListFilter().with { + it.retainedRoles = ['md:SPSSODescriptor'] + it + } + } + //TODO: check that this configuration is sufficient @TestConfiguration static class TestConfig { diff --git a/backend/src/test/resources/conf/278.2.xml b/backend/src/test/resources/conf/278.2.xml index 7b8718caf..08cf109cd 100644 --- a/backend/src/test/resources/conf/278.2.xml +++ b/backend/src/test/resources/conf/278.2.xml @@ -24,6 +24,9 @@ https://sp1.example.org + + md:SPSSODescriptor + - + \ No newline at end of file diff --git a/backend/src/test/resources/conf/278.xml b/backend/src/test/resources/conf/278.xml index 5d02714ff..f888dc38b 100644 --- a/backend/src/test/resources/conf/278.xml +++ b/backend/src/test/resources/conf/278.xml @@ -18,6 +18,9 @@ + + md:SPSSODescriptor + - + \ No newline at end of file From a12695517c19aaa0318acb4db4857e9d2a1ec8a2 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Mon, 18 Jun 2018 16:01:29 -0400 Subject: [PATCH 2/6] SHIBUI-526(552) --- .../JPAMetadataResolverServiceImpl.groovy | 9 +++++++- .../controller/MetadataFiltersController.java | 6 +++++ .../filters/RequiredValidUntilFilter.java | 22 +++++++++++++++++++ ...JPAMetadataResolverServiceImplTests.groovy | 19 ++++++++++++++-- .../admin/ui/util/TestHelpers.groovy | 10 ++++++--- backend/src/test/resources/conf/552.xml | 9 ++++++++ 6 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/RequiredValidUntilFilter.java create mode 100644 backend/src/test/resources/conf/552.xml 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 d24174234..1e899a230 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 @@ -4,7 +4,7 @@ import com.google.common.base.Predicate 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.domain.filters.RequiredValidUntilFilter import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects @@ -142,6 +142,13 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { } } + void constructXmlNodeForFilter(RequiredValidUntilFilter filter, def markupBuilderDelegate) { + markupBuilderDelegate.MetadataFilter( + 'xsi:type': 'RequiredValidUntil', + maxValidityInterval: filter.maxValidityInterval + ) + } + void constructXmlNodeForResolver(FileBackedHttpMetadataResolver resolver, def markupBuilderDelegate, Closure childNodes) { markupBuilderDelegate.MetadataProvider(id: resolver.name, 'xsi:type': 'FileBackedHTTPMetadataProvider', diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java index 40de7ea46..9735b708f 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersController.java @@ -3,6 +3,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilter; import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityRoleWhiteListFilter; import edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter; +import edu.internet2.tier.shibboleth.admin.ui.domain.filters.RequiredValidUntilFilter; import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.FilterRepresentation; import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver; import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository; @@ -168,6 +169,11 @@ else if(filterWithUpdatedData instanceof EntityRoleWhiteListFilter) { toFilter.setRemoveRolelessEntityDescriptors(fromFilter.getRemoveRolelessEntityDescriptors()); toFilter.setRetainedRoles(fromFilter.getRetainedRoles()); } + else if(filterWithUpdatedData instanceof RequiredValidUntilFilter) { + RequiredValidUntilFilter toFilter = RequiredValidUntilFilter.class.cast(filterToBeUpdated); + RequiredValidUntilFilter fromFilter = RequiredValidUntilFilter.class.cast(filterWithUpdatedData); + toFilter.setMaxValidityInterval(fromFilter.getMaxValidityInterval()); + } //TODO: add other types of concrete filters update here } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/RequiredValidUntilFilter.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/RequiredValidUntilFilter.java new file mode 100644 index 000000000..86bc03426 --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/RequiredValidUntilFilter.java @@ -0,0 +1,22 @@ +package edu.internet2.tier.shibboleth.admin.ui.domain.filters; + +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import javax.persistence.Entity; + +@Entity +@EqualsAndHashCode(callSuper = true) +@Getter +@Setter +@ToString +public class RequiredValidUntilFilter extends MetadataFilter { + + public RequiredValidUntilFilter() { + type = "RequiredValidUntil"; + } + + private String maxValidityInterval; +} 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 c3dadb8c2..e9d886be1 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 @@ -4,6 +4,7 @@ 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.RequiredValidUntilFilter import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository @@ -138,7 +139,21 @@ class JPAMetadataResolverServiceImplTests extends Specification { genXmlSnippet(markupBuilder) { JPAMetadataResolverServiceImpl.cast(metadataResolverService).constructXmlNodeForFilter(filter, it) } then: - assert generatedXmlIsTheSameAsExpectedXml('/conf/533.xml', domBuilder.parseText(writer.toString())) + generatedXmlIsTheSameAsExpectedXml('/conf/533.xml', domBuilder.parseText(writer.toString())) + } + + def 'test generating RequiredValidUntilFilter xml snippet'() { + given: + def filter = new RequiredValidUntilFilter().with { + it.maxValidityInterval = 'P14D' + it + } + + when: + genXmlSnippet(markupBuilder) { JPAMetadataResolverServiceImpl.cast(metadataResolverService).constructXmlNodeForFilter(filter, it) } + + then: + generatedXmlIsTheSameAsExpectedXml('/conf/552.xml', domBuilder.parseText(writer.toString())) } def 'test generating FileBackedHttMetadataResolver xml snippet'() { @@ -151,7 +166,7 @@ class JPAMetadataResolverServiceImplTests extends Specification { } then: - assert generatedXmlIsTheSameAsExpectedXml('/conf/532.xml', domBuilder.parseText(writer.toString())) + generatedXmlIsTheSameAsExpectedXml('/conf/532.xml', domBuilder.parseText(writer.toString())) } static genXmlSnippet(MarkupBuilder xml, Closure xmlNodeGenerator) { 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 0212a788f..04066c581 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 @@ -26,8 +26,12 @@ class TestHelpers { return count } - static generatedXmlIsTheSameAsExpectedXml(String expectedXmlResource, Document generatedXml) { - !DiffBuilder.compare(Input.fromStream(TestHelpers.getResourceAsStream(expectedXmlResource))).withTest(Input.fromDocument(generatedXml)) - .ignoreComments().ignoreWhitespace().build().hasDifferences() + static void generatedXmlIsTheSameAsExpectedXml(String expectedXmlResource, Document generatedXml) { + assert !DiffBuilder.compare(Input.fromStream(TestHelpers.getResourceAsStream(expectedXmlResource))) + .withTest(Input.fromDocument(generatedXml)) + .ignoreComments() + .ignoreWhitespace() + .build() + .hasDifferences() } } diff --git a/backend/src/test/resources/conf/552.xml b/backend/src/test/resources/conf/552.xml new file mode 100644 index 000000000..6253b2323 --- /dev/null +++ b/backend/src/test/resources/conf/552.xml @@ -0,0 +1,9 @@ + + + + + From 0e5cc666403bb2dfa132dd1e507e36666922650c Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Mon, 18 Jun 2018 16:24:13 -0400 Subject: [PATCH 3/6] SHIBUI-522 --- .../service/JPAMetadataResolverServiceImpl.groovy | 5 +---- ...ommonJPAMetadataResolverServiceImplTests.groovy | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 6 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 1e899a230..1a40f3d87 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 @@ -100,10 +100,6 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { 'requireSignedRoot': 'true', 'certificateFile': '%{idp.home}/credentials/inc-md-cert.pem' ) - MetadataFilter( - 'xsi:type': 'RequiredValidUntil', - 'maxValidityInterval': 'P14D' - ) //TODO: enhance mr.metadataFilters.each { edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter filter -> constructXmlNodeForFilter(filter, delegate) @@ -111,6 +107,7 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { } } } + println writer.toString() return DOMBuilder.newInstance().parseText(writer.toString()) } } 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 26d05eda8..233696386 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 @@ -5,6 +5,7 @@ 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.domain.filters.RequiredValidUntilFilter 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 @@ -43,18 +44,20 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { def 'simple test generation of metadata-providers.xml'() { when: def mr = metadataResolverRepository.findAll().iterator().next() + mr.metadataFilters << requiredValidUntilFilterForXmlGenerationTests() mr.metadataFilters << entityRoleWhiteListFilterForXmlGenerationTests() metadataResolverRepository.save(mr) def output = metadataResolverService.generateConfiguration() then: - assert generatedXmlIsTheSameAsExpectedXml('/conf/278.xml', output) + generatedXmlIsTheSameAsExpectedXml('/conf/278.xml', output) } def 'test generation of metadata-providers.xml with filters'() { when: //TODO: this might break later def mr = metadataResolverRepository.findAll().iterator().next() + mr.metadataFilters << requiredValidUntilFilterForXmlGenerationTests() mr.metadataFilters.add(new EntityAttributesFilter().with { it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with { it.entityAttributesFilterTargetType = EntityAttributesFilterTarget.EntityAttributesFilterTargetType.ENTITY @@ -76,7 +79,7 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { def output = metadataResolverService.generateConfiguration() then: - assert generatedXmlIsTheSameAsExpectedXml('/conf/278.2.xml', output) + generatedXmlIsTheSameAsExpectedXml('/conf/278.2.xml', output) } EntityRoleWhiteListFilter entityRoleWhiteListFilterForXmlGenerationTests() { @@ -86,6 +89,13 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { } } + RequiredValidUntilFilter requiredValidUntilFilterForXmlGenerationTests() { + new RequiredValidUntilFilter().with { + it.maxValidityInterval = 'P14D' + it + } + } + //TODO: check that this configuration is sufficient @TestConfiguration static class TestConfig { From 85cebae97927033dfc274cc6533b331f1248d28f Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Mon, 18 Jun 2018 16:25:22 -0400 Subject: [PATCH 4/6] SHIBUI-522 --- .../admin/ui/service/JPAMetadataResolverServiceImpl.groovy | 1 - 1 file changed, 1 deletion(-) 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 1a40f3d87..cc7c4b383 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 @@ -107,7 +107,6 @@ class JPAMetadataResolverServiceImpl implements MetadataResolverService { } } } - println writer.toString() return DOMBuilder.newInstance().parseText(writer.toString()) } } From 63c41e6b0226da620c9d0f4f608491adf211a5c2 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Tue, 19 Jun 2018 15:56:08 -0400 Subject: [PATCH 5/6] SHIBUI-526: testing --- .../ui/domain/filters/MetadataFilter.java | 3 +- ...ymorphicFiltersJacksonHandlingTests.groovy | 45 +++++++++++++++---- .../admin/ui/util/TestObjectGenerator.groovy | 10 +++++ 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/MetadataFilter.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/MetadataFilter.java index aa5b063a4..3702bba3d 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/MetadataFilter.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/filters/MetadataFilter.java @@ -29,7 +29,8 @@ @ToString @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "@type", visible = true) @JsonSubTypes({@JsonSubTypes.Type(value=EntityRoleWhiteListFilter.class, name="EntityRoleWhiteList"), - @JsonSubTypes.Type(value=EntityAttributesFilter.class, name="EntityAttributes")}) + @JsonSubTypes.Type(value=EntityAttributesFilter.class, name="EntityAttributes"), + @JsonSubTypes.Type(value=RequiredValidUntilFilter.class, name="RequiredValidUntil")}) public class MetadataFilter extends AbstractAuditable { @JsonProperty("@type") diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/PolymorphicFiltersJacksonHandlingTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/PolymorphicFiltersJacksonHandlingTests.groovy index c9cef2cb3..4e5899f49 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/PolymorphicFiltersJacksonHandlingTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/PolymorphicFiltersJacksonHandlingTests.groovy @@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.SerializationFeature import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilter import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityRoleWhiteListFilter import edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter +import edu.internet2.tier.shibboleth.admin.ui.domain.filters.RequiredValidUntilFilter import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects import edu.internet2.tier.shibboleth.admin.ui.util.TestObjectGenerator import edu.internet2.tier.shibboleth.admin.util.AttributeUtility @@ -74,28 +75,54 @@ class PolymorphicFiltersJacksonHandlingTests extends Specification { simulatedPrePersistentFilter.relyingPartyOverrides = simulatedPersistentFilter.relyingPartyOverrides simulatedPrePersistentFilter.fromTransientRepresentation() + expect: + simulatedPersistentFilter.attributes.size() == simulatedPrePersistentFilter.attributes.size() + } + + def "Correct polymorphic serialization of RequiredValidUntilFilter"() { + given: + def givenFilterJson = """ + { + "@type" : "RequiredValidUntil", + "createdDate" : null, + "modifiedDate" : null, + "createdBy" : null, + "modifiedBy" : null, + "name" : null, + "resourceId" : "9667ae04-8c36-4741-be62-dd325e7d6790", + "filterEnabled" : true, + "version" : 0, + "maxValidityInterval" : "P14D" + + } + """ + when: - def jsonFromPersistentFilter = mapper.writeValueAsString(simulatedPersistentFilter) - def jsonFromPrePersistentFilter = mapper.writeValueAsString(simulatedPrePersistentFilter) - println("JSON from persistent filter -> $jsonFromPersistentFilter") - println("JSON from PRE persistent filter -> $jsonFromPrePersistentFilter") - println("Attributes from persistent filter -> $simulatedPersistentFilter.attributes") - println("Attributes from PRE persistent filter -> $simulatedPrePersistentFilter.attributes") + def deSerializedFilter = mapper.readValue(givenFilterJson, MetadataFilter) + def json = mapper.writeValueAsString(deSerializedFilter) + println(json) + def roundTripFilter = mapper.readValue(json, MetadataFilter) then: - simulatedPersistentFilter.attributes.size() == simulatedPrePersistentFilter.attributes.size() + roundTripFilter == deSerializedFilter + + and: + deSerializedFilter instanceof RequiredValidUntilFilter + roundTripFilter instanceof RequiredValidUntilFilter } def "List of filters with correct types"() { given: - def filters = testObjectGenerator.buildAllTypesOfFilterList(); + def filters = testObjectGenerator.buildAllTypesOfFilterList() when: def json = mapper.writeValueAsString(filters) println(json) then: - json + json.contains('EntityAttributes') + json.contains('RequiredValidUntil') + json.contains('EntityAttributes') } 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 1b020c499..84414f774 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 @@ -11,6 +11,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.OrganizationName import edu.internet2.tier.shibboleth.admin.ui.domain.OrganizationURL import edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityRoleWhiteListFilter import edu.internet2.tier.shibboleth.admin.ui.domain.filters.MetadataFilter +import edu.internet2.tier.shibboleth.admin.ui.domain.filters.RequiredValidUntilFilter import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.FilterRepresentation import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.FilterTargetRepresentation import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.RelyingPartyOverridesRepresentation @@ -19,6 +20,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResol import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ReloadableMetadataResolverAttributes import edu.internet2.tier.shibboleth.admin.util.AttributeUtility import edu.internet2.tier.shibboleth.admin.util.MDDCConstants + import org.opensaml.saml.saml2.metadata.Organization import java.util.function.Supplier @@ -64,6 +66,7 @@ class TestObjectGenerator { (1..generator.randomInt(4, 10)).each { filterList.add(buildFilter { entityAttributesFilter() }) filterList.add(buildFilter { entityRoleWhitelistFilter() }) + filterList.add(buildFilter { requiredValidUntilFilter() }) } return filterList } @@ -87,6 +90,13 @@ class TestObjectGenerator { } } + RequiredValidUntilFilter requiredValidUntilFilter() { + return new RequiredValidUntilFilter().with { + it.maxValidityInterval = 'P14D' + it + } + } + EntityAttributesFilter copyOf(EntityAttributesFilter entityAttributesFilter) { new EntityAttributesFilter().with { it.name = entityAttributesFilter.name From dbfe084153c6413aae2b527bb4c0efe7c4af1267 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Wed, 20 Jun 2018 13:09:13 -0400 Subject: [PATCH 6/6] SHIBUI-526 merging master and conflicts resolution --- .../IncommonJPAMetadataResolverServiceImplTests.groovy | 2 +- backend/src/test/resources/conf/278.2.xml | 8 -------- backend/src/test/resources/conf/278.xml | 8 -------- 3 files changed, 1 insertion(+), 17 deletions(-) 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 a501e2402..4e4600ae9 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 @@ -63,7 +63,7 @@ class IncommonJPAMetadataResolverServiceImplTests extends Specification { mr.metadataFilters << requiredValidUntilFilterForXmlGenerationTests() mr.metadataFilters.add(new EntityAttributesFilter().with { it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with { - it.entityAttributesFilterTargetType = EntityAttributesFilterTargetType.ENTITY + it.entityAttributesFilterTargetType = EntityAttributesFilterTarget.EntityAttributesFilterTargetType.ENTITY it.value = ['https://sp1.example.org'] it } diff --git a/backend/src/test/resources/conf/278.2.xml b/backend/src/test/resources/conf/278.2.xml index 19efe257b..bd6c3b082 100644 --- a/backend/src/test/resources/conf/278.2.xml +++ b/backend/src/test/resources/conf/278.2.xml @@ -45,20 +45,12 @@ refreshDelayFactor="0.75"> - - - md:SPSSODescriptor - - - - md:SPSSODescriptor - \ No newline at end of file diff --git a/backend/src/test/resources/conf/278.xml b/backend/src/test/resources/conf/278.xml index 1e6f0aa9b..7241943ab 100644 --- a/backend/src/test/resources/conf/278.xml +++ b/backend/src/test/resources/conf/278.xml @@ -38,19 +38,11 @@ refreshDelayFactor="0.75"> - - - md:SPSSODescriptor - - - - md:SPSSODescriptor - \ No newline at end of file