From dce23feab121b421d9c508989ced11c77b47a8eb Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Tue, 5 Jun 2018 15:54:52 -0400 Subject: [PATCH] SHIBUI-518[535]: JPA repository and tests --- ...ocalDynamicMetadataResolverRepository.java | 16 ++++ ...HttpMetadataResolverRepositoryTests.groovy | 2 +- ...amicMetadataResolverRepositoryTests.groovy | 84 +++++++++++++++++++ 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/LocalDynamicMetadataResolverRepository.java create mode 100644 backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/LocalDynamicMetadataResolverRepositoryTests.groovy diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/LocalDynamicMetadataResolverRepository.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/LocalDynamicMetadataResolverRepository.java new file mode 100644 index 000000000..323b470d5 --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/repository/LocalDynamicMetadataResolverRepository.java @@ -0,0 +1,16 @@ +package edu.internet2.tier.shibboleth.admin.ui.repository; + +import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver; +import org.springframework.data.repository.CrudRepository; + +/** + * Spring Data CRUD repository for instances of {@link LocalDynamicMetadataResolver}s. + */ +public interface LocalDynamicMetadataResolverRepository extends CrudRepository { + + LocalDynamicMetadataResolver findByName(String name); + + boolean deleteByResourceId(String resourceId); + + LocalDynamicMetadataResolver findByResourceId(String resourceId); +} diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/FileBackedHttpMetadataResolverRepositoryTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/FileBackedHttpMetadataResolverRepositoryTests.groovy index b497a711f..a3103e29b 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/FileBackedHttpMetadataResolverRepositoryTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/FileBackedHttpMetadataResolverRepositoryTests.groovy @@ -54,7 +54,7 @@ class FileBackedHttpMetadataResolverRepositoryTests extends Specification { it.metadataFilters.add(new EntityAttributesFilter().with { it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with { it.entityAttributesFilterTargetType = ENTITY - it.setSingleValue(["hola"]) + it.setValue(["hola"]) it } it diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/LocalDynamicMetadataResolverRepositoryTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/LocalDynamicMetadataResolverRepositoryTests.groovy new file mode 100644 index 000000000..b68260455 --- /dev/null +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/repository/LocalDynamicMetadataResolverRepositoryTests.groovy @@ -0,0 +1,84 @@ +package edu.internet2.tier.shibboleth.admin.ui.repository + +import com.fasterxml.jackson.databind.ObjectMapper +import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration +import edu.internet2.tier.shibboleth.admin.ui.configuration.MetadataResolverConfiguration +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.resolvers.DynamicMetadataResolverAttributes +import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver +import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResolverAttributes +import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver +import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ReloadableMetadataResolverAttributes +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.autoconfigure.domain.EntityScan +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest +import org.springframework.data.jpa.repository.config.EnableJpaRepositories +import org.springframework.test.annotation.DirtiesContext +import org.springframework.test.context.ContextConfiguration +import spock.lang.Specification + +import javax.persistence.EntityManager + +import static edu.internet2.tier.shibboleth.admin.ui.domain.filters.EntityAttributesFilterTarget.EntityAttributesFilterTargetType.ENTITY +import static edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResolverAttributes.HttpCachingType.memory + +@DataJpaTest +@ContextConfiguration(classes=[CoreShibUiConfiguration, SearchConfiguration, MetadataResolverConfiguration]) +@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"]) +@EntityScan("edu.internet2.tier.shibboleth.admin.ui") +@DirtiesContext(methodMode = DirtiesContext.MethodMode.BEFORE_METHOD) +class LocalDynamicMetadataResolverRepositoryTests extends Specification { + + @Autowired + LocalDynamicMetadataResolverRepository repositoryUnderTest + + @Autowired + EntityManager entityManager + + def "local dynamic metadata resolver instances persist OK"() { + when: + def mdr = new LocalDynamicMetadataResolver().with { + it.name = 'LocalDynamicMetadataResolver' + it.sourceDirectory = '/etc/shibui' + it.sourceKeyGeneratorRef = 'sourceKeyGeneratorBean' + it.sourceManagerRef = 'sourceManagerBean' + it.dynamicMetadataResolverAttributes = new DynamicMetadataResolverAttributes().with { + it.cleanupTaskInterval = 'PT5H' + it.maxCacheDuration = 'PT8H' + it.initializeFromPersistentCacheInBackground = true + it + } + + it.metadataFilters.add(new EntityAttributesFilter().with { + it.entityAttributesFilterTarget = new EntityAttributesFilterTarget().with { + it.entityAttributesFilterTargetType = ENTITY + it.setValue(['hola']) + it + } + it + }) + + it + } + repositoryUnderTest.save(mdr) + + then: + repositoryUnderTest.findAll().size() > 0 + def item = repositoryUnderTest.findByName("LocalDynamicMetadataResolver") + + item.name == "LocalDynamicMetadataResolver" + item.metadataFilters.size() == 1 + item.metadataFilters[0].entityAttributesFilterTarget.entityAttributesFilterTargetType == ENTITY + item.metadataFilters[0].entityAttributesFilterTarget.value.size() == 1 + item.metadataFilters[0].entityAttributesFilterTarget.value.get(0) == "hola" + item.sourceDirectory == '/etc/shibui' + item.sourceKeyGeneratorRef == 'sourceKeyGeneratorBean' + item.sourceManagerRef == 'sourceManagerBean' + item.dynamicMetadataResolverAttributes.cleanupTaskInterval == 'PT5H' + item.dynamicMetadataResolverAttributes.maxCacheDuration == 'PT8H' + item.dynamicMetadataResolverAttributes.initializeFromPersistentCacheInBackground + } + +}