Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: appengine/monorail/sitewide/test/groupdetail_test.py

Issue 1868553004: Open Source Monorail (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2016 The Chromium Authors. All rights reserved.
2 # Use of this source code is govered by a BSD-style
3 # license that can be found in the LICENSE file or at
4 # https://developers.google.com/open-source/licenses/bsd
5
6 """Unit test for User Group Detail servlet."""
7
8 import unittest
9
10 from framework import permissions
11 from services import service_manager
12 from sitewide import groupdetail
13 from testing import fake
14 from testing import testing_helpers
15
16
17 class GroupDetailTest(unittest.TestCase):
18 """Tests for the GroupDetail servlet."""
19
20 def setUp(self):
21 self.services = service_manager.Services(
22 project=fake.ProjectService(),
23 user=fake.UserService(),
24 usergroup=fake.UserGroupService())
25 self.services.user.TestAddUser('a@example.com', 111L)
26 self.services.user.TestAddUser('b@example.com', 222L)
27 self.services.user.TestAddUser('c@example.com', 333L)
28 self.services.user.TestAddUser('group@example.com', 888L)
29 self.services.usergroup.TestAddGroupSettings(888L, 'group@example.com')
30 self.servlet = groupdetail.GroupDetail(
31 'req', 'res', services=self.services)
32 self.mr = testing_helpers.MakeMonorailRequest()
33 self.mr.viewed_username = 'group@example.com'
34 self.mr.viewed_user_auth.user_id = 888L
35
36 def testAssertBasePermission(self):
37 mr = testing_helpers.MakeMonorailRequest(
38 perms=permissions.GetPermissions(None, {}, None))
39 mr.viewed_user_auth.user_id = 888L
40 mr.auth.effective_ids = set([111L])
41 self.assertRaises(
42 permissions.PermissionException,
43 self.servlet.AssertBasePermission, mr)
44 self.services.usergroup.TestAddMembers(888L, [111L], 'member')
45 self.servlet.AssertBasePermission(mr)
46
47 def testAssertBasePermission_IndirectMembership(self):
48 self.services.usergroup.TestAddGroupSettings(999L, 'subgroup@example.com')
49 mr = testing_helpers.MakeMonorailRequest(
50 perms=permissions.GetPermissions(None, {}, None))
51 mr.viewed_user_auth.user_id = 888L
52 mr.auth.effective_ids = set([111L])
53 self.assertRaises(
54 permissions.PermissionException,
55 self.servlet.AssertBasePermission, mr)
56 self.services.usergroup.TestAddMembers(888L, [999L], 'member')
57 self.services.usergroup.TestAddMembers(999L, [111L], 'member')
58 self.servlet.AssertBasePermission(mr)
59
60 def testGatherPagData_ZeroMembers(self):
61 page_data = self.servlet.GatherPageData(self.mr)
62 pagination = page_data['pagination']
63 self.assertEqual(0, len(pagination.visible_results))
64
65 def testGatherPagData_NonzeroMembers(self):
66 self.services.usergroup.TestAddMembers(888L, [111L, 222L, 333L])
67 page_data = self.servlet.GatherPageData(self.mr)
68 pagination = page_data['pagination']
69 self.assertEqual(3, len(pagination.visible_results))
70 self.assertEqual(3, pagination.total_count)
71 self.assertEqual(1, pagination.start)
72 self.assertEqual(3, pagination.last)
73 user_view_a, user_view_b, user_view_c = pagination.visible_results
74 self.assertEqual('a@example.com', user_view_a.email)
75 self.assertEqual('b@example.com', user_view_b.email)
76 self.assertEqual('c@example.com', user_view_c.email)
77
78 def testProcessAddMembers_NoneAdded(self):
79 post_data = fake.PostData(addmembers=[''], role=['member'])
80 url = self.servlet.ProcessAddMembers(self.mr, post_data)
81 self.assertIn('/g/group@example.com/?', url)
82 members_after, _ = self.services.usergroup.LookupMembers('cnxn', [888L])
83 self.assertEqual(0, len(members_after[888L]))
84
85 self.services.usergroup.TestAddMembers(888L, [111L, 222L, 333L])
86 url = self.servlet.ProcessAddMembers(self.mr, post_data)
87 self.assertIn('/g/group@example.com/?', url)
88 members_after, _ = self.services.usergroup.LookupMembers('cnxn', [888L])
89 self.assertEqual(3, len(members_after[888L]))
90
91 def testProcessAddMembers_SomeAdded(self):
92 self.services.usergroup.TestAddMembers(888L, [111L])
93 post_data = fake.PostData(
94 addmembers=['b@example.com, c@example.com'], role=['member'])
95 url = self.servlet.ProcessAddMembers(self.mr, post_data)
96 self.assertIn('/g/group@example.com/?', url)
97 members_after, _ = self.services.usergroup.LookupMembers('cnxn', [888L])
98 self.assertEqual(3, len(members_after[888L]))
99
100 def testProcessRemoveMembers_SomeRemoved(self):
101 self.services.usergroup.TestAddMembers(888L, [111L, 222L, 333L])
102 post_data = fake.PostData(remove=['b@example.com', 'c@example.com'])
103 url = self.servlet.ProcessRemoveMembers(self.mr, post_data)
104 self.assertIn('/g/group@example.com/?', url)
105 members_after, _ = self.services.usergroup.LookupMembers('cnxn', [888L])
106 self.assertEqual(1, len(members_after[888L]))
107
108 def testProcessFormData_NoPermission(self):
109 """Group members cannot edit group."""
110 self.services.usergroup.TestAddMembers(888L, [111L], 'member')
111 mr = testing_helpers.MakeMonorailRequest(
112 perms=permissions.GetPermissions(None, {}, None))
113 mr.viewed_user_auth.user_id = 888L
114 mr.auth.effective_ids = set([111L])
115 self.assertRaises(permissions.PermissionException,
116 self.servlet.ProcessFormData, mr, {})
117
118 def testProcessFormData_OwnerPermission(self):
119 """Group owners cannot edit group."""
120 self.services.usergroup.TestAddMembers(888L, [111L], 'owner')
121 mr = testing_helpers.MakeMonorailRequest(
122 perms=permissions.GetPermissions(None, {}, None))
123 mr.viewed_user_auth.user_id = 888L
124 mr.auth.effective_ids = set([111L])
125 self.servlet.ProcessFormData(mr, {})
126
127 if __name__ == '__main__':
128 unittest.main()
OLDNEW
« no previous file with comments | « appengine/monorail/sitewide/test/groupcreate_test.py ('k') | appengine/monorail/sitewide/test/grouplist_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698