Skip to content

Commit

Permalink
SHIBUI-1263(1319)
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Jun 20, 2019
1 parent 3670d57 commit 9fd7eca
Show file tree
Hide file tree
Showing 4 changed files with 119 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@ import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfigurat
import edu.internet2.tier.shibboleth.admin.ui.configuration.InternationalizationConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.SearchConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.TestConfiguration
import edu.internet2.tier.shibboleth.admin.ui.domain.*
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.*
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicHttpMetadataResolver
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.MetadataResolver
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ReloadableMetadataResolverAttributes
import edu.internet2.tier.shibboleth.admin.ui.opensaml.OpenSamlObjects
import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorRepository
import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository
import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorService
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.autoconfigure.domain.EntityScan
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest
Expand All @@ -23,6 +22,8 @@ import spock.lang.Specification

import javax.persistence.EntityManager

import static edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResolverAttributes.HttpCachingType.file
import static edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.HttpMetadataResolverAttributes.HttpCachingType.none
import static edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport.*

/**
Expand Down Expand Up @@ -91,4 +92,110 @@ class MetadataResolverEnversVersioningTests extends Specification {
getRevisionEntityForRevisionIndex(resolverHistory, 0).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 0).timestamp > 0L
}

def "test versioning of FileBackedHttpMetadataResolver"() {
setup:
def expectedModifiedPersistentEntities = [FileBackedHttpMetadataResolver.name]

when:
FileBackedHttpMetadataResolver resolver = new FileBackedHttpMetadataResolver(name: 'fbmr').with {
it.httpMetadataResolverAttributes = new HttpMetadataResolverAttributes(proxyUser: 'proxyUser',
proxyPassword: 'proxyPass',
httpCaching: none)
it.reloadableMetadataResolverAttributes = new ReloadableMetadataResolverAttributes(indexesRef: 'indexRef')
it
}
def resolverHistory = updateAndGetRevisionHistoryOfMetadataResolver(resolver,
metadataResolverRepository,
FileBackedHttpMetadataResolver,
txMgr,
entityManager)

then:
resolverHistory.size() == 1
getTargetEntityForRevisionIndex(resolverHistory, 0).name == 'fbmr'
getTargetEntityForRevisionIndex(resolverHistory, 0).httpMetadataResolverAttributes.proxyUser == 'proxyUser'
getTargetEntityForRevisionIndex(resolverHistory, 0).httpMetadataResolverAttributes.proxyPassword == 'proxyPass'
getTargetEntityForRevisionIndex(resolverHistory, 0).httpMetadataResolverAttributes.httpCaching == none
getTargetEntityForRevisionIndex(resolverHistory, 0).reloadableMetadataResolverAttributes.indexesRef == 'indexRef'
getRevisionEntityForRevisionIndex(resolverHistory, 0).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 0).timestamp > 0L
getModifiedEntityNames(resolverHistory, 0).sort() == expectedModifiedPersistentEntities.sort()

when:
resolver.name = 'fbmrUPDATED'
resolver.httpMetadataResolverAttributes.proxyUser = 'proxyUserUPDATED'
resolver.httpMetadataResolverAttributes.proxyPassword = 'proxyPassUPDATED'
resolver.httpMetadataResolverAttributes.httpCaching = file
resolver.reloadableMetadataResolverAttributes.indexesRef = 'indexRefUPDATED'

resolverHistory = updateAndGetRevisionHistoryOfMetadataResolver(resolver,
metadataResolverRepository,
FileBackedHttpMetadataResolver,
txMgr,
entityManager)

then:
resolverHistory.size() == 2
getTargetEntityForRevisionIndex(resolverHistory, 1).name == 'fbmrUPDATED'
getTargetEntityForRevisionIndex(resolverHistory, 1).httpMetadataResolverAttributes.proxyUser == 'proxyUserUPDATED'
getTargetEntityForRevisionIndex(resolverHistory, 1).httpMetadataResolverAttributes.proxyPassword == 'proxyPassUPDATED'
getTargetEntityForRevisionIndex(resolverHistory, 1).httpMetadataResolverAttributes.httpCaching == file
getTargetEntityForRevisionIndex(resolverHistory, 1).reloadableMetadataResolverAttributes.indexesRef == 'indexRefUPDATED'
getRevisionEntityForRevisionIndex(resolverHistory, 1).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 1).timestamp > 0L
getModifiedEntityNames(resolverHistory, 1).sort() == expectedModifiedPersistentEntities.sort()

//Check the original revision is intact
getTargetEntityForRevisionIndex(resolverHistory, 0).name == 'fbmr'
getTargetEntityForRevisionIndex(resolverHistory, 0).httpMetadataResolverAttributes.proxyUser == 'proxyUser'
getTargetEntityForRevisionIndex(resolverHistory, 0).httpMetadataResolverAttributes.proxyPassword == 'proxyPass'
getTargetEntityForRevisionIndex(resolverHistory, 0).httpMetadataResolverAttributes.httpCaching == none
getTargetEntityForRevisionIndex(resolverHistory, 0).reloadableMetadataResolverAttributes.indexesRef == 'indexRef'
getRevisionEntityForRevisionIndex(resolverHistory, 0).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 0).timestamp > 0L
}

def "test versioning of DynamicHttpMetadataResolver"() {
setup:
def expectedModifiedPersistentEntities = [DynamicHttpMetadataResolver.name]

when:
DynamicHttpMetadataResolver resolver = new DynamicHttpMetadataResolver(name: 'dhmr')

def resolverHistory = updateAndGetRevisionHistoryOfMetadataResolver(resolver,
metadataResolverRepository,
DynamicHttpMetadataResolver,
txMgr,
entityManager)

then:
resolverHistory.size() == 1
getTargetEntityForRevisionIndex(resolverHistory, 0).name == 'dhmr'
getRevisionEntityForRevisionIndex(resolverHistory, 0).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 0).timestamp > 0L
getModifiedEntityNames(resolverHistory, 0).sort() == expectedModifiedPersistentEntities.sort()

when:
resolver.name = 'dhmrUPDATED'

resolverHistory = updateAndGetRevisionHistoryOfMetadataResolver(resolver,
metadataResolverRepository,
DynamicHttpMetadataResolver,
txMgr,
entityManager)

then:
resolverHistory.size() == 2
getTargetEntityForRevisionIndex(resolverHistory, 1).name == 'dhmrUPDATED'
getRevisionEntityForRevisionIndex(resolverHistory, 1).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 1).timestamp > 0L
getModifiedEntityNames(resolverHistory, 1).sort() == expectedModifiedPersistentEntities.sort()

//Check the original revision is intact
getTargetEntityForRevisionIndex(resolverHistory, 0).name == 'dhmr'
getRevisionEntityForRevisionIndex(resolverHistory, 0).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 0).timestamp > 0L
getModifiedEntityNames(resolverHistory, 0).sort() == expectedModifiedPersistentEntities.sort()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
@Getter
@Setter
@ToString
@Audited
public class DynamicHttpMetadataResolver extends MetadataResolver {
public static final String DEFAULT_TIMEOUT = "PT5S";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers;

import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.envers.AuditOverride;

import org.hibernate.envers.Audited;

import javax.persistence.Embedded;
Expand All @@ -16,6 +15,7 @@
@Getter
@Setter
@ToString
@Audited
public class FileBackedHttpMetadataResolver extends MetadataResolver {
public FileBackedHttpMetadataResolver() {
type = "FileBackedHttpMetadataResolver";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.envers.AuditOverride;
import org.hibernate.envers.Audited;

import javax.persistence.Entity;
import javax.persistence.Transient;
Expand All @@ -24,6 +26,8 @@
@JsonSubTypes({@JsonSubTypes.Type(value=MetadataQueryProtocolScheme.class, name="MetadataQueryProtocol"),
@JsonSubTypes.Type(value=TemplateScheme.class, name="Template"),
@JsonSubTypes.Type(value=RegexScheme.class, name="Regex")})
@Audited
@AuditOverride(forClass = AbstractAuditable.class)
public abstract class MetadataRequestURLConstructionScheme extends AbstractAuditable {
public enum SchemeType {
METADATA_QUERY_PROTOCOL("MetadataQueryProtocol"),
Expand Down

0 comments on commit 9fd7eca

Please sign in to comment.