Skip to content

Commit 9418c5c

Browse files
committed
Revise Memberships API wrapper tests
Revise method for generating test accounts; the test accounts need to be ‘Messaging’ licensed users (to enable the moderator functionality).
1 parent 18248d6 commit 9418c5c

File tree

4 files changed

+333
-45
lines changed

4 files changed

+333
-45
lines changed

tests/api/test_memberships.py

Lines changed: 198 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,45 +3,226 @@
33
"""pytest Memberships functions, fixtures and tests."""
44

55

6+
import itertools
7+
68
import pytest
79

810
import ciscosparkapi
911

1012

1113
# Helper Functions
1214

13-
def add_people_to_room(api, room, emails):
14-
for email in emails:
15-
api.memberships.create(room.id, personEmail=email)
15+
def add_person_to_room_by_email(api, room, person, isModerator=False):
16+
return api.memberships.create(room.id,
17+
personEmail=person.emails[0],
18+
isModerator=isModerator)
19+
20+
21+
def add_person_to_room_by_id(api, room, person, isModerator=False):
22+
return api.memberships.create(room.id,
23+
personId=person.id,
24+
isModerator=isModerator)
25+
26+
27+
def add_people_to_room_by_email(api, room, people):
28+
return [add_person_to_room_by_email(api, room, person)
29+
for person in people]
30+
31+
32+
def add_people_to_room_by_id(api, room, people):
33+
return [add_person_to_room_by_id(api, room, person)
34+
for person in people]
35+
36+
37+
def get_room_membership_list(api, room, **kwargs):
38+
return list(api.memberships.list(roomId=room.id, **kwargs))
39+
40+
41+
def get_membership_by_id(api, id):
42+
return api.memberships.get(id)
43+
44+
45+
def make_moderator(api, membership):
46+
return api.memberships.update(membership.id, isModerator=True)
47+
48+
49+
def delete_membership(api, membership):
50+
api.memberships.delete(membership.id)
1651

1752

1853
def empty_room(api, me, room):
1954
"""Remove all memberships from a room (except the caller's membership)."""
2055
memberships = api.memberships.list(room.id)
2156
for membership in memberships:
2257
if membership.personId != me.id:
23-
api.memberships.delete(membership.id)
58+
delete_membership(api, membership)
59+
60+
61+
def is_valid_membership(membership):
62+
return isinstance(membership, ciscosparkapi.Membership) \
63+
and membership.id is not None
64+
65+
66+
def are_valid_memberships(iterable):
67+
are_valid = (is_valid_membership(item) for item in iterable)
68+
return all(are_valid)
69+
70+
71+
def membership_exists(api, membership):
72+
try:
73+
get_membership_by_id(api, membership.id)
74+
except ciscosparkapi.SparkApiError:
75+
return False
76+
else:
77+
return True
2478

2579

2680
# pytest Fixtures
2781

2882
@pytest.fixture(scope="session")
29-
def group_room_with_members(api, me, group_room, email_addresses):
30-
add_people_to_room(api, group_room, email_addresses)
31-
yield group_room
32-
empty_room(api, me, group_room)
83+
def authenticated_users_memberships(api):
84+
return list(api.memberships.list())
85+
86+
87+
@pytest.fixture(scope="session")
88+
def my_group_room_membership(api, me, group_room):
89+
memberships = get_room_membership_list(api, group_room, personId=me.id)
90+
assert len(memberships) == 1
91+
membership = memberships[0]
92+
return membership
93+
94+
95+
@pytest.fixture(scope="session")
96+
def make_me_group_room_moderator(api, my_group_room_membership):
97+
return make_moderator(api, my_group_room_membership)
3398

3499

35100
@pytest.fixture(scope="session")
36-
def team_room_with_members(api, me, team_room, email_addresses):
37-
add_people_to_room(api, team_room, email_addresses)
38-
yield team_room
39-
empty_room(api, me, team_room)
101+
def person_1_group_room_membership(api, make_me_group_room_moderator,
102+
group_room, person_1):
103+
# Used by test_create_membership_by_email()
104+
membership = add_person_to_room_by_email(api, group_room, person_1)
105+
yield membership
106+
delete_membership(api, membership)
40107

41108

42-
@pytest.fixture
43-
def temp_group_room_with_members(api, me, temp_group_room, email_addresses):
44-
add_people_to_room(api, temp_group_room, email_addresses)
45-
yield temp_group_room
46-
empty_room(api, me, temp_group_room)
109+
@pytest.fixture(scope="session")
110+
def person_2_group_room_membership(api, make_me_group_room_moderator,
111+
group_room, person_2):
112+
# Used by test_create_membership_by_person_id()
113+
membership = add_person_to_room_by_id(api, group_room, person_2)
114+
yield membership
115+
delete_membership(api, membership)
47116

117+
118+
@pytest.fixture(scope="session")
119+
def person_3_group_room_membership(api, make_me_group_room_moderator,
120+
group_room, person_3):
121+
# Used by test_create_moderator_by_email()
122+
membership = add_person_to_room_by_email(api, group_room, person_3,
123+
isModerator=True)
124+
yield membership
125+
delete_membership(api, membership)
126+
127+
128+
@pytest.fixture(scope="session")
129+
def person_4_group_room_membership(api, make_me_group_room_moderator,
130+
group_room, person_4):
131+
# Used by test_create_moderator_by_person_id()
132+
membership = add_person_to_room_by_id(api, group_room, person_4,
133+
isModerator=True)
134+
yield membership
135+
delete_membership(api, membership)
136+
137+
138+
@pytest.fixture(scope="session")
139+
def additional_group_room_memberships(person_1_group_room_membership,
140+
person_2_group_room_membership,
141+
person_3_group_room_membership,
142+
person_4_group_room_membership):
143+
return [person_1_group_room_membership,
144+
person_2_group_room_membership,
145+
person_3_group_room_membership,
146+
person_4_group_room_membership]
147+
148+
149+
@pytest.fixture(scope="session")
150+
def group_room_with_members(group_room, additional_group_room_memberships):
151+
return group_room
152+
153+
154+
# Room Tests
155+
156+
class TestMembershipsAPI(object):
157+
"""Test MembershipsAPI methods."""
158+
159+
def test_list_user_memberships(self, group_room, team_room, direct_rooms,
160+
authenticated_users_memberships):
161+
assert len(authenticated_users_memberships) >= 3
162+
assert are_valid_memberships(authenticated_users_memberships)
163+
164+
def test_list_user_memberships_with_paging(self, api, add_rooms,
165+
authenticated_users_memberships,
166+
group_room, team_room,
167+
direct_rooms):
168+
page_size = 2
169+
pages = 3
170+
num_memberships = pages * page_size
171+
if len(authenticated_users_memberships) < num_memberships:
172+
add_rooms(num_memberships - len(authenticated_users_memberships))
173+
memberships = api.memberships.list(max=page_size)
174+
memberships_list = list(itertools.islice(memberships, num_memberships))
175+
assert len(memberships_list) == num_memberships
176+
assert are_valid_memberships(memberships_list)
177+
178+
def test_list_room_memberships(self, api, group_room_with_members):
179+
memberships = get_room_membership_list(api, group_room_with_members)
180+
assert len(memberships) > 1
181+
assert are_valid_memberships(memberships)
182+
183+
def test_filter_room_memberships_by_personEmail(self, api, person_1,
184+
group_room_with_members):
185+
memberships = get_room_membership_list(api, group_room_with_members,
186+
personEmail=person_1.emails[0])
187+
assert len(memberships) == 1
188+
membership = memberships[0]
189+
assert is_valid_membership(membership)
190+
assert membership.roomId == group_room_with_members.id
191+
192+
def test_filter_room_memberships_by_personId(self, api, person_1,
193+
group_room_with_members):
194+
memberships = get_room_membership_list(api, group_room_with_members,
195+
personId=person_1.id)
196+
assert len(memberships) == 1
197+
membership = memberships[0]
198+
assert is_valid_membership(membership)
199+
assert membership.roomId == group_room_with_members.id
200+
201+
def test_create_membership_by_email(self, person_1_group_room_membership):
202+
assert is_valid_membership(person_1_group_room_membership)
203+
204+
def test_create_membership_by_person_id(self,
205+
person_2_group_room_membership):
206+
assert is_valid_membership(person_2_group_room_membership)
207+
208+
def test_create_moderator_by_email(self, person_3_group_room_membership):
209+
assert is_valid_membership(person_3_group_room_membership)
210+
211+
def test_create_moderator_by_person_id(self,
212+
person_4_group_room_membership):
213+
assert is_valid_membership(person_4_group_room_membership)
214+
215+
def test_get_membership_details(self, api, my_group_room_membership):
216+
membership = get_membership_by_id(api, my_group_room_membership.id)
217+
assert is_valid_membership(membership)
218+
219+
def test_update_membership_make_moderator(self,
220+
make_me_group_room_moderator):
221+
assert is_valid_membership(make_me_group_room_moderator)
222+
assert make_me_group_room_moderator.isModerator
223+
224+
def test_delete_membership(self, api, group_room, temp_person):
225+
membership = add_person_to_room_by_id(api, group_room, temp_person)
226+
assert is_valid_membership(membership)
227+
delete_membership(api, membership)
228+
assert not membership_exists(api, membership)

tests/api/test_messages.py

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,58 @@
1111

1212
# Helper Functions
1313

14+
def send_direct_message_to_email(api, email, message=None):
15+
msg_text = message if message else create_string("Message")
16+
return api.messages.create(toPersonEmail=email, text=msg_text)
1417

1518

19+
def delete_message(api, message):
20+
api.messages.delete(message.id)
21+
22+
23+
def delete_messages(api, messages):
24+
for message in messages:
25+
delete_message(api, message)
26+
1627

1728
# pytest Fixtures
1829

1930
@pytest.fixture(scope="session")
20-
def direct_messages(api, email_addresses):
21-
msg_text = create_string("Message")
22-
messages = []
23-
for email in email_addresses:
24-
messages.append(api.messages.create(toPersonEmail=email,
25-
text=msg_text))
26-
yield messages
27-
delete_messages(api, messages)
31+
def direct_message_person_1(api, get_new_email_address):
32+
message = send_direct_message_to_email(api, get_new_email_address())
33+
yield message
34+
delete_message(api, message)
2835

2936

30-
def delete_messages(api, messages):
31-
for message in messages:
32-
api.messages.delete(message.id)
37+
@pytest.fixture(scope="session")
38+
def direct_message_person_2(api, get_new_email_address):
39+
message = send_direct_message_to_email(api, get_new_email_address())
40+
yield message
41+
delete_message(api, message)
42+
43+
44+
@pytest.fixture(scope="session")
45+
def direct_message_person_3(api, get_new_email_address):
46+
message = send_direct_message_to_email(api, get_new_email_address())
47+
yield message
48+
delete_message(api, message)
49+
50+
51+
@pytest.fixture(scope="session")
52+
def direct_message_person_4(api, get_new_email_address):
53+
message = send_direct_message_to_email(api, get_new_email_address())
54+
yield message
55+
delete_message(api, message)
56+
57+
58+
@pytest.fixture(scope="session")
59+
def direct_messages(direct_message_person_1, direct_message_person_2,
60+
direct_message_person_3, direct_message_person_4):
61+
return [direct_message_person_1, direct_message_person_2,
62+
direct_message_person_3, direct_message_person_4]
63+
64+
@pytest.fixture(scope="session")
65+
def send_direct_message(api):
66+
def inner_function(email_address, message=None):
67+
send_direct_message_to_email(api, email_address, message=message)
68+
return inner_function

0 commit comments

Comments
 (0)