Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
shib-idp-ui/backend/src/enversTest/groovy/edu/internet2/tier/shibboleth/admin/ui/service/envers/EnversEntityDescriptorVersionServiceTests.groovy
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
128 lines (108 sloc)
5.9 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package edu.internet2.tier.shibboleth.admin.ui.service.envers | |
import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration | |
import edu.internet2.tier.shibboleth.admin.ui.configuration.EntitiesVersioningConfiguration | |
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.EntityDescriptor | |
import edu.internet2.tier.shibboleth.admin.ui.exception.EntityNotFoundException | |
import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorRepository | |
import edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport | |
import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorService | |
import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorVersionService | |
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.EnableJpaAuditing | |
import org.springframework.data.jpa.repository.config.EnableJpaRepositories | |
import org.springframework.test.context.ContextConfiguration | |
import org.springframework.transaction.PlatformTransactionManager | |
import spock.lang.Specification | |
import java.time.ZonedDateTime | |
@DataJpaTest | |
@ContextConfiguration(classes = [CoreShibUiConfiguration, InternationalizationConfiguration, TestConfiguration, SearchConfiguration, EntitiesVersioningConfiguration]) | |
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"]) | |
@EntityScan("edu.internet2.tier.shibboleth.admin.ui") | |
@EnableJpaAuditing | |
class EnversEntityDescriptorVersionServiceTests extends Specification { | |
@Autowired | |
EntityDescriptorVersionService entityDescriptorVersionService | |
@Autowired | |
EntityDescriptorRepository entityDescriptorRepository | |
@Autowired | |
EntityDescriptorService entityDescriptorService | |
@Autowired | |
PlatformTransactionManager txMgr | |
def "versioning service returns correct number of versions sorted by modified date in natural order"() { | |
when: 'Initial version' | |
EntityDescriptor ed = new EntityDescriptor(entityID: 'ed', serviceProviderName: 'SP1') | |
ed = EnversTestsSupport.doInExplicitTransaction(txMgr) { | |
entityDescriptorRepository.save(ed) | |
} | |
def versions = entityDescriptorVersionService.findVersionsForEntityDescriptor(ed.resourceId) | |
then: | |
versions.size() == 1 | |
versions[0].id | |
versions[0].creator | |
versions[0].date < ZonedDateTime.now() | |
when: 'Second version' | |
ed.serviceProviderName = 'SP2' | |
ed = edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport.doInExplicitTransaction(txMgr) { | |
entityDescriptorRepository.save(ed) | |
} | |
versions = entityDescriptorVersionService.findVersionsForEntityDescriptor(ed.resourceId) | |
then: | |
versions.size() == 2 | |
versions[0].id && versions[1].id | |
versions[0].creator && versions[1].creator | |
versions[0].date < versions[1].date | |
when: 'Third version' | |
ed.serviceProviderName = 'SP3' | |
ed = edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport.doInExplicitTransaction(txMgr) { | |
entityDescriptorRepository.save(ed) | |
} | |
versions = entityDescriptorVersionService.findVersionsForEntityDescriptor(ed.resourceId) | |
then: | |
versions.size() == 3 | |
versions[0].id && versions[1].id && versions[2].id | |
versions[0].creator && versions[1].creator && versions[2].creator | |
(versions[0].date < versions[1].date) && (versions[1].date < versions[2].date) | |
} | |
def "versioning service returns correct entity descriptor for version number"() { | |
when: 'Initial version' | |
EntityDescriptor ed = new EntityDescriptor(entityID: 'ed', serviceProviderName: 'SP1', createdBy: 'anonymousUser') | |
ed = edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport.doInExplicitTransaction(txMgr) { | |
entityDescriptorRepository.save(ed) | |
} | |
def versions = entityDescriptorVersionService.findVersionsForEntityDescriptor(ed.resourceId) | |
def v1EdRepresentation = entityDescriptorVersionService.findSpecificVersionOfEntityDescriptor(ed.resourceId, versions[0].id) | |
then: | |
v1EdRepresentation.serviceProviderName == 'SP1' | |
v1EdRepresentation.id == ed.resourceId | |
when: 'Update the original' | |
ed.serviceProviderName = 'SP2' | |
ed = edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport.doInExplicitTransaction(txMgr) { | |
entityDescriptorRepository.save(ed) | |
} | |
versions = entityDescriptorVersionService.findVersionsForEntityDescriptor(ed.resourceId) | |
def v2EdRepresentation = entityDescriptorVersionService.findSpecificVersionOfEntityDescriptor(ed.resourceId, versions[1].id) | |
then: | |
v2EdRepresentation.serviceProviderName == 'SP2' | |
v2EdRepresentation.id == ed.resourceId | |
} | |
def "versioning service throws EntityNotFoundException for non existent version number"() { | |
when: 'Initial version' | |
EntityDescriptor ed = new EntityDescriptor(entityID: 'ed', serviceProviderName: 'SP1', createdBy: 'anonymousUser') | |
ed = edu.internet2.tier.shibboleth.admin.ui.repository.envers.EnversTestsSupport.doInExplicitTransaction(txMgr) { | |
entityDescriptorRepository.save(ed) | |
} | |
then: | |
try { | |
def edRepresentation = entityDescriptorVersionService.findSpecificVersionOfEntityDescriptor(ed.resourceId, '1000') | |
1 == 2 | |
} | |
catch (EntityNotFoundException expected) { | |
1 == 1 | |
} | |
} | |
} |