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

Side by Side Diff: appengine/config_service/acl_test.py

Issue 2932473005: config_service: implement admin group (Closed)
Patch Set: self review Created 3 years, 6 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
« no previous file with comments | « appengine/config_service/acl.py ('k') | appengine/config_service/admin.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2015 The LUCI Authors. All rights reserved. 2 # Copyright 2015 The LUCI Authors. All rights reserved.
3 # Use of this source code is governed under the Apache License, Version 2.0 3 # Use of this source code is governed under the Apache License, Version 2.0
4 # that can be found in the LICENSE file. 4 # that can be found in the LICENSE file.
5 5
6 from test_env import future 6 from test_env import future
7 import test_env 7 import test_env
8 test_env.setup_test_env() 8 test_env.setup_test_env()
9 9
10 from test_support import test_case 10 from test_support import test_case
(...skipping 15 matching lines...) Expand all
26 26
27 def has_project_access(project_id): 27 def has_project_access(project_id):
28 return acl.has_projects_access([project_id])[project_id] 28 return acl.has_projects_access([project_id])[project_id]
29 29
30 30
31 class AclTestCase(test_case.TestCase): 31 class AclTestCase(test_case.TestCase):
32 def setUp(self): 32 def setUp(self):
33 super(AclTestCase, self).setUp() 33 super(AclTestCase, self).setUp()
34 self.mock(auth, 'get_current_identity', mock.Mock()) 34 self.mock(auth, 'get_current_identity', mock.Mock())
35 auth.get_current_identity.return_value = auth.Anonymous 35 auth.get_current_identity.return_value = auth.Anonymous
36 self.mock(auth, 'is_admin', lambda *_: False)
37 self.mock(auth, 'is_group_member', mock.Mock(return_value=False)) 36 self.mock(auth, 'is_group_member', mock.Mock(return_value=False))
38 self.mock( 37 self.mock(
39 services, 'get_services_async', mock.Mock(return_value=future([]))) 38 services, 'get_services_async', mock.Mock(return_value=future([])))
40 39
41 acl_cfg = service_config_pb2.AclCfg( 40 acl_cfg = service_config_pb2.AclCfg(
42 project_access_group='project-admins', 41 project_access_group='project-admins',
43 ) 42 )
44 self.mock(projects, '_filter_existing', lambda pids: pids) 43 self.mock(projects, '_filter_existing', lambda pids: pids)
45 self.mock(storage, 'get_self_config_async', lambda *_: future(acl_cfg)) 44 self.mock(storage, 'get_self_config_async', lambda *_: future(acl_cfg))
46 45
47 def test_admin_can_read_all(self): 46 def test_admin_can_read_all(self):
48 self.mock(auth, 'is_admin', mock.Mock(return_value=True)) 47 self.mock(acl, 'is_admin', mock.Mock(return_value=True))
49 self.assertTrue(can_read_config_set('services/swarming')) 48 self.assertTrue(can_read_config_set('services/swarming'))
50 self.assertTrue(can_read_config_set('projects/chromium')) 49 self.assertTrue(can_read_config_set('projects/chromium'))
51 self.assertTrue(has_project_access('chromium')) 50 self.assertTrue(has_project_access('chromium'))
52 51
53 def test_has_service_access(self): 52 def test_has_service_access(self):
54 self.assertFalse(can_read_config_set('services/swarming')) 53 self.assertFalse(can_read_config_set('services/swarming'))
55 54
56 services.get_services_async.return_value = future([ 55 services.get_services_async.return_value = future([
57 service_config_pb2.Service( 56 service_config_pb2.Service(
58 id='swarming', access=['group:swarming-app']), 57 id='swarming', access=['group:swarming-app']),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 self.assertFalse(has_project_access('projects/swarming')) 94 self.assertFalse(has_project_access('projects/swarming'))
96 self.assertFalse(can_read_config_set('projects/swarming/refs/heads/x')) 95 self.assertFalse(can_read_config_set('projects/swarming/refs/heads/x'))
97 96
98 def test_malformed_config_set(self): 97 def test_malformed_config_set(self):
99 with self.assertRaises(ValueError): 98 with self.assertRaises(ValueError):
100 can_read_config_set('invalid config set') 99 can_read_config_set('invalid config set')
101 100
102 101
103 if __name__ == '__main__': 102 if __name__ == '__main__':
104 test_env.main() 103 test_env.main()
OLDNEW
« no previous file with comments | « appengine/config_service/acl.py ('k') | appengine/config_service/admin.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698