From 402c3a82092fbd81a58643262b7c6ade099dbc53 Mon Sep 17 00:00:00 2001 From: Bill Smith Date: Wed, 22 Aug 2018 15:24:50 -0700 Subject: [PATCH] [SHIBUI-723] Updated spring-extensions dep to be available at compile time. Updated OpenSamlMetadataResolverConstructorHelper to return a default value when a null is detected. Updated MetadataResolverConverterServiceImpl to use a ClassPathResource and convert it as necessary. Updated tests to remove /tmp/foo.txt file generation. Updated TestObjectGenerator to build empty attributes objects inside resolvers. --- backend/build.gradle | 2 +- ...enSamlMetadataResolverConstructorHelper.java | 4 +++- .../MetadataResolverConverterServiceImpl.java | 4 ++-- ...taResolversControllerIntegrationTests.groovy | 4 ---- .../admin/ui/util/TestObjectGenerator.groovy | 17 ++++++++++++++--- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/backend/build.gradle b/backend/build.gradle index ca484d6cb..bc6167e38 100644 --- a/backend/build.gradle +++ b/backend/build.gradle @@ -106,7 +106,7 @@ dependencies { testCompile "org.xmlunit:xmlunit-core:2.5.1" testRuntime 'cglib:cglib-nodep:3.2.5' - testCompile "net.shibboleth.ext:spring-extensions:5.4.0-SNAPSHOT" + compile "net.shibboleth.ext:spring-extensions:5.4.0-SNAPSHOT" //JSON schema generator testCompile 'com.kjetland:mbknor-jackson-jsonschema_2.12:1.0.29' diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlMetadataResolverConstructorHelper.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlMetadataResolverConstructorHelper.java index 02c1c9800..7e674ab2b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlMetadataResolverConstructorHelper.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlMetadataResolverConstructorHelper.java @@ -56,7 +56,9 @@ public static void updateOpenSamlMetadataResolverFromReloadableMetadataResolverA reloadingMetadataResolver.setExpirationWarningThreshold(toMillis(attributes.getExpirationWarningThreshold())); reloadingMetadataResolver.setMaxRefreshDelay(toMillis(attributes.getMaxRefreshDelay())); reloadingMetadataResolver.setMinRefreshDelay(toMillis(attributes.getMinRefreshDelay())); - reloadingMetadataResolver.setRefreshDelayFactor(attributes.getRefreshDelayFactor().floatValue()); + + //TODO: I think we may need to take another look at setting the defaults properly on our attributes. + reloadingMetadataResolver.setRefreshDelayFactor(attributes.getRefreshDelayFactor() == null ? 0.75f : attributes.getRefreshDelayFactor().floatValue()); //TODO: What should we do here if this data is null/empty? reloadingMetadataResolver.setResolveViaPredicatesOnly(attributes.getResolveViaPredicatesOnly() == null ? false : attributes.getResolveViaPredicatesOnly()); diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolverConverterServiceImpl.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolverConverterServiceImpl.java index 87ddbd2ab..fcd66cd35 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolverConverterServiceImpl.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolverConverterServiceImpl.java @@ -10,6 +10,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml.OpenSamlFunctionDrivenDynamicHTTPMetadataResolver; import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml.OpenSamlLocalDynamicMetadataResolver; import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml.OpenSamlResourceBackedMetadataResolver; +import net.shibboleth.ext.spring.resource.ResourceHelper; import net.shibboleth.utilities.java.support.resolver.ResolverException; import net.shibboleth.utilities.java.support.resource.Resource; import org.apache.lucene.index.IndexWriter; @@ -78,8 +79,7 @@ private OpenSamlResourceBackedMetadataResolver convertToOpenSamlRepresentation(R //TODO: What sort of resource type should be created here? URL? break; case CLASSPATH: - //TODO: Not sure what kind of resource class to use here. - // resource = (Resource) new ClassPathResource(resolver.getClasspathMetadataResource().getFile()); // this doesn't work. + resource = ResourceHelper.of(new ClassPathResource(resolver.getClasspathMetadataResource().getFile())); break; default: throw new RuntimeException("Unsupported resource type!"); diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy index d584a50aa..f90b85146 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/MetadataResolversControllerIntegrationTests.groovy @@ -160,10 +160,6 @@ class MetadataResolversControllerIntegrationTests extends Specification { result.statusCodeValue == 201 result.headers.Location[0].contains(BASE_URI) - cleanup: - def file = new File('/tmp/foo.txt') - file.delete() - where: resolverType | _ 'DynamicHttp' | _ 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 6c5bf92ea..7303ae9f8 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 @@ -437,6 +437,9 @@ class TestObjectGenerator { new DynamicHttpMetadataResolver().with { it.name = 'DynamicHTTP' it.xmlId = 'DynamicHTTP' + it.dynamicMetadataResolverAttributes = new DynamicMetadataResolverAttributes().with { + it + } it } } @@ -445,6 +448,10 @@ class TestObjectGenerator { new LocalDynamicMetadataResolver().with { it.name = 'LocalDynamic' it.xmlId = 'LocalDynamic' + it.sourceDirectory = '/tmp' + it.dynamicMetadataResolverAttributes = new DynamicMetadataResolverAttributes().with { + it + } it } } @@ -459,18 +466,22 @@ class TestObjectGenerator { it.workingCopyDirectory = '%{idp.home}/metadata/svn' it } + it.reloadableMetadataResolverAttributes = new ReloadableMetadataResolverAttributes().with { + it + } it } } ResourceBackedMetadataResolver resourceBackedMetadataResolverForClasspath() { - def file = new File('/tmp/foo.txt') // should we really do this? - file.write 'This is a temp file for a groovy test.' new ResourceBackedMetadataResolver().with { it.name = 'ClasspathResourceMetadata' it.xmlId = 'ClasspathResourceMetadata' it.classpathMetadataResource = new ClasspathMetadataResource().with { - it.file = '/tmp/foo.txt' + it.file = 'metadata/metadata.xml' + it + } + it.reloadableMetadataResolverAttributes = new ReloadableMetadataResolverAttributes().with { it } it