From b499bb99d9d14e2309b71e2482b93d6d2638ab19 Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Tue, 27 Nov 2018 11:58:24 -0500 Subject: [PATCH] SHIBUI-980 wip --- .../ui/controller/MetadataFiltersController.java | 7 +++++++ .../MetadataFiltersControllerTests.groovy | 2 ++ ...PolymorphicFiltersJacksonHandlingTests.groovy | 4 ++++ .../ui/repository/FilterRepositoryTests.groovy | 2 +- .../admin/ui/util/TestObjectGenerator.groovy | 16 ++++++++++++++++ 5 files changed, 30 insertions(+), 1 deletion(-) 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 431632023..0ae56b781 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.NameIdFormatFilter; import edu.internet2.tier.shibboleth.admin.ui.domain.filters.RequiredValidUntilFilter; import edu.internet2.tier.shibboleth.admin.ui.domain.filters.SignatureValidationFilter; import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver; @@ -224,6 +225,12 @@ else if(filterWithUpdatedData instanceof RequiredValidUntilFilter) { RequiredValidUntilFilter fromFilter = RequiredValidUntilFilter.class.cast(filterWithUpdatedData); toFilter.setMaxValidityInterval(fromFilter.getMaxValidityInterval()); } + else if (filterWithUpdatedData instanceof NameIdFormatFilter) { + NameIdFormatFilter toFilter = NameIdFormatFilter.class.cast(filterToBeUpdated); + NameIdFormatFilter fromFilter = NameIdFormatFilter.class.cast(filterWithUpdatedData); + toFilter.setRemoveExistingFormats(fromFilter.getRemoveExistingFormats()); + toFilter.setFormats(fromFilter.getFormats()); + } //TODO: add other types of concrete filters update here } diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerTests.groovy index db1f15ab9..15717ca61 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataFiltersControllerTests.groovy @@ -177,6 +177,7 @@ class MetadataFiltersControllerTests extends Specification { 'entityRoleWhiteList' | _ 'signatureValidation' | _ 'requiredValidUntil' | _ + 'nameIdFormat' | _ } @Unroll @@ -222,6 +223,7 @@ class MetadataFiltersControllerTests extends Specification { 'entityRoleWhiteList' | _ 'signatureValidation' | _ 'requiredValidUntil' | _ + 'nameIdFormat' | _ } def "FilterController.update filter 409's if the version numbers don't match"() { diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/filters/PolymorphicFiltersJacksonHandlingTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/filters/PolymorphicFiltersJacksonHandlingTests.groovy index adff06db3..383632119 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/filters/PolymorphicFiltersJacksonHandlingTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/domain/filters/PolymorphicFiltersJacksonHandlingTests.groovy @@ -193,6 +193,10 @@ class PolymorphicFiltersJacksonHandlingTests extends Specification { "format" : "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "value" : "https://sp2.example.org", "type" : "ENTITY" + }, { + "format" : "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent", + "value" : "conditionRefBeanId", + "type" : "CONDITION_REF" }, { "format" : "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", "value" : "input.getEntityID().equals(\\"https://sp1.example.org\\");", diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/FilterRepositoryTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/FilterRepositoryTests.groovy index 5d9829ad9..7a733d011 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/FilterRepositoryTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/FilterRepositoryTests.groovy @@ -83,6 +83,6 @@ class FilterRepositoryTests extends Specification { then: persistedFilter.audId > 0L - persistedFilter.formats.size() == 3 + persistedFilter.formats.size() == 4 } } 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 f07dd212b..1a44cf1c7 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 @@ -155,6 +155,9 @@ class TestObjectGenerator { case 'requiredValidUntil': randomFilter = requiredValidUntilFilter() break + case 'nameIdFormat': + randomFilter = nameIdFormatFilter() + break default: throw new RuntimeException("Did you forget to create a TestObjectGenerator.copyOf method for filtertype: ${filterType} ?"); } @@ -229,6 +232,9 @@ class TestObjectGenerator { new FormatAndTarget( format: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', type: Type.ENTITY, value: 'https://sp2.example.org'), + new FormatAndTarget( + format: 'urn:oasis:names:tc:SAML:1.1:nameid-format:persistent', + type: Type.CONDITION_REF, value: 'conditionRefBeanId'), new FormatAndTarget( format: 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', type: Type.CONDITION_SCRIPT, value: 'input.getEntityID().equals("https://sp1.example.org");') @@ -283,6 +289,16 @@ class TestObjectGenerator { } } + static NameIdFormatFilter copyOf(NameIdFormatFilter nameIdFormatFilter) { + new NameIdFormatFilter().with { + it.name = nameIdFormatFilter.name + it.resourceId = nameIdFormatFilter.resourceId + it.removeExistingFormats = nameIdFormatFilter.removeExistingFormats + it.formats = nameIdFormatFilter.formats + it + } + } + MetadataFilter buildFilter(Supplier filterSupplier) { MetadataFilter filter = filterSupplier.get() filter.setFilterEnabled(generator.randomBoolean())