Skip to content

Commit

Permalink
SHIBUI-2394
Browse files Browse the repository at this point in the history
Added Approvers list to groups and unit tests
  • Loading branch information
chasegawa committed Sep 29, 2022
1 parent 671b079 commit 8af0101
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;

Expand All @@ -19,6 +22,6 @@ public class Approvers {
@Column(name = "resource_id")
private String resourceId = UUID.randomUUID().toString();

@ManyToMany
private Set<Group> approverGroups = new HashSet<>();
@OneToMany
private List<Group> approverGroups = new ArrayList<>();
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public class Group implements Owner {
private String validationRegex;

@OneToMany
private List<Approvers> approvalGroups = new ArrayList<>();
private List<Approvers> approversList = new ArrayList<>();

/**
* Define a Group object based on the user
Expand Down Expand Up @@ -86,4 +86,14 @@ public Set<Ownership> getOwnedItems() {
}
return ownedItems;
}

@Override
public int hashCode() {
return resourceId.hashCode();
}

@Override
public boolean equals(Object o) {
return o instanceof Group && this.resourceId.equals(((Group)o).resourceId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package edu.internet2.tier.shibboleth.admin.ui.security.repository;

import edu.internet2.tier.shibboleth.admin.ui.security.model.Approvers;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ApproversRepository extends JpaRepository<Approvers, String> {
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ 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.ApproversRepository
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
Expand Down Expand Up @@ -33,6 +34,9 @@ import javax.persistence.EntityManager
@EnableJpaRepositories(basePackages = ["edu.internet2.tier.shibboleth.admin.ui"])
@EntityScan("edu.internet2.tier.shibboleth.admin.ui")
abstract class AbstractBaseDataJpaTest extends Specification implements ResetsDatabaseTrait {
@Autowired
ApproversRepository approversRepository

@Autowired
EntityManager entityManager

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class GroupServiceTests extends AbstractBaseDataJpaTest {
def "CRUD operations - approver groups" () {
given:
groupService.clearAllForTesting();
HashSet<Group> apprGroups = new HashSet<>()
List<Group> apprGroups = new ArrayList<>()
String[] groupNames = ['AAA', 'BBB', 'CCC', 'DDD']
groupNames.each {name -> {
Group group = new Group().with({
Expand All @@ -94,24 +94,38 @@ class GroupServiceTests extends AbstractBaseDataJpaTest {
it.resourceId = name
it
})
group = groupRepository.saveAndFlush(group)
group = groupRepository.save(group)
}}
entityManager.flush()
entityManager.clear()

groupNames.each {name ->{
if (!name.equals('AAA')) {
apprGroups.add(group)
apprGroups.add(groupRepository.findByResourceId(name))
}
}}

when: "Adding approval list to a group"
Approvers approvers = new Approvers()
approvers.setApproverGroups(apprGroups)
approvers = approversRepository.save(approvers)
entityManager.flush()
entityManager.clear()

List<Approvers> apprList = new ArrayList<>()
apprList.add(approvers)
Group aaaGroup = groupService.find('AAA')
aaaGroup.setApprovalGroups(apprList)
aaaGroup.setApproversList(apprList)
groupService.updateGroup(aaaGroup)
Group lookupGroup = groupService.find('AAA')

then:
lookupGroup.getApprovalGroups().size() == 1
lookupGroup.getApproversList().size() == 1
List<Group> approvalGroups = lookupGroup.getApproversList().get(0).getApproverGroups()
approvalGroups.size() == 3
apprGroups.each {group -> {
assert approvalGroups.contains(group)}
}
}

}

0 comments on commit 8af0101

Please sign in to comment.