Skip to content

Commit

Permalink
SHIBUI-2510
Browse files Browse the repository at this point in the history
Resolved issue with envers version tests
  • Loading branch information
chasegawa committed Oct 16, 2023
1 parent c2c72a0 commit 2fe9315
Showing 1 changed file with 28 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import edu.internet2.tier.shibboleth.admin.ui.domain.OrganizationName
import edu.internet2.tier.shibboleth.admin.ui.domain.OrganizationURL
import edu.internet2.tier.shibboleth.admin.ui.envers.EnversVersionServiceSupport
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.security.model.Group
import edu.internet2.tier.shibboleth.admin.ui.security.model.Ownership
import edu.internet2.tier.shibboleth.admin.ui.security.model.Role
Expand All @@ -22,6 +23,7 @@ import edu.internet2.tier.shibboleth.admin.ui.service.EnversEntityDescriptorVers
import edu.internet2.tier.shibboleth.admin.ui.service.EnversMetadataResolverVersionService
import edu.internet2.tier.shibboleth.admin.ui.service.JPAEntityDescriptorServiceImpl
import edu.internet2.tier.shibboleth.admin.ui.service.MetadataResolverVersionService
import edu.internet2.tier.shibboleth.admin.ui.util.WithMockAdmin
import edu.internet2.tier.shibboleth.admin.util.EntityDescriptorConversionUtils
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
Expand Down Expand Up @@ -82,6 +84,7 @@ class EntityDescriptorVersionControllerTests extends AbstractBaseDataJpaTest {
def controller

@Transactional
@WithMockAdmin
def setup() {
openSamlObjects.init()

Expand All @@ -105,14 +108,22 @@ class EntityDescriptorVersionControllerTests extends AbstractBaseDataJpaTest {

EntityDescriptorConversionUtils.setOpenSamlObjects(openSamlObjects)
EntityDescriptorConversionUtils.setEntityService(entityService)

EntityDescriptor ed = createEntityDescriptor()
resId = ed.getResourceId()

// Now create a second version for UPDATE revision
testEntityManager.getEntityManager().getTransaction().begin()
ed.serviceProviderName = 'SP2'
entityDescriptorRepository.save(ed)
testEntityManager.getEntityManager().getTransaction().commit() // get envers to write version
}

@WithMockUser(value = "someUser", roles = ["USER"])
@Transactional
def 'SHIBUI-1414'() {
given:
EntityDescriptor ed = createEntityDescriptor()
resId = ed.getResourceId()
EntityDescriptor ed = jpaEntityDescriptorService.getEntityDescriptorByResourceId(resId)

testEntityManager.getEntityManager().getTransaction().begin()
ed.setOrganization(new Organization().with {
Expand All @@ -124,13 +135,14 @@ class EntityDescriptorVersionControllerTests extends AbstractBaseDataJpaTest {
entityDescriptorRepository.saveAndFlush(ed)
testEntityManager.getEntityManager().getTransaction().commit() // get envers to write version
testEntityManager.getEntityManager().getTransaction().begin()
testEntityManager.getEntityManager().flush()

when:
def result = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions"))
def allVersions = mapper.readValue(result.andReturn().getResponse().getContentAsString(), List.class)

String edv1 = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions/" + allVersions.get(0).id)).andReturn().getResponse().getContentAsString()
String edv2 = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions/" + allVersions.get(1).id)).andReturn().getResponse().getContentAsString()
String edv2 = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions/" + allVersions.get(2).id)).andReturn().getResponse().getContentAsString()

def v2Version = new JsonSlurper().parseText(edv2).get("version")
def aedv1 = new JsonSlurper().parseText(edv1).with {
Expand All @@ -156,38 +168,24 @@ class EntityDescriptorVersionControllerTests extends AbstractBaseDataJpaTest {
}

@WithMockUser(value = "someUser", roles = ["USER"])
@Transactional
def "GET /api/EntityDescriptor/{resourceId}/Versions with 1 entity descriptor version"() {
given:
EntityDescriptor ed = createEntityDescriptor()

def "GET /api/EntityDescriptor/{resourceId}/Versions with 2 entity descriptor version"() {
when:
def result = mockMvc.perform(get("/api/EntityDescriptor/" + ed.getResourceId() + "/Versions"))
def result = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions"))

then:
result.andExpect(status().isOk())
.andExpect(content().contentType(APPLICATION_JSON))
.andExpect(jsonPath("\$").isArray())
.andExpect(jsonPath("\$", hasSize(1)))
.andExpect(jsonPath("\$", hasSize(2)))
.andExpect(jsonPath("\$.[0].id").exists())
.andExpect(jsonPath("\$.[0].creator").isEmpty())
.andExpect(jsonPath("\$.[0].creator").value("foouser"))
.andExpect(jsonPath("\$.[0].date").exists())
}

@WithMockUser(value = "someUser", roles = ["USER"])
@Transactional
def "GET /api/EntityDescriptor/{resourceId}/Versions with 2 entity descriptor versions"() {
given:
EntityDescriptor ed = createEntityDescriptor()

//Will created a second version for UPDATE revision
testEntityManager.getEntityManager().getTransaction().begin()
ed.serviceEnabled = true
entityDescriptorRepository.save(ed)
testEntityManager.getEntityManager().getTransaction().commit() // get envers to write version

when:
def result = mockMvc.perform(get("/api/EntityDescriptor/" + ed.getResourceId() + "/Versions"))
def result = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions"))

then:
result.andExpect(status().isOk())
Expand All @@ -203,50 +201,36 @@ class EntityDescriptorVersionControllerTests extends AbstractBaseDataJpaTest {
def date2 = JsonPath.read(resultStr, "\$.[1].date")

Integer.parseInt(id1) < Integer.parseInt(id2)
date1 < date2
date1 <= date2
}

@WithMockUser(value = "someUser", roles = ["USER"])
@Transactional
def "GET /api/EntityDescriptor/{resourceId}/Versions/{version} for non existent version"() {
given:
EntityDescriptor ed = createEntityDescriptor()

when:
def result = mockMvc.perform(get("/api/EntityDescriptor/" + ed.getResourceId() + "/Versions/1000"))
def result = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions/1000"))

then:
result.andExpect(status().isNotFound())
}

@WithMockUser(value = "someUser", roles = ["USER"])
@Transactional
def "GET /api/EntityDescriptor/{resourceId}/Versions with 2 entity descriptor versions"() {
given:
EntityDescriptor ed = createEntityDescriptor()

//Will created a second version for UPDATE revision
testEntityManager.getEntityManager().getTransaction().begin()
ed.serviceProviderName = 'SP2'
entityDescriptorRepository.save(ed)
testEntityManager.getEntityManager().getTransaction().commit() // get envers to write version

when:
def resultStr = mockMvc.perform(get("/api/EntityDescriptor/" + ed.getResourceId() + "/Versions")).andReturn().getResponse().getContentAsString()
def resultStr = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions")).andReturn().getResponse().getContentAsString()

def id1 = JsonPath.read(resultStr, "\$.[0].id")
def id2 = JsonPath.read(resultStr, "\$.[1].id")

def edv1 = mockMvc.perform(get("/api/EntityDescriptor/" + ed.getResourceId() + "/Versions/" + id1))
def edv2 = mockMvc.perform(get("/api/EntityDescriptor/" + ed.getResourceId() + "/Versions/" + id2))
def edv1 = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions/" + id1))
def edv2 = mockMvc.perform(get("/api/EntityDescriptor/" + resId + "/Versions/" + id2))

then:
edv1.andExpect(status().isOk()).andExpect(jsonPath("\$.serviceProviderName").value("SP1"))
edv2.andExpect(status().isOk()).andExpect(jsonPath("\$.serviceProviderName").value("SP2"))
}

private EntityDescriptor createEntityDescriptor() {
EntityDescriptor ed = new EntityDescriptor(entityID: 'https://shib.org/foo', idOfOwner: 'testingGroupBBB', serviceProviderName: 'SP1')
EntityDescriptor ed = new EntityDescriptor(entityID: 'https://shib.org/foo', idOfOwner: 'testingGroupBBB', serviceProviderName: 'SP1', modifiedBy: 'foouser')
ownershipRepository.deleteEntriesForOwnedObject(ed);
ownershipRepository.save(new Ownership(gb, ed));
ed = entityDescriptorRepository.save(ed)
Expand All @@ -267,8 +251,8 @@ class EntityDescriptorVersionControllerTests extends AbstractBaseDataJpaTest {
}

@Bean
EnversVersionServiceSupport enversVersionServiceSupport(EntityManager entityManager) {
return new EnversVersionServiceSupport(entityManager)
EnversVersionServiceSupport enversVersionServiceSupport(EntityManager entityManager, EntityDescriptorRepository repository) {
return new EnversVersionServiceSupport(entityManager, repository)
}
}
}

0 comments on commit 2fe9315

Please sign in to comment.