diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/repository/GroupsRepositoryTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/repository/GroupsRepositoryTests.groovy index 1a23778da..aba53121e 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/repository/GroupsRepositoryTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/repository/GroupsRepositoryTests.groovy @@ -1,23 +1,24 @@ package edu.internet2.tier.shibboleth.admin.ui.security.repository -import javax.persistence.EntityManager -import javax.transaction.Transactional - +import edu.internet2.tier.shibboleth.admin.ui.configuration.InternationalizationConfiguration +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.listener.GroupUpdatedEntityListener 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.boot.test.context.TestConfiguration import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Profile +import org.springframework.dao.DataIntegrityViolationException import org.springframework.data.jpa.repository.config.EnableJpaRepositories import org.springframework.test.annotation.Rollback import org.springframework.test.context.ActiveProfiles import org.springframework.test.context.ContextConfiguration - -import edu.internet2.tier.shibboleth.admin.ui.configuration.InternationalizationConfiguration -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.listener.GroupUpdatedEntityListener import spock.lang.Specification +import javax.transaction.Transactional + /** * Tests to validate the repo and model for groups * @author chasegawa @@ -26,7 +27,7 @@ import spock.lang.Specification @ContextConfiguration(classes=[InternationalizationConfiguration, LocalConfig]) @EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"]) @EntityScan("edu.internet2.tier.shibboleth.admin.ui") -@ActiveProfiles("test") +@ActiveProfiles(["test","gr-tests"]) class GroupsRepositoryTests extends Specification { @Autowired GroupsRepository groupsRepo @@ -95,8 +96,8 @@ class GroupsRepositoryTests extends Specification { it.resourceId = "g1" it } - def Group savedGroup = groupsRepo.saveAndFlush(group) - def Collection all = ownershipRepository.findAllByOwner(savedGroup) + Group savedGroup = groupsRepo.saveAndFlush(group) + Collection all = ownershipRepository.findAllByOwner(savedGroup) then: all.size() == 3 @@ -131,7 +132,7 @@ class GroupsRepositoryTests extends Specification { def gList = groupsRepo.findAll() gList.size() == 1 def groupFromDb = gList.get(0).asType(Group) - groupFromDb.equals(group) == true + groupFromDb.equals(group) // fetch checks groupsRepo.findByResourceId("not an id") == null @@ -158,7 +159,7 @@ class GroupsRepositoryTests extends Specification { then: // Missing non-nullable field (name) should thrown error - final def exception = thrown(org.springframework.dao.DataIntegrityViolationException) + final def exception = thrown(DataIntegrityViolationException) } @Rollback @@ -212,13 +213,14 @@ class GroupsRepositoryTests extends Specification { groupsRepo.findAll().size() == 0 when: - def nothingThere = groupsRepo.findByResourceId(null); + def nothingThere = groupsRepo.findByResourceId(null) then: nothingThere == null } - @org.springframework.boot.test.context.TestConfiguration + @TestConfiguration + @Profile("gr-tests") static class LocalConfig { @Bean GroupUpdatedEntityListener groupUpdatedEntityListener(OwnershipRepository repo) { diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/repository/OwnershipRepositoryTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/repository/OwnershipRepositoryTests.groovy index 229763c58..196dd29f4 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/repository/OwnershipRepositoryTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/repository/OwnershipRepositoryTests.groovy @@ -83,7 +83,7 @@ class OwnershipRepositoryTests extends Specification { @Rollback def "test clearUsersGroups"() { when: "remove entries where the user is the owned object of a group" - repo.clearUsersGroups("aaa"); + repo.clearUsersGroups("aaa") def result = repo.findAllGroupsForUser("aaa") then: @@ -102,7 +102,7 @@ class OwnershipRepositoryTests extends Specification { } when: "remove entries where the user is the owned object of groups" - repo.clearUsersGroups("ccc"); + repo.clearUsersGroups("ccc") result = repo.findAllGroupsForUser("ccc") then: @@ -113,9 +113,8 @@ class OwnershipRepositoryTests extends Specification { def "test deleteEntriesForOwnedObject"() { when: "remove entries where the user is the owned object of a group" repo.deleteEntriesForOwnedObject(new Ownable() { - public String getObjectId() { return "aaa" } - - public OwnableType getOwnableType() { OwnableType.USER } + String getObjectId() { return "aaa" } + OwnableType getOwnableType() { OwnableType.USER } }) def result = repo.findAllGroupsForUser("aaa") @@ -136,10 +135,9 @@ class OwnershipRepositoryTests extends Specification { when: "remove entries where the user is the owned object of groups" repo.deleteEntriesForOwnedObject(new Ownable() { - public String getObjectId() { return "ccc" } - - public OwnableType getOwnableType() { OwnableType.USER } - }); + String getObjectId() { return "ccc" } + OwnableType getOwnableType() { OwnableType.USER } + }) result = repo.findAllGroupsForUser("ccc") then: @@ -153,9 +151,8 @@ class OwnershipRepositoryTests extends Specification { userIds.add("bbb") userIds.add("ccc") def result = repo.findUsersByOwner(new Owner() { - public String getOwnerId() { return "g1" } - - public OwnerType getOwnerType() { OwnerType.GROUP } + String getOwnerId() { return "g1" } + OwnerType getOwnerType() { OwnerType.GROUP } }) then: @@ -167,9 +164,8 @@ class OwnershipRepositoryTests extends Specification { when: result = repo.findUsersByOwner(new Owner() { - public String getOwnerId() { return "aaa" } - - public OwnerType getOwnerType() { return OwnerType.USER } + String getOwnerId() { return "aaa" } + OwnerType getOwnerType() { return OwnerType.USER } }) then: @@ -196,8 +192,8 @@ class OwnershipRepositoryTests extends Specification { groupIds.add("g1") groupIds.add("g2") def result = repo.findOwnableObjectOwners(new Ownable() { - public String getObjectId() { return "ccc" } - public OwnableType getOwnableType() { return OwnableType.USER } + String getObjectId() { return "ccc" } + OwnableType getOwnableType() { return OwnableType.USER } }) then: @@ -242,9 +238,8 @@ class OwnershipRepositoryTests extends Specification { userIds.add("bbb") userIds.add("ccc") def result = repo.findAllByOwner(new Owner() { - public String getOwnerId() { return "g1" } - - public OwnerType getOwnerType() { return OwnerType.GROUP } + String getOwnerId() { return "g1" } + OwnerType getOwnerType() { return OwnerType.GROUP } }) then: @@ -256,9 +251,8 @@ class OwnershipRepositoryTests extends Specification { when: "Find all items owned by user aaa" result = repo.findAllByOwner(new Owner() { - public String getOwnerId() { return "aaa" } - - public OwnerType getOwnerType() { return OwnerType.USER } + String getOwnerId() { return "aaa" } + OwnerType getOwnerType() { return OwnerType.USER } }) then: diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/service/GroupServiceTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/service/GroupServiceTests.groovy index 7673a907a..eb742ddf2 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/service/GroupServiceTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/service/GroupServiceTests.groovy @@ -34,7 +34,7 @@ import spock.lang.Specification @EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"]) @EntityScan("edu.internet2.tier.shibboleth.admin.ui") @DirtiesContext -@ActiveProfiles(["local"]) +@ActiveProfiles(["gs-test"]) class GroupServiceTests extends Specification { @Autowired GroupServiceForTesting groupService @@ -126,7 +126,7 @@ class GroupServiceTests extends Specification { } @TestConfiguration - @Profile("local") + @Profile("gs-test") static class LocalConfig { @Bean GroupServiceForTesting groupServiceForTesting(GroupsRepository repo, OwnershipRepository ownershipRepository) { diff --git a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/service/UserServiceTests.groovy b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/service/UserServiceTests.groovy index 2ef663fbc..732743430 100644 --- a/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/service/UserServiceTests.groovy +++ b/backend/src/test/groovy/edu/internet2/tier/shibboleth/admin/ui/security/service/UserServiceTests.groovy @@ -1,61 +1,45 @@ package edu.internet2.tier.shibboleth.admin.ui.security.service -import java.time.LocalDateTime -import java.time.format.DateTimeFormatter - -import javax.persistence.EntityManager - -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.boot.test.context.SpringBootTest -import org.springframework.boot.test.context.TestConfiguration -import org.springframework.context.annotation.Bean -import org.springframework.context.annotation.ComponentScan -import org.springframework.context.annotation.Profile -import org.springframework.context.annotation.PropertySource -import org.springframework.data.jpa.repository.config.EnableJpaRepositories -import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder -import org.springframework.security.test.context.support.WithMockUser -import org.springframework.test.annotation.DirtiesContext -import org.springframework.test.annotation.Rollback -import org.springframework.test.context.ActiveProfiles -import org.springframework.test.context.ContextConfiguration -import org.springframework.transaction.annotation.Transactional - import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer - -import edu.internet2.tier.shibboleth.admin.ui.ShibbolethUiApplication import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration import edu.internet2.tier.shibboleth.admin.ui.configuration.CustomPropertiesConfiguration -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.domain.EntityDescriptor -import edu.internet2.tier.shibboleth.admin.ui.domain.frontend.EntityDescriptorRepresentation import edu.internet2.tier.shibboleth.admin.ui.security.model.Group -import edu.internet2.tier.shibboleth.admin.ui.security.model.OwnerType import edu.internet2.tier.shibboleth.admin.ui.security.model.Ownership import edu.internet2.tier.shibboleth.admin.ui.security.model.Role import edu.internet2.tier.shibboleth.admin.ui.security.model.User -import edu.internet2.tier.shibboleth.admin.ui.security.model.listener.GroupUpdatedEntityListener -import edu.internet2.tier.shibboleth.admin.ui.security.model.listener.UserUpdatedEntityListener import edu.internet2.tier.shibboleth.admin.ui.security.repository.GroupsRepository import edu.internet2.tier.shibboleth.admin.ui.security.repository.OwnershipRepository import edu.internet2.tier.shibboleth.admin.ui.security.repository.RoleRepository import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository -import edu.internet2.tier.shibboleth.admin.ui.security.service.IGroupService -import edu.internet2.tier.shibboleth.admin.ui.security.service.UserService +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.boot.test.context.TestConfiguration +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.ComponentScan +import org.springframework.context.annotation.Profile +import org.springframework.data.jpa.repository.config.EnableJpaRepositories +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder +import org.springframework.test.annotation.DirtiesContext +import org.springframework.test.annotation.Rollback +import org.springframework.test.context.ActiveProfiles +import org.springframework.test.context.ContextConfiguration +import org.springframework.transaction.annotation.Transactional import spock.lang.Specification +import javax.persistence.EntityManager +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter + @DataJpaTest @ContextConfiguration(classes=[CoreShibUiConfiguration, CustomPropertiesConfiguration, LocalConfig]) @EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"]) @EntityScan("edu.internet2.tier.shibboleth.admin.ui") @DirtiesContext -@ActiveProfiles(["test", "local"]) +@ActiveProfiles(["test", "us-test"]) @ComponentScan(basePackages="{ edu.internet2.tier.shibboleth.admin.ui.configuration }") class UserServiceTests extends Specification { @@ -106,17 +90,17 @@ class UserServiceTests extends Specification { @Rollback def "When creating user, user is set to the correct group"() { given: - Group gb = new Group(); + Group gb = new Group() gb.setResourceId("testingGroupBBB") gb.setName("Group BBB") gb = groupService.createGroup(gb) Optional userRole = roleRepository.findByName("ROLE_USER") - def User user = new User(username: "someUser", roles:[userRole.get()], password: "foo") + User user = new User(username: "someUser", roles:[userRole.get()], password: "foo") user.setGroup(gb) when: - def User result = userService.save(user) + User result = userService.save(user) then: result.groupId == "testingGroupBBB" @@ -124,12 +108,12 @@ class UserServiceTests extends Specification { result.userGroups.size() == 1 // Raw check that the DB is correct for ownership - def Set users = ownershipRepository.findUsersByOwner(gb) + Set users = ownershipRepository.findUsersByOwner(gb) users.size() == 1 - users.getAt(0).ownedId == "someUser" + users[0].ownedId == "someUser" // Validate that loading the group has the correct list as well - Group g = groupService.find("testingGroupBBB"); + Group g = groupService.find("testingGroupBBB") g.ownedItems.size() == 1 } @@ -141,19 +125,19 @@ class UserServiceTests extends Specification { ga.setName("Group A") ga = groupService.createGroup(ga) - Group gb = new Group(); + Group gb = new Group() gb.setResourceId("testingGroupBBB") gb.setName("Group BBB") gb = groupService.createGroup(gb) Optional userRole = roleRepository.findByName("ROLE_USER") - def User user = new User(username: "someUser", roles:[userRole.get()], password: "foo") + User user = new User(username: "someUser", roles:[userRole.get()], password: "foo") user.setGroup(gb) - def User userInB = userService.save(user) + User userInB = userService.save(user) when: userInB.setGroupId("testingGroup") // changing groups will happen by updating the user's groupid (from the ui) - def User result = userService.save(userInB) + User result = userService.save(userInB) then: result.groupId == "testingGroup" @@ -161,19 +145,19 @@ class UserServiceTests extends Specification { result.userGroups.size() == 1 // Raw check that the DB is correct for ownership - def Set users = ownershipRepository.findUsersByOwner(ga) + Set users = ownershipRepository.findUsersByOwner(ga) users.size() == 1 - users.getAt(0).ownedId == "someUser" + users[0].ownedId == "someUser" // check db is correct for the previous group as well - def Set users2 = ownershipRepository.findUsersByOwner(gb) + Set users2 = ownershipRepository.findUsersByOwner(gb) users2.size() == 0 // Validate that loading the group has the correct list as well - Group g = groupService.find("testingGroup"); + Group g = groupService.find("testingGroup") g.ownedItems.size() == 1 - Group g2 = groupService.find("testingGroupBBB"); + Group g2 = groupService.find("testingGroupBBB") g2.ownedItems.size() == 0 } @@ -186,16 +170,16 @@ class UserServiceTests extends Specification { ga = groupService.createGroup(ga) Optional userRole = roleRepository.findByName("ROLE_USER") - def User user = new User(username: "someUser", firstName: "Fred", lastName: "Flintstone", roles:[userRole.get()], password: "foo") + User user = new User(username: "someUser", firstName: "Fred", lastName: "Flintstone", roles:[userRole.get()], password: "foo") user.setGroup(ga) userService.save(user) when: - def User flintstoneUser = userRepository.findByUsername("someUser").get() + User flintstoneUser = userRepository.findByUsername("someUser").get() flintstoneUser.setFirstName("Wilma") flintstoneUser.setGroupId("testingGroup") - def User result = userService.save(flintstoneUser) + User result = userService.save(flintstoneUser) then: result.groupId == "testingGroup" @@ -212,7 +196,7 @@ class UserServiceTests extends Specification { ga.setName("Group A") ga = groupService.createGroup(ga) - Group gb = new Group(); + Group gb = new Group() gb.setResourceId("testingGroupBBB") gb.setName("Group BBB") gb = groupService.createGroup(gb) @@ -237,16 +221,16 @@ class UserServiceTests extends Specification { result.userGroups.size() == 2 // Raw check that the DB is correct for ownership - def Set users = ownershipRepository.findUsersByOwner(ga) + Set users = ownershipRepository.findUsersByOwner(ga) users.size() == 1 - users.getAt(0).ownedId == "someUser" + users[0].ownedId == "someUser" - def Set users2 = ownershipRepository.findUsersByOwner(gb) + Set users2 = ownershipRepository.findUsersByOwner(gb) users2.size() == 1 - users2.getAt(0).ownedId == "someUser" + users2[0].ownedId == "someUser" when: - def userFromDb = userRepository.findById(result.id).get(); + def userFromDb = userRepository.findById(result.id).get() then: userFromDb.getUserGroups().size() == 2 @@ -259,7 +243,7 @@ class UserServiceTests extends Specification { } @TestConfiguration - @Profile("local") + @Profile("us-test") static class LocalConfig { @Bean GroupServiceForTesting groupServiceForTesting(GroupsRepository repo, OwnershipRepository ownershipRepository) {