-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathis_group_member_test.go
153 lines (139 loc) · 3.83 KB
/
is_group_member_test.go
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
package pkg
import (
"testing"
pb "github.com/romnn/ldap-manager/pkg/grpc/gen"
)
// TestIsGroupMember tests checking if a user is member of a group
func TestIsGroupMember(t *testing.T) {
test := new(Test).Start(t).Setup(t)
defer test.Teardown()
strict := false
groupName := "test-group"
usernames := []string{"user1", "user2"}
// users must be created first
for _, username := range usernames {
if err := test.Manager.NewUser(&pb.NewUserRequest{
Username: username,
Password: "Hallo Welt",
Email: "a@b.de",
FirstName: "roman",
LastName: "d",
}); err != nil {
t.Fatalf(
"failed to add new user: %v",
err,
)
}
}
if err := test.Manager.NewGroup(&pb.NewGroupRequest{
Name: groupName,
Members: usernames,
}, strict); err != nil {
t.Fatalf(
"failed to add new group: %v",
err,
)
}
// assert every user is member of the users group by default
for _, username := range usernames {
userGroup := test.Manager.DefaultUserGroup
memberStatus, _ := test.isGroupMember(t, username, userGroup, true)
if !memberStatus.GetIsMember() {
t.Fatalf(
"expected user %q to be a member of group %q",
username, userGroup,
)
}
}
// assert every user is member of the new group
for _, username := range usernames {
memberStatus, _ := test.isGroupMember(t, username, groupName, true)
if !memberStatus.GetIsMember() {
t.Fatalf(
"expected user %q to be a member of group %q",
username, groupName,
)
}
}
// create group with only the first user
username := usernames[0]
groupName2 := "another-group"
if err := test.Manager.NewGroup(&pb.NewGroupRequest{
Name: groupName2,
Members: []string{username},
}, strict); err != nil {
t.Fatalf(
"failed to add new group: %v",
err,
)
}
memberStatus, _ := test.isGroupMember(t, username, groupName2, true)
if !memberStatus.GetIsMember() {
t.Fatalf(
"expected user %q to be a member of group %q",
username, groupName2,
)
}
username = usernames[1]
memberStatus, _ = test.isGroupMember(t, username, groupName2, false)
if memberStatus.GetIsMember() {
t.Fatalf(
"expected user %q to not be a member of group %q",
username, groupName2,
)
}
// assert a user is not longer member of any group after it is deleted
groups, err := test.Manager.GetGroupList(&pb.GetGroupListRequest{})
if err != nil {
t.Fatalf(
"failed to get list of all groups: %v",
err,
)
}
t.Log(PrettyPrint(groups))
username = usernames[1]
keepGroups := false
if err := test.Manager.DeleteUser(&pb.DeleteUserRequest{
Username: username,
}, keepGroups); err != nil {
t.Fatalf(
"failed to delete user %q: %v",
username, err,
)
}
for _, group := range groups.GetGroups() {
memberStatus, _ = test.isGroupMember(t, username, group.GetName(), false)
if memberStatus.GetIsMember() {
t.Errorf(
"expected user %q to not be a member of group %q",
username, group.GetName(),
)
}
}
}
// TestIsGroupMemberMissing tests checking group membership where either the user or group does not exist
func TestIsGroupMemberMissing(t *testing.T) {
test := new(Test).Start(t).Setup(t)
defer test.Teardown()
// assert sure a non-existent user is not a member of an existent group
username := "i-dont-exist"
groupName := test.Manager.DefaultUserGroup
memberStatus, _ := test.isGroupMember(t, username, groupName, false)
if memberStatus.GetIsMember() {
t.Fatalf(
"expected user %q to not be a member of group %q",
username, groupName,
)
}
// make sure an existent user is not a member of a non-existent group
username = test.Manager.DefaultAdminUsername
groupName = "group-that-is-ficticious"
memberStatus, err := test.isGroupMember(t, username, groupName, false)
_, missingGroup := err.(*ZeroOrMultipleGroupsError)
if err == nil || !missingGroup {
t.Fatalf(
"expected error due to missing group %q",
groupName,
)
}
}