Newer
Older
Sonia Zorba
committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package it.inaf.ia2.gms.persistence;
import it.inaf.ia2.gms.DataSourceConfig;
import it.inaf.ia2.gms.persistence.model.GroupEntity;
import it.inaf.ia2.gms.persistence.model.MembershipEntity;
import java.util.ArrayList;
import java.util.Arrays;
import javax.sql.DataSource;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = DataSourceConfig.class)
public class MembershipsDAOTest {
private static final String USER_1 = "user-1";
private static final String USER_2 = "user-2";
@Autowired
private DataSource dataSource;
private GroupsDAO groupsDAO;
private MembershipsDAO membershipsDAO;
@Before
public void setUp() {
groupsDAO = new GroupsDAO(dataSource);
membershipsDAO = new MembershipsDAO(dataSource);
}
@Test
public void testAddAndRemoveMembers() {
groupsDAO.createGroup(groupEntity("A", "A"));
groupsDAO.createGroup(groupEntity("B", "B"));
Sonia Zorba
committed
assertTrue(membershipsDAO.findByGroup("A").isEmpty());
membershipsDAO.addMember(membershipEntity(USER_1, "A"));
membershipsDAO.addMember(membershipEntity(USER_1, "B"));
membershipsDAO.addMember(membershipEntity(USER_2, "B"));
assertTrue(membershipsDAO.findByGroup("A").contains(membershipEntity(USER_1, "A")));
assertEquals(3, membershipsDAO.findByGroups(Arrays.asList("A", "B")).size());
assertEquals(2, membershipsDAO.getUserMemberships(USER_1).size());
assertEquals(1, membershipsDAO.getUserMemberships(USER_2, "").size());
assertTrue(membershipsDAO.isMemberOf(USER_1, "B"));
membershipsDAO.removeMembership("B", USER_1);
assertFalse(membershipsDAO.isMemberOf(USER_1, "B"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "A"));
assertTrue(membershipsDAO.isMemberOf(USER_2, "B"));
membershipsDAO.deleteAllGroupsMembership(Arrays.asList("A", "B"));
assertFalse(membershipsDAO.isMemberOf(USER_1, "A"));
assertFalse(membershipsDAO.isMemberOf(USER_2, "B"));
}
@Test
public void testFindByGroupsEmptyList() {
assertTrue(membershipsDAO.findByGroups(new ArrayList<>()).isEmpty());
}
@Test
public void testDeleteAllGroupsMembershipEmptyList() {
membershipsDAO.deleteAllGroupsMembership(new ArrayList<>());
}
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
@Test
public void testIsMemberOfRecursive() {
groupsDAO.createGroup(groupEntity("ROOT", ""));
groupsDAO.createGroup(groupEntity("A", "A"));
groupsDAO.createGroup(groupEntity("E", "A.E"));
groupsDAO.createGroup(groupEntity("F", "A.E.F"));
groupsDAO.createGroup(groupEntity("B", "B"));
groupsDAO.createGroup(groupEntity("C", "B.C"));
groupsDAO.createGroup(groupEntity("D", "B.C.D"));
membershipsDAO.addMember(membershipEntity(USER_1, "F"));
membershipsDAO.addMember(membershipEntity(USER_1, "C"));
assertFalse(membershipsDAO.isMemberOf(USER_1, "ROOT"));
assertFalse(membershipsDAO.isMemberOf(USER_1, "A"));
assertFalse(membershipsDAO.isMemberOf(USER_1, "B"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "C"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "D"));
assertFalse(membershipsDAO.isMemberOf(USER_1, "E"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "F"));
membershipsDAO.addMember(membershipEntity(USER_1, "ROOT"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "ROOT"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "A"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "B"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "C"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "D"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "E"));
assertTrue(membershipsDAO.isMemberOf(USER_1, "F"));
assertFalse(membershipsDAO.isMemberOf(USER_1, "inexistent-id"));
}
private GroupEntity groupEntity(String groupId, String groupPath) {
Sonia Zorba
committed
GroupEntity groupEntity = new GroupEntity();
groupEntity.setId(groupId);
groupEntity.setName(groupId);
Sonia Zorba
committed
groupEntity.setLeaf(false);
return groupEntity;
}
private MembershipEntity membershipEntity(String userId, String groupId) {
MembershipEntity membershipEntity = new MembershipEntity();
membershipEntity.setUserId(userId);
membershipEntity.setGroupId(groupId);
return membershipEntity;
}
}