From 9a6337d10189ad63efd1dbeabfab72a8d3dfe51d Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 25 Oct 2022 09:13:58 -0700 Subject: [PATCH 1/2] SHIBUI-2380 Bug fxing --- .../ui/repository/EntityDescriptorProjection.java | 12 ++++++------ .../ui/repository/EntityDescriptorRepository.java | 5 +++-- .../repository/EntityDescriptorRepositoryTest.groovy | 11 +++++++++++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorProjection.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorProjection.java index 22e78ba59..42d507828 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorProjection.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorProjection.java @@ -26,10 +26,11 @@ public class EntityDescriptorProjection { boolean serviceEnabled; @Getter String idOfOwner; + EntityDescriptorProtocol protocol; public EntityDescriptorProjection(String entityID, String resourceId, String serviceProviderName, String createdBy, - LocalDateTime createdDate, boolean serviceEnabled, String idOfOwner, String protocol) { + LocalDateTime createdDate, boolean serviceEnabled, String idOfOwner, EntityDescriptorProtocol edp) { this.entityID = entityID; this.entityId = entityID; this.resourceId = resourceId; @@ -39,7 +40,7 @@ public EntityDescriptorProjection(String entityID, String resourceId, String ser this.createdDate = createdDate; this.serviceEnabled = serviceEnabled; this.idOfOwner = idOfOwner; - setProtocol(protocol); + this.protocol = edp == null ? EntityDescriptorProtocol.SAML : edp; } public String getEntityID() { @@ -54,8 +55,7 @@ public EntityDescriptorProtocol getProtocol() { return protocol == null ? EntityDescriptorProtocol.SAML : protocol; } - public void setProtocol(String index) { - int i = Integer.valueOf(index); - protocol = EntityDescriptorProtocol.values()[i]; - } +// public void setProtocol(int i) { +// protocol = EntityDescriptorProtocol.values()[i]; +// } } \ No newline at end of file diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepository.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepository.java index 68cac3803..3030f5678 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepository.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepository.java @@ -2,6 +2,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptor; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -14,12 +15,12 @@ */ public interface EntityDescriptorRepository extends JpaRepository { @Query(value = "select new edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorProjection(e.entityID, e.resourceId, e.serviceProviderName, e.createdBy, " + - "e.createdDate, e.serviceEnabled, e.idOfOwner, case e.protocol when null then 'SAML' else e.protocol end ) " + + "e.createdDate, e.serviceEnabled, e.idOfOwner, e.protocol) " + "from EntityDescriptor e") List findAllBy(); @Query(value = "select new edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorProjection(e.entityID, e.resourceId, e.serviceProviderName, e.createdBy, " + - "e.createdDate, e.serviceEnabled, e.idOfOwner, case e.protocol when null then 'SAML' else e.protocol end ) " + + "e.createdDate, e.serviceEnabled, e.idOfOwner, e.protocol) " + "from EntityDescriptor e " + "where e.idOfOwner = :ownerId") List findAllByIdOfOwner(@Param("ownerId") String ownerId); diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepositoryTest.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepositoryTest.groovy index 1615a81ee..906208ee6 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepositoryTest.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorRepositoryTest.groovy @@ -2,11 +2,13 @@ package edu.internet2.tier.shibboleth.admin.ui.repository import edu.internet2.tier.shibboleth.admin.ui.AbstractBaseDataJpaTest import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptor +import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptorProtocol import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml.OpenSamlChainingMetadataResolver import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects import edu.internet2.tier.shibboleth.admin.ui.security.model.Group import edu.internet2.tier.shibboleth.admin.ui.service.CustomEntityAttributesDefinitionServiceImpl import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorService +import edu.internet2.tier.shibboleth.admin.ui.util.WithMockAdmin import org.apache.lucene.analysis.Analyzer import org.apache.lucene.analysis.en.EnglishAnalyzer import org.opensaml.saml.metadata.resolver.MetadataResolver @@ -57,13 +59,22 @@ class EntityDescriptorRepositoryTest extends AbstractBaseDataJpaTest { noExceptionThrown() } + @WithMockAdmin def "SHIBUI-1772"() { when: def input = openSamlObjects.unmarshalFromXml(this.class.getResource('/metadata/SHIBUI-1772.xml').bytes) as EntityDescriptor + input.protocol = null // This mimics an upgrade where older entries wont have a protocol in the db entityDescriptorRepository.save(input) then: noExceptionThrown() + + when: + List projections = entityDescriptorRepository.findAllBy() + + then: + projections.size() == 1 + projections.get(0).getProtocol() == EntityDescriptorProtocol.SAML } def "SHIBUI-1849 - extend data model for ownership"() { From a525bea983ded0dccec31c99b76aeb39ef7c25ec Mon Sep 17 00:00:00 2001 From: chasegawa Date: Tue, 25 Oct 2022 10:01:34 -0700 Subject: [PATCH 2/2] SHIBUI-2380 Bug fxing --- .../admin/ui/repository/EntityDescriptorProjection.java | 4 ---- backend/src/main/resources/application.yml | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorProjection.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorProjection.java index 42d507828..da7d307b1 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorProjection.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/EntityDescriptorProjection.java @@ -54,8 +54,4 @@ public String getEntityId() { public EntityDescriptorProtocol getProtocol() { return protocol == null ? EntityDescriptorProtocol.SAML : protocol; } - -// public void setProtocol(int i) { -// protocol = EntityDescriptorProtocol.values()[i]; -// } } \ No newline at end of file diff --git a/backend/src/main/resources/application.yml b/backend/src/main/resources/application.yml index da77c5fec..18e314dd3 100644 --- a/backend/src/main/resources/application.yml +++ b/backend/src/main/resources/application.yml @@ -402,7 +402,7 @@ custom: - name: IDTokenLifetimeBrowser attributeFriendlyName: IDTokenLifetimeBrowser displayName: label.IDTokenLifetime.browser - helpText: tooltip.IDTokenLifetime.broswer + helpText: tooltip.IDTokenLifetime.browser displayType: string defaultValue: PT1H attributeName: http://shibboleth.net/ns/profiles/oidc/sso/browser/IDTokenLifetime