Skip to content

Commit

Permalink
SHIBUI-1263(1319) wip...
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Jun 17, 2019
1 parent 7d4bd61 commit 3670d57
Show file tree
Hide file tree
Showing 4 changed files with 115 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,10 @@ class EntityDescriptorEnversVersioningTests extends Specification {
getRevisionEntityForRevisionIndex(entityDescriptorHistory, 0).timestamp > 0L
getModifiedEntityNames(entityDescriptorHistory, 0).sort() == expectedModifiedPersistentEntities.sort()





when:
representation = new EntityDescriptorRepresentation().with {
it.organization = new OrganizationRepresentation(name: 'orgUpdated', displayName: 'display org Updated', url: 'http://org2.edu')
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
package edu.internet2.tier.shibboleth.admin.ui.repository.envers

import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration
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.DynamicMetadataResolverAttributes
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.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
import org.springframework.data.jpa.repository.config.EnableJpaRepositories
import org.springframework.test.context.ContextConfiguration
import org.springframework.transaction.PlatformTransactionManager
import spock.lang.Specification

import javax.persistence.EntityManager

import static edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport.*

/**
* Testing metadata resolver envers versioning
*/
@DataJpaTest
@ContextConfiguration(classes = [CoreShibUiConfiguration, InternationalizationConfiguration, SearchConfiguration, TestConfiguration])
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"])
@EntityScan("edu.internet2.tier.shibboleth.admin.ui")
class MetadataResolverEnversVersioningTests extends Specification {

@Autowired
MetadataResolverRepository metadataResolverRepository

@Autowired
EntityManager entityManager

@Autowired
PlatformTransactionManager txMgr

@Autowired
OpenSamlObjects openSamlObjects

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

when:
LocalDynamicMetadataResolver resolver = new LocalDynamicMetadataResolver(name: 'ldmr').with {
it.dynamicMetadataResolverAttributes = new DynamicMetadataResolverAttributes()
it
}
def resolverHistory = updateAndGetRevisionHistoryOfMetadataResolver(resolver,
metadataResolverRepository,
LocalDynamicMetadataResolver,
txMgr,
entityManager)

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

when:
resolver.name = 'ldmr_UPDATED'
resolver.dynamicMetadataResolverAttributes.refreshDelayFactor = 1.00
resolverHistory = updateAndGetRevisionHistoryOfMetadataResolver(resolver,
metadataResolverRepository,
LocalDynamicMetadataResolver,
txMgr,
entityManager)

then:
resolverHistory.size() == 2
getTargetEntityForRevisionIndex(resolverHistory, 1).name == 'ldmr_UPDATED'
getTargetEntityForRevisionIndex(resolverHistory, 1).dynamicMetadataResolverAttributes.refreshDelayFactor == 1.00
getRevisionEntityForRevisionIndex(resolverHistory, 1).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 1).timestamp > 0L

//Check the original revision is intact
getTargetEntityForRevisionIndex(resolverHistory, 0).name == 'ldmr'
getTargetEntityForRevisionIndex(resolverHistory, 0).dynamicMetadataResolverAttributes.refreshDelayFactor == 0.75
getRevisionEntityForRevisionIndex(resolverHistory, 0).principalUserName == 'anonymousUser'
getRevisionEntityForRevisionIndex(resolverHistory, 0).timestamp > 0L
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,14 @@
import javax.persistence.Embedded;
import javax.persistence.Entity;

import org.hibernate.envers.Audited;

@Entity
@EqualsAndHashCode(callSuper = true)
@Getter
@Setter
@ToString
@Audited
public class LocalDynamicMetadataResolver extends MetadataResolver {
public LocalDynamicMetadataResolver() {
type = "LocalDynamicMetadataResolver";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package edu.internet2.tier.shibboleth.admin.ui.repository.envers

import edu.internet2.tier.shibboleth.admin.ui.domain.EntityDescriptor
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.EntityDescriptorRepresentation
import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.MetadataResolver
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.hibernate.envers.AuditReaderFactory
import org.hibernate.envers.query.AuditEntity
Expand Down Expand Up @@ -36,10 +38,21 @@ class EnversTestsSupport {
doInExplicitTransaction(txMgr) {
edr.save(ed)
}

getRevisionHistoryForEntityType(em, EntityDescriptor, ed.resourceId)
}

static updateAndGetRevisionHistoryOfMetadataResolver(MetadataResolver mr,
MetadataResolverRepository mrr,
Class < ? > type,
PlatformTransactionManager
txMgr, EntityManager em) {

doInExplicitTransaction(txMgr) {
mrr.save(mr)
}
getRevisionHistoryForEntityType(em, type, mr.resourceId)
}

static getRevisionHistoryForEntityType(EntityManager em, Class<?> entityType, String resourceId) {
def auditReader = AuditReaderFactory.get(em)
AuditQuery auditQuery = auditReader
Expand Down

0 comments on commit 3670d57

Please sign in to comment.