Skip to content

Commit

Permalink
SHIBUI-1262 [1307 WIP]
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed May 28, 2019
1 parent c69d412 commit a328e51
Showing 1 changed file with 56 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ import edu.internet2.tier.shibboleth.admin.ui.configuration.Internationalization
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.EntityDescriptor
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.ContactRepresentation
import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.EntityDescriptorRepresentation
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.service.EntityDescriptorService
import org.hibernate.envers.AuditReaderFactory
import org.hibernate.envers.query.AuditQuery
import org.springframework.beans.factory.annotation.Autowired
Expand All @@ -21,6 +24,8 @@ import javax.persistence.EntityManager

import static edu.internet2.tier.shibboleth.admin.ui.domain.util.entitydescriptors.EntityDescriptors.prebakedEntityDescriptor
import static edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport.doInExplicitTransaction
import static org.opensaml.saml.saml2.metadata.ContactPersonTypeEnumeration.ADMINISTRATIVE
import static org.opensaml.saml.saml2.metadata.ContactPersonTypeEnumeration.OTHER

/**
* Testing entity descriptor envers versioning
Expand All @@ -34,6 +39,9 @@ class EntityDescriptorEnversVersioningTests extends Specification {
@Autowired
EntityDescriptorRepository entityDescriptorRepository

@Autowired
EntityDescriptorService entityDescriptorService

@Autowired
EntityManager entityManager

Expand All @@ -48,18 +56,63 @@ class EntityDescriptorEnversVersioningTests extends Specification {
EntityDescriptor ed = doInExplicitTransaction(txMgr) {
entityDescriptorRepository.save(prebakedEntityDescriptor(openSamlObjects))
}
def entityDescriptorHistory = resolverHistory()
def entityDescriptorHistory = getRevisionHistory()

then:
entityDescriptorHistory.size() == 1

when:
def representation = new EntityDescriptorRepresentation().with {
it.contacts = [new ContactRepresentation(type: 'administrative', name: 'nameUPDATED', emailAddress: 'test@test')]
it
}
entityDescriptorHistory = updateAndGetRevisionHistory(ed, representation)

then:
entityDescriptorHistory.size() == 2
entityDescriptorHistory[1][0].contactPersons[0].givenName.name == 'nameUPDATED'
entityDescriptorHistory[1][0].contactPersons[0].type == ADMINISTRATIVE
entityDescriptorHistory[1][1].principalUserName == 'anonymous'
entityDescriptorHistory[1][1].timestamp > 0L

when:
representation = new EntityDescriptorRepresentation().with {
it.contacts = [new ContactRepresentation(type: 'other', name: 'nameUPDATED', emailAddress: 'test@test.com')]
it
}
entityDescriptorHistory = updateAndGetRevisionHistory(ed, representation)

ed.contactPersons[0].emailAddresses[0].address
then:
entityDescriptorHistory.size() == 3
entityDescriptorHistory[2][0].contactPersons[0].givenName.name == 'nameUPDATED'
entityDescriptorHistory[2][0].contactPersons[0].type == OTHER
entityDescriptorHistory[2][0].contactPersons[0].emailAddresses[0].address == 'test@test.com'
entityDescriptorHistory[2][1].principalUserName == 'anonymous'
entityDescriptorHistory[2][1].timestamp > 0L

//Also make sure we have our original revision
entityDescriptorHistory[0][0].contactPersons[0].givenName.name == 'name'
entityDescriptorHistory[0][0].contactPersons[0].type == ADMINISTRATIVE
entityDescriptorHistory[0][0].contactPersons[0].emailAddresses[0].address == 'test@test'
entityDescriptorHistory[0][1].principalUserName == 'anonymous'
entityDescriptorHistory[0][1].timestamp > 0L

}

private resolverHistory() {
private updateAndGetRevisionHistory(ed, representation) {
entityDescriptorService.updateDescriptorFromRepresentation(ed, representation)
doInExplicitTransaction(txMgr) {
entityDescriptorRepository.save(ed)
}
getRevisionHistory()
}

private getRevisionHistory() {
def auditReader = AuditReaderFactory.get(entityManager)
AuditQuery auditQuery = auditReader
.createQuery()
.forRevisionsOfEntity(EntityDescriptor, false, false)
auditQuery.resultList

}
}

0 comments on commit a328e51

Please sign in to comment.