Skip to content

Commit 51704fe

Browse files
committed
Initial TeamMembershipsAPI tests
1 parent 6ad6097 commit 51704fe

File tree

1 file changed

+184
-12
lines changed

1 file changed

+184
-12
lines changed

tests/api/test_teammemberships.py

Lines changed: 184 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,203 @@
33
"""pytest Team Memberships functions, fixtures and tests."""
44

55

6+
import itertools
7+
68
import pytest
79

810
import ciscosparkapi
9-
from tests.utils import create_string
1011

1112

1213
# Helper Functions
1314

14-
def add_people_to_team(api, team, emails):
15-
for email in emails:
16-
api.team_memberships.create(team.id, personEmail=email)
15+
def add_person_to_team_by_email(api, team, person, isModerator=False):
16+
return api.team_memberships.create(team.id,
17+
personEmail=person.emails[0],
18+
isModerator=isModerator)
19+
20+
21+
def add_person_to_team_by_id(api, team, person, isModerator=False):
22+
return api.team_memberships.create(team.id,
23+
personId=person.id,
24+
isModerator=isModerator)
25+
26+
27+
def get_team_membership_list(api, team, **kwargs):
28+
return list(api.team_memberships.list(teamId=team.id, **kwargs))
29+
30+
31+
def get_team_membership_by_id(api, id):
32+
return api.team_memberships.get(id)
33+
34+
35+
def make_moderator(api, team_membership):
36+
return api.team_memberships.update(team_membership.id, isModerator=True)
37+
38+
39+
def delete_membership(api, team_membership):
40+
api.team_memberships.delete(team_membership.id)
1741

1842

1943
def empty_team(api, me, team):
20-
"""Remove all memberships from a team (except the caller's membership)."""
21-
memberships = api.team_memberships.list(team.id)
22-
for membership in memberships:
44+
"""Remove all team_memberships from a team (except me)."""
45+
team_memberships = api.team_memberships.list(team.id)
46+
for membership in team_memberships:
2347
if membership.personId != me.id:
24-
api.team_memberships.delete(membership.id)
48+
delete_membership(api, membership)
49+
50+
51+
def is_valid_membership(membership):
52+
return isinstance(membership, ciscosparkapi.TeamMembership) \
53+
and membership.id is not None
54+
55+
56+
def are_valid_memberships(iterable):
57+
are_valid = (is_valid_membership(item) for item in iterable)
58+
return all(are_valid)
59+
60+
61+
def membership_exists(api, membership):
62+
try:
63+
get_team_membership_by_id(api, membership.id)
64+
except ciscosparkapi.SparkApiError:
65+
return False
66+
else:
67+
return True
2568

2669

2770
# pytest Fixtures
2871

72+
@pytest.fixture()
73+
def my_team_team_membership(api, me, team):
74+
team_memberships = get_team_membership_list(api, team)
75+
for membership in team_memberships:
76+
if membership.personId == me.id:
77+
return membership
78+
79+
80+
@pytest.fixture(scope="session")
81+
def authenticated_user_team_memberships(api, team):
82+
return list(api.team_memberships.list())
83+
84+
2985
@pytest.fixture(scope="session")
30-
def team_with_members(api, me, team, email_addresses):
31-
add_people_to_team(api, team, email_addresses)
32-
yield team
33-
empty_team(api, me, team)
86+
def make_me_team_moderator(api, my_team_membership):
87+
return make_moderator(api, my_team_membership)
88+
89+
90+
@pytest.fixture(scope="session")
91+
def team_member_added_by_email(api, make_me_team_moderator, team, test_people):
92+
person = test_people["member_added_by_email"]
93+
membership = add_person_to_team_by_email(api, team, person)
94+
95+
yield membership
96+
97+
delete_membership(api, membership)
98+
99+
100+
@pytest.fixture(scope="session")
101+
def team_member_added_by_id(api, make_me_team_moderator, team, test_people):
102+
person = test_people["member_added_by_id"]
103+
membership = add_person_to_team_by_id(api, team, person)
104+
105+
yield membership
106+
107+
delete_membership(api, membership)
108+
109+
110+
@pytest.fixture(scope="session")
111+
def team_moderator_added_by_email(api, make_me_team_moderator, team,
112+
test_people):
113+
person = test_people["moderator_added_by_email"]
114+
membership = add_person_to_team_by_email(api, team, person,
115+
isModerator=True)
116+
117+
yield membership
118+
119+
delete_membership(api, membership)
120+
121+
122+
@pytest.fixture(scope="session")
123+
def team_moderator_added_by_id(api, make_me_team_moderator, team, test_people):
124+
person = test_people["moderator_added_by_id"]
125+
membership = add_person_to_team_by_id(api, team, person,
126+
isModerator=True)
127+
128+
yield membership
129+
130+
delete_membership(api, membership)
131+
132+
133+
@pytest.fixture(scope="session")
134+
def additional_team_memberships(team_member_added_by_email,
135+
team_member_added_by_id,
136+
team_moderator_added_by_email,
137+
team_moderator_added_by_id):
138+
return [team_member_added_by_email,
139+
team_member_added_by_id,
140+
team_moderator_added_by_email,
141+
team_moderator_added_by_id]
142+
143+
144+
@pytest.fixture(scope="session")
145+
def team_with_members(team, additional_team_memberships):
146+
return team
147+
148+
149+
# Tests
150+
151+
class TestTeamMembershipsAPI(object):
152+
"""Test MembershipsAPI methods."""
153+
154+
def test_get_team_membership_details(self, api, my_team_membership):
155+
membership = get_team_membership_by_id(api, my_team_membership.id)
156+
assert is_valid_membership(membership)
157+
158+
def test_list_user_team_memberships(self, authenticated_user_memberships):
159+
assert len(authenticated_user_memberships) >= 1
160+
assert are_valid_memberships(authenticated_user_memberships)
161+
162+
def test_list_user_team_memberships_with_paging(self, api, add_teams,
163+
authenticated_user_memberships):
164+
page_size = 1
165+
pages = 3
166+
num_memberships = pages * page_size
167+
if len(authenticated_user_memberships) < num_memberships:
168+
add_teams(num_memberships - len(authenticated_user_memberships))
169+
team_memberships = api.team_memberships.list(max=page_size)
170+
memberships_list = list(itertools.islice(team_memberships,
171+
num_memberships))
172+
assert len(memberships_list) == num_memberships
173+
assert are_valid_memberships(memberships_list)
174+
175+
def test_create_team_membership_by_email(self, team_member_added_by_email):
176+
assert is_valid_membership(team_member_added_by_email)
177+
178+
def test_create_team_membership_by_person_id(self,
179+
team_member_added_by_id):
180+
assert is_valid_membership(team_member_added_by_id)
181+
182+
def test_create_team_moderator_by_email(self,
183+
team_moderator_added_by_email):
184+
assert is_valid_membership(team_moderator_added_by_email)
185+
186+
def test_create_team_moderator_by_person_id(self,
187+
team_moderator_added_by_id):
188+
assert is_valid_membership(team_moderator_added_by_id)
189+
190+
def test_update_membership_make_moderator(self,
191+
make_me_team_moderator):
192+
assert is_valid_membership(make_me_team_moderator)
193+
assert make_me_team_moderator.isModerator
194+
195+
def test_delete_membership(self, api, team, test_people):
196+
person = test_people["delete_membership_test_person"]
197+
membership = add_person_to_team_by_id(api, team, person)
198+
assert is_valid_membership(membership)
199+
delete_membership(api, membership)
200+
assert not membership_exists(api, membership)
201+
202+
def test_list_team_memberships(self, api, team_with_members):
203+
team_memberships = get_team_membership_list(api, team_with_members)
204+
assert len(team_memberships) > 1
205+
assert are_valid_memberships(team_memberships)

0 commit comments

Comments
 (0)