Skip to content

Commit

Permalink
SHIBUI-2264
Browse files Browse the repository at this point in the history
Backend tests resolved with library and code updates
  • Loading branch information
chasegawa committed May 10, 2022
1 parent dfddcbe commit b83f96e
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.time.Duration;
import java.time.Instant;

import static edu.internet2.tier.shibboleth.admin.util.DurationUtility.toPositiveNonZeroDuration;
import static edu.internet2.tier.shibboleth.admin.util.DurationUtility.toTimeDuration;
import static edu.internet2.tier.shibboleth.admin.util.TokenPlaceholderResolvers.placeholderResolverService;

Expand Down Expand Up @@ -48,7 +50,9 @@ public OpenSamlFileBackedHTTPMetadataResolver(ParserPool parserPool,
sourceResolver.getReloadableMetadataResolverAttributes(), parserPool);

this.setBackupFile(placeholderResolverService().resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackingFile()));
this.setBackupFileInitNextRefreshDelay(toTimeDuration(placeholderResolverService().resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackupFileInitNextRefreshDelay())));
this.setBackupFileInitNextRefreshDelay(toPositiveNonZeroDuration(
placeholderResolverService().resolveValueFromPossibleTokenPlaceholder(sourceResolver.getBackupFileInitNextRefreshDelay()),
Duration.ofSeconds(5)));
if (sourceResolver.getInitializeFromBackupFile() != null) {
this.setInitializeFromBackupFile(sourceResolver.getInitializeFromBackupFile());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResolverAttributes;
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ReloadableMetadataResolverAttributes;
import net.shibboleth.utilities.java.support.xml.ParserPool;
import org.apache.commons.lang3.StringUtils;
import org.opensaml.saml.metadata.resolver.MetadataResolver;
import org.opensaml.saml.metadata.resolver.impl.AbstractDynamicMetadataResolver;
import org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver;

import java.time.Duration;

import static edu.internet2.tier.shibboleth.admin.util.DurationUtility.toPositiveNonZeroDuration;
import static edu.internet2.tier.shibboleth.admin.util.DurationUtility.toTimeDuration;
import static edu.internet2.tier.shibboleth.admin.util.TokenPlaceholderResolvers.placeholderResolverService;

Expand Down Expand Up @@ -102,16 +104,14 @@ public static void updateOpenSamlMetadataResolverFromReloadableMetadataResolverA
.setExpirationWarningThreshold(toTimeDuration(placeholderResolverService()
.resolveValueFromPossibleTokenPlaceholder(attributes.getExpirationWarningThreshold())));
}
if (attributes.getMaxRefreshDelay() != null) {
reloadingMetadataResolver.setMaxRefreshDelay(toTimeDuration(placeholderResolverService()
.resolveValueFromPossibleTokenPlaceholder(attributes.getMaxRefreshDelay())));
}
if (attributes.getMinRefreshDelay() != null) {
String minRefreshString = placeholderResolverService().resolveValueFromPossibleTokenPlaceholder(attributes.getMinRefreshDelay());
if (StringUtils.isNotBlank(minRefreshString)) {
reloadingMetadataResolver.setMinRefreshDelay(toTimeDuration(minRefreshString));
}
}

// Open SAML 4.x libarry requires values non-null, greater than zero for min and max refresh rates
reloadingMetadataResolver.setMaxRefreshDelay(toPositiveNonZeroDuration(
placeholderResolverService().resolveValueFromPossibleTokenPlaceholder(attributes.getMaxRefreshDelay()),
Duration.ofHours(4)));
reloadingMetadataResolver.setMinRefreshDelay(toPositiveNonZeroDuration(
placeholderResolverService().resolveValueFromPossibleTokenPlaceholder(attributes.getMinRefreshDelay()),
Duration.ofMinutes(5)));

if (attributes.getResolveViaPredicatesOnly() != null) {
reloadingMetadataResolver.setResolveViaPredicatesOnly(attributes.getResolveViaPredicatesOnly());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,9 @@ public static java.time.Duration toTimeDuration(String xmlDuration) {
long value = toMillis(xmlDuration);
return java.time.Duration.ofMillis(value);
}

public static java.time.Duration toPositiveNonZeroDuration (String xmlDuration, java.time.Duration defaultDuration) {
long value = toMillis(xmlDuration);
return value > 0 ? java.time.Duration.ofMillis(value) : defaultDuration;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -94,10 +94,8 @@ class JPAMetadataResolverServiceImplTests extends AbstractBaseDataJpaTest {
<saml:Attribute xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Name="http://shibboleth.net/ns/attributes/releaseAllValues" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue>givenName</saml:AttributeValue>
<saml:AttributeValue>employeeNumber</saml:AttributeValue>
<saml2:AttributeValue xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">testme</saml2:AttributeValue>
</saml:Attribute>
<saml2:Attribute xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" Name="http://shibboleth.net/ns/attributes/releaseAllValues" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">testme</saml2:AttributeValue>
</saml2:Attribute>
</mdattr:EntityAttributes>
</md:Extensions>
<md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
Expand Down Expand Up @@ -132,7 +130,9 @@ class JPAMetadataResolverServiceImplTests extends AbstractBaseDataJpaTest {
assert metadataResolverRepository.findAll().size() > 0
def ed = metadataResolver.resolveSingle(new CriteriaSet(new EntityIdCriterion('http://test.scaldingspoon.org/test1')))
def resultString = openSamlObjects.marshalToXmlString(ed)
println("RESULTSTRING:")
println(resultString)
// line 99 above being added to release all values, not its own thing
def diff = DiffBuilder.compare(Input.fromString(expectedXML)).withTest(Input.fromString(resultString)).ignoreComments().ignoreWhitespace().build()
!diff.hasDifferences()
}
Expand Down

0 comments on commit b83f96e

Please sign in to comment.