Skip to content

Commit c3cbcd1

Browse files
author
api.htchan
committed
Add unit tests for Google Apps Groups API.
1 parent 81fedfe commit c3cbcd1

2 files changed

Lines changed: 269 additions & 0 deletions

File tree

tests/gdata_tests/apps/groups/__init__.py

Whitespace-only changes.
Lines changed: 269 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,269 @@
1+
#!/usr/bin/python
2+
#
3+
# Copyright (C) 2008 Google
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
"""Test for Groups service."""
18+
19+
20+
__author__ = 'google-apps-apis@googlegroups.com'
21+
22+
23+
import unittest
24+
try:
25+
from xml.etree import ElementTree
26+
except ImportError:
27+
from elementtree import ElementTree
28+
import atom
29+
import gdata.apps
30+
import gdata.apps.service
31+
import gdata.apps.groups.service
32+
import getpass
33+
import time
34+
35+
36+
domain = ''
37+
admin_email = ''
38+
admin_password = ''
39+
username = ''
40+
41+
42+
class GroupsTest(unittest.TestCase):
43+
"""Test for the GroupsService."""
44+
45+
def setUp(self):
46+
self.postfix = time.strftime("%Y%m%d%H%M%S")
47+
self.apps_client = gdata.apps.service.AppsService(
48+
email=admin_email, domain=domain, password=admin_password,
49+
source='GroupsClient "Unit" Tests')
50+
self.apps_client.ProgrammaticLogin()
51+
self.groups_client = gdata.apps.groups.service.GroupsService(
52+
email=admin_email, domain=domain, password=admin_password,
53+
source='GroupsClient "Unit" Tests')
54+
self.groups_client.ProgrammaticLogin()
55+
self.created_users = []
56+
self.created_groups = []
57+
self.createUsers();
58+
59+
def createUsers(self):
60+
user_name = 'yujimatsuo-' + self.postfix
61+
family_name = 'Matsuo'
62+
given_name = 'Yuji'
63+
password = '123$$abc'
64+
suspended = 'false'
65+
66+
try:
67+
self.user_yuji = self.apps_client.CreateUser(
68+
user_name=user_name, family_name=family_name, given_name=given_name,
69+
password=password, suspended=suspended)
70+
except Exception, e:
71+
self.fail('Unexpected exception occurred: %s' % e)
72+
73+
self.created_users.append(self.user_yuji)
74+
75+
user_name = 'taromatsuo-' + self.postfix
76+
family_name = 'Matsuo'
77+
given_name = 'Taro'
78+
password = '123$$abc'
79+
suspended = 'false'
80+
81+
try:
82+
self.user_taro = self.apps_client.CreateUser(
83+
user_name=user_name, family_name=family_name, given_name=given_name,
84+
password=password, suspended=suspended)
85+
except Exception, e:
86+
self.fail('Unexpected exception occurred: %s' % e)
87+
88+
self.created_users.append(self.user_taro)
89+
90+
def tearDown(self):
91+
print '\n'
92+
for user in self.created_users:
93+
try:
94+
self.apps_client.DeleteUser(user.login.user_name)
95+
print 'User ' + user.login.user_name + ' deleted'
96+
except Exception, e:
97+
print e
98+
for group in self.created_groups:
99+
try:
100+
self.groups_client.DeleteGroup(group)
101+
print 'Group ' + group + ' deleted'
102+
except Exception, e:
103+
print e
104+
105+
def test001GroupsMethods(self):
106+
# tests CreateGroup method
107+
group01_id = 'group01-' + self.postfix
108+
group02_id = 'group02-' + self.postfix
109+
try:
110+
created_group01 = self.groups_client.CreateGroup(group01_id, 'US Sales 1',
111+
'Testing', gdata.apps.groups.service.PERMISSION_OWNER)
112+
created_group02 = self.groups_client.CreateGroup(group02_id, 'US Sales 2',
113+
'Testing', gdata.apps.groups.service.PERMISSION_OWNER)
114+
except Exception, e:
115+
self.fail('Unexpected exception occurred: %s' % e)
116+
117+
self.assertEquals(created_group01['groupId'], group01_id)
118+
self.assertEquals(created_group02['groupId'], group02_id)
119+
self.created_groups.append(group01_id)
120+
self.created_groups.append(group02_id)
121+
122+
# tests UpdateGroup method
123+
try:
124+
updated_group = self.groups_client.UpdateGroup(group01_id, 'Updated!',
125+
'Testing', gdata.apps.groups.service.PERMISSION_OWNER)
126+
except Exception, e:
127+
self.fail('Unexpected exception occurred: %s' % e)
128+
129+
self.assertEquals(updated_group['groupName'], 'Updated!')
130+
131+
# tests RetrieveGroup method
132+
try:
133+
retrieved_group = self.groups_client.RetrieveGroup(group01_id)
134+
except Exception, e:
135+
self.fail('Unexpected exception occurred: %s' % e)
136+
137+
self.assertEquals(retrieved_group['groupId'], group01_id + '@' + domain)
138+
139+
# tests RetrieveAllGroups method
140+
try:
141+
retrieved_groups = self.groups_client.RetrieveAllGroups()
142+
except Exception, e:
143+
self.fail('Unexpected exception occurred: %s' % e)
144+
145+
self.assertEquals(len(retrieved_groups),
146+
len(self.apps_client.RetrieveAllEmailLists().entry))
147+
148+
# tests AddMemberToGroup
149+
try:
150+
added_member = self.groups_client.AddMemberToGroup(
151+
self.user_yuji.login.user_name, group01_id)
152+
self.groups_client.AddMemberToGroup(
153+
self.user_taro.login.user_name, group02_id)
154+
self.groups_client.AddMemberToGroup(
155+
group01_id, group02_id)
156+
except Exception, e:
157+
self.fail('Unexpected exception occurred: %s' % e)
158+
159+
self.assertEquals(added_member['memberId'],
160+
self.user_yuji.login.user_name)
161+
162+
# tests RetrieveGroups method
163+
try:
164+
retrieved_direct_groups = self.groups_client.RetrieveGroups(
165+
self.user_yuji.login.user_name, True)
166+
retrieved_groups = self.groups_client.RetrieveGroups(
167+
self.user_yuji.login.user_name, False)
168+
print self.groups_client.RetrieveAllMembers(group02_id)
169+
except Exception, e:
170+
self.fail('Unexpected exception occurred: %s' % e)
171+
172+
self.assertEquals(len(retrieved_direct_groups), 1)
173+
# TODO: Enable this test after a directOnly bug is fixed
174+
#self.assertEquals(len(retrieved_groups), 2)
175+
176+
# tests IsMember method
177+
try:
178+
result = self.groups_client.IsMember(
179+
self.user_yuji.login.user_name, group01_id)
180+
except Exception, e:
181+
self.fail('Unexpected exception occurred: %s' % e)
182+
183+
self.assertEquals(result, True)
184+
185+
# tests RetrieveMember method
186+
try:
187+
retrieved_member = self.groups_client.RetrieveMember(
188+
self.user_yuji.login.user_name, group01_id)
189+
except Exception, e:
190+
self.fail('Unexpected exception occurred: %s' % e)
191+
192+
self.assertEquals(retrieved_member['memberId'],
193+
self.user_yuji.login.user_name + '@' + domain)
194+
195+
# tests RetrieveAllMembers method
196+
try:
197+
retrieved_members = self.groups_client.RetrieveAllMembers(group01_id)
198+
except Exception, e:
199+
self.fail('Unexpected exception occurred: %s' % e)
200+
201+
self.assertEquals(len(retrieved_members), 1)
202+
203+
# tests RemoveMemberFromGroup method
204+
try:
205+
self.groups_client.RemoveMemberFromGroup(self.user_yuji.login.user_name,
206+
group01_id)
207+
retrieved_members = self.groups_client.RetrieveAllMembers(group01_id)
208+
except Exception, e:
209+
self.fail('Unexpected exception occurred: %s' % e)
210+
211+
self.assertEquals(len(retrieved_members), 0)
212+
213+
# tests AddOwnerToGroup
214+
try:
215+
added_owner = self.groups_client.AddOwnerToGroup(
216+
self.user_yuji.login.user_name, group01_id)
217+
except Exception, e:
218+
self.fail('Unexpected exception occurred: %s' % e)
219+
220+
self.assertEquals(added_owner['email'],
221+
self.user_yuji.login.user_name)
222+
223+
# tests IsOwner method
224+
try:
225+
result = self.groups_client.IsOwner(
226+
self.user_yuji.login.user_name, group01_id)
227+
except Exception, e:
228+
self.fail('Unexpected exception occurred: %s' % e)
229+
230+
self.assertEquals(result, True)
231+
232+
# tests RetrieveOwner method
233+
try:
234+
retrieved_owner = self.groups_client.RetrieveOwner(
235+
self.user_yuji.login.user_name, group01_id)
236+
except Exception, e:
237+
self.fail('Unexpected exception occurred: %s' % e)
238+
239+
self.assertEquals(retrieved_owner['email'],
240+
self.user_yuji.login.user_name + '@' + domain)
241+
242+
# tests RetrieveAllOwners method
243+
try:
244+
retrieved_owners = self.groups_client.RetrieveAllOwners(group01_id)
245+
except Exception, e:
246+
self.fail('Unexpected exception occurred: %s' % e)
247+
248+
self.assertEquals(len(retrieved_owners), 1)
249+
250+
# tests RemoveOwnerFromGroup method
251+
try:
252+
self.groups_client.RemoveOwnerFromGroup(self.user_yuji.login.user_name,
253+
group01_id)
254+
retrieved_owners = self.groups_client.RetrieveAllOwners(group01_id)
255+
except Exception, e:
256+
self.fail('Unexpected exception occurred: %s' % e)
257+
258+
self.assertEquals(len(retrieved_owners), 0)
259+
260+
261+
if __name__ == '__main__':
262+
print("""Google Apps Groups Service Tests
263+
264+
NOTE: Please run these tests only with a test user account.
265+
""")
266+
domain = raw_input('Google Apps domain: ')
267+
admin_email = '%s@%s' % (raw_input('Administrator username: '), domain)
268+
admin_password = getpass.getpass('Administrator password: ')
269+
unittest.main()

0 commit comments

Comments
 (0)