Skip to content

Commit ff1d8d5

Browse files
committed
Add TestPeople class to Manage Test Accounts
Add a TestPeople class to create, manage and delete (when tests are complete) test (person) accounts.
1 parent 5d11a23 commit ff1d8d5

File tree

4 files changed

+132
-145
lines changed

4 files changed

+132
-145
lines changed

tests/api/test_memberships.py

Lines changed: 73 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -79,71 +79,71 @@ def membership_exists(api, membership):
7979

8080
# pytest Fixtures
8181

82-
@pytest.fixture(scope="session")
83-
def authenticated_users_memberships(api):
84-
return list(api.memberships.list())
85-
86-
87-
@pytest.fixture(scope="session")
82+
@pytest.fixture()
8883
def my_group_room_membership(api, me, group_room):
8984
memberships = get_room_membership_list(api, group_room, personId=me.id)
9085
assert len(memberships) == 1
9186
membership = memberships[0]
9287
return membership
9388

9489

90+
@pytest.fixture(scope="session")
91+
def authenticated_user_memberships(api):
92+
return list(api.memberships.list())
93+
94+
9595
@pytest.fixture(scope="session")
9696
def make_me_group_room_moderator(api, my_group_room_membership):
9797
return make_moderator(api, my_group_room_membership)
9898

9999

100100
@pytest.fixture(scope="session")
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)
101+
def group_room_member_added_by_email(api, make_me_group_room_moderator,
102+
group_room, test_people):
103+
person = test_people["group_room_member_added_by_email"]
104+
membership = add_person_to_room_by_email(api, group_room, person)
105105
yield membership
106106
delete_membership(api, membership)
107107

108108

109109
@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)
110+
def group_room_member_added_by_id(api, make_me_group_room_moderator,
111+
group_room, test_people):
112+
person = test_people["group_room_member_added_by_id"]
113+
membership = add_person_to_room_by_id(api, group_room, person)
114114
yield membership
115115
delete_membership(api, membership)
116116

117117

118118
@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,
119+
def group_room_moderator_added_by_email(api, make_me_group_room_moderator,
120+
group_room, test_people):
121+
person = test_people["group_room_moderator_added_by_email"]
122+
membership = add_person_to_room_by_email(api, group_room, person,
123123
isModerator=True)
124124
yield membership
125125
delete_membership(api, membership)
126126

127127

128128
@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,
129+
def group_room_moderator_added_by_id(api, make_me_group_room_moderator,
130+
group_room, test_people):
131+
person = test_people["group_room_moderator_added_by_id"]
132+
membership = add_person_to_room_by_id(api, group_room, person,
133133
isModerator=True)
134134
yield membership
135135
delete_membership(api, membership)
136136

137137

138138
@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]
139+
def additional_group_room_memberships(group_room_member_added_by_email,
140+
group_room_member_added_by_id,
141+
group_room_moderator_added_by_email,
142+
group_room_moderator_added_by_id):
143+
return [group_room_member_added_by_email,
144+
group_room_member_added_by_id,
145+
group_room_moderator_added_by_email,
146+
group_room_moderator_added_by_id]
147147

148148

149149
@pytest.fixture(scope="session")
@@ -156,73 +156,77 @@ def group_room_with_members(group_room, additional_group_room_memberships):
156156
class TestMembershipsAPI(object):
157157
"""Test MembershipsAPI methods."""
158158

159+
def test_get_membership_details(self, api, my_group_room_membership):
160+
membership = get_membership_by_id(api, my_group_room_membership.id)
161+
assert is_valid_membership(membership)
162+
159163
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)
164+
authenticated_user_memberships):
165+
assert len(authenticated_user_memberships) >= 3
166+
assert are_valid_memberships(authenticated_user_memberships)
163167

164168
def test_list_user_memberships_with_paging(self, api, add_rooms,
165-
authenticated_users_memberships,
169+
authenticated_user_memberships,
166170
group_room, team_room,
167171
direct_rooms):
168172
page_size = 2
169173
pages = 3
170174
num_memberships = pages * page_size
171-
if len(authenticated_users_memberships) < num_memberships:
172-
add_rooms(num_memberships - len(authenticated_users_memberships))
175+
if len(authenticated_user_memberships) < num_memberships:
176+
add_rooms(num_memberships - len(authenticated_user_memberships))
173177
memberships = api.memberships.list(max=page_size)
174178
memberships_list = list(itertools.islice(memberships, num_memberships))
175179
assert len(memberships_list) == num_memberships
176180
assert are_valid_memberships(memberships_list)
177181

182+
def test_create_membership_by_email(self,
183+
group_room_member_added_by_email):
184+
assert is_valid_membership(group_room_member_added_by_email)
185+
186+
def test_create_membership_by_person_id(self,
187+
group_room_member_added_by_id):
188+
assert is_valid_membership(group_room_member_added_by_id)
189+
190+
def test_create_moderator_by_email(self,
191+
group_room_moderator_added_by_email):
192+
assert is_valid_membership(group_room_moderator_added_by_email)
193+
194+
def test_create_moderator_by_person_id(self,
195+
group_room_moderator_added_by_id):
196+
assert is_valid_membership(group_room_moderator_added_by_id)
197+
198+
def test_update_membership_make_moderator(self,
199+
make_me_group_room_moderator):
200+
assert is_valid_membership(make_me_group_room_moderator)
201+
assert make_me_group_room_moderator.isModerator
202+
203+
def test_delete_membership(self, api, group_room, temp_person):
204+
membership = add_person_to_room_by_id(api, group_room, temp_person)
205+
assert is_valid_membership(membership)
206+
delete_membership(api, membership)
207+
assert not membership_exists(api, membership)
208+
178209
def test_list_room_memberships(self, api, group_room_with_members):
179210
memberships = get_room_membership_list(api, group_room_with_members)
180211
assert len(memberships) > 1
181212
assert are_valid_memberships(memberships)
182213

183-
def test_filter_room_memberships_by_personEmail(self, api, person_1,
214+
def test_filter_room_memberships_by_personEmail(self, api, test_people,
184215
group_room_with_members):
216+
email = test_people["group_room_member_added_by_email"].emails[0]
185217
memberships = get_room_membership_list(api, group_room_with_members,
186-
personEmail=person_1.emails[0])
218+
personEmail=email)
187219
assert len(memberships) == 1
188220
membership = memberships[0]
189221
assert is_valid_membership(membership)
190222
assert membership.roomId == group_room_with_members.id
191223

192-
def test_filter_room_memberships_by_personId(self, api, person_1,
224+
def test_filter_room_memberships_by_personId(self, api, test_people,
193225
group_room_with_members):
226+
id = test_people["group_room_member_added_by_id"].id
194227
memberships = get_room_membership_list(api, group_room_with_members,
195-
personId=person_1.id)
228+
personId=id)
196229
assert len(memberships) == 1
197230
membership = memberships[0]
198231
assert is_valid_membership(membership)
199232
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: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -28,41 +28,24 @@ def delete_messages(api, messages):
2828
# pytest Fixtures
2929

3030
@pytest.fixture(scope="session")
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)
31+
def direct_messages(api, additional_group_room_memberships, test_people):
32+
# Using additional_group_room_memberships to ensure some test_people
33+
# have been created
34+
direct_messages = []
35+
for person in test_people:
36+
message = send_direct_message_to_email(api, person.emails[0])
37+
direct_messages.append(message)
3538

39+
yield direct_messages
3640

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-
41+
for message in direct_messages:
42+
delete_message(api, message)
5743

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]
6344

6445
@pytest.fixture(scope="session")
6546
def send_direct_message(api):
47+
6648
def inner_function(email_address, message=None):
6749
send_direct_message_to_email(api, email_address, message=message)
50+
6851
return inner_function

tests/api/test_people.py

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,18 @@ def create_person(api, emails, **person_attributes):
3737
return api.people.create(emails, **person_attributes)
3838

3939

40+
def delete_person(api, person):
41+
api.people.delete(person.id)
42+
43+
4044
def get_new_test_person(api, get_new_email_address, licenses_dict):
4145
person_email = get_new_email_address()
4246
person = get_person_by_email(api, person_email)
4347
if person:
4448
return person
4549
else:
4650
emails = [person_email]
47-
display_name = person_email
51+
display_name = "ciscosparkapi"
4852
first_name = "ciscosparkapi"
4953
last_name = "ciscosparkapi"
5054
licenses = [licenses_dict["Messaging"].id]
@@ -57,38 +61,62 @@ def get_new_test_person(api, get_new_email_address, licenses_dict):
5761
return person
5862

5963

60-
# pytest Fixtures
64+
# Helper Classes
6165

62-
@pytest.fixture(scope="session")
63-
def me(api):
64-
return api.people.me()
66+
class TestPeople(object):
67+
"""Creates, tracks and manages test accounts 'people' used by the tests."""
6568

66-
@pytest.fixture(scope="session")
67-
def person_1(api, get_new_email_address, licenses_dict):
68-
return get_new_test_person(api, get_new_email_address, licenses_dict)
69+
def __init__(self, api, get_new_email_address, licenses_dict):
70+
super(object, TestPeople).__init__()
71+
self._api = api
72+
self._get_new_email_address = get_new_email_address
73+
self._licenses_dict = licenses_dict
74+
self.test_people = {}
6975

76+
def __getitem__(self, item):
77+
if self.test_people.get(item):
78+
return self.test_people[item]
79+
else:
80+
new_test_person = get_new_test_person(self._api,
81+
self._get_new_email_address,
82+
self._licenses_dict)
83+
self.test_people[item] = new_test_person
84+
return new_test_person
7085

71-
@pytest.fixture(scope="session")
72-
def person_2(api, get_new_email_address, licenses_dict):
73-
return get_new_test_person(api, get_new_email_address, licenses_dict)
86+
def list(self):
87+
return self.test_people.values()
7488

89+
def __iter__(self):
90+
return iter(self.list())
91+
92+
def __del__(self):
93+
for person in self.test_people.values():
94+
delete_person(self._api, person)
95+
super(object, TestPeople).__del__()
96+
97+
98+
# pytest Fixtures
7599

76100
@pytest.fixture(scope="session")
77-
def person_3(api, get_new_email_address, licenses_dict):
78-
return get_new_test_person(api, get_new_email_address, licenses_dict)
101+
def me(api):
102+
return api.people.me()
79103

80104

81105
@pytest.fixture(scope="session")
82-
def person_4(api, get_new_email_address, licenses_dict):
83-
return get_new_test_person(api, get_new_email_address, licenses_dict)
106+
def test_people(api, get_new_email_address, licenses_dict):
107+
test_people = TestPeople()
108+
yield test_people
109+
del(test_people)
84110

85111

86112
@pytest.fixture()
87113
def temp_person(api, get_new_email_address, licenses_dict):
88-
return get_new_test_person(api, get_new_email_address, licenses_dict)
114+
person = get_new_test_person(api, get_new_email_address, licenses_dict)
115+
yield person
116+
delete_person(api, person)
89117

90118

91-
@pytest.fixture(scope="session")
119+
@pytest.fixture()
92120
def people_in_group_room(api, group_room_memberships):
93121
return [get_person_by_id(api, membership.personId)
94122
for membership in group_room_memberships]

0 commit comments

Comments
 (0)