From 2fe93157042cc05ff6105e14f838ff222082ddea Mon Sep 17 00:00:00 2001 From: chasegawa Date: Mon, 16 Oct 2023 16:20:01 -0700 Subject: [PATCH] SHIBUI-2510 Resolved issue with envers version tests --- ...ityDescriptorVersionControllerTests.groovy | 72 ++++++++----------- 1 file changed, 28 insertions(+), 44 deletions(-) diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/EntityDescriptorVersionControllerTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/EntityDescriptorVersionControllerTests.groovy index e4059f160..6412de865 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/EntityDescriptorVersionControllerTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/controller/EntityDescriptorVersionControllerTests.groovy @@ -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 @@ -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 @@ -82,6 +84,7 @@ class EntityDescriptorVersionControllerTests extends AbstractBaseDataJpaTest { def controller @Transactional + @WithMockAdmin def setup() { openSamlObjects.init() @@ -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 { @@ -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 { @@ -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()) @@ -203,42 +201,28 @@ 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")) @@ -246,7 +230,7 @@ class EntityDescriptorVersionControllerTests extends AbstractBaseDataJpaTest { } 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) @@ -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) } } } \ No newline at end of file