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

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

Issue 2931673003: config_service: fetch repos and metadata concurrently (Closed)
Patch Set: use ctx.memcache_[gs]et 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/api.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 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 id='swarming', access=['group:swarming-app']), 57 id='swarming', access=['group:swarming-app']),
58 ]) 58 ])
59 auth.is_group_member.side_effect = lambda g, *_: g == 'swarming-app' 59 auth.is_group_member.side_effect = lambda g, *_: g == 'swarming-app'
60 60
61 self.assertTrue(can_read_config_set('services/swarming')) 61 self.assertTrue(can_read_config_set('services/swarming'))
62 62
63 def test_has_service_access_no_access(self): 63 def test_has_service_access_no_access(self):
64 self.assertFalse(can_read_config_set('services/swarming')) 64 self.assertFalse(can_read_config_set('services/swarming'))
65 65
66 def test_has_project_access_group(self): 66 def test_has_project_access_group(self):
67 self.mock(projects, 'get_metadata', mock.Mock()) 67 self.mock(projects, 'get_metadata_async', mock.Mock(return_value=future({
68 projects.get_metadata.return_value = {
69 'secret': project_config_pb2.ProjectCfg( 68 'secret': project_config_pb2.ProjectCfg(
70 access=['group:googlers', 'a@a.com']), 69 access=['group:googlers', 'a@a.com']),
71 } 70 })))
72 71
73 self.assertFalse(can_read_config_set('projects/secret')) 72 self.assertFalse(can_read_config_set('projects/secret'))
74 73
75 auth.is_group_member.side_effect = lambda name, *_: name == 'googlers' 74 auth.is_group_member.side_effect = lambda name, *_: name == 'googlers'
76 self.assertTrue(can_read_config_set('projects/secret')) 75 self.assertTrue(can_read_config_set('projects/secret'))
77 76
78 auth.is_group_member.side_effect = lambda name, *_: name == 'project-admins' 77 auth.is_group_member.side_effect = lambda name, *_: name == 'project-admins'
79 self.assertTrue(can_read_config_set('projects/secret')) 78 self.assertTrue(can_read_config_set('projects/secret'))
80 79
81 def test_has_project_access_identity(self): 80 def test_has_project_access_identity(self):
82 self.mock(projects, 'get_metadata', mock.Mock()) 81 self.mock(projects, 'get_metadata_async', mock.Mock(return_value=future({
83 projects.get_metadata.return_value = {
84 'secret': project_config_pb2.ProjectCfg( 82 'secret': project_config_pb2.ProjectCfg(
85 access=['group:googlers', 'a@a.com']), 83 access=['group:googlers', 'a@a.com']),
86 } 84 })))
87 85
88 self.assertFalse(can_read_config_set('projects/secret')) 86 self.assertFalse(can_read_config_set('projects/secret'))
89 87
90 auth.get_current_identity.return_value = auth.Identity('user', 'a@a.com') 88 auth.get_current_identity.return_value = auth.Identity('user', 'a@a.com')
91 self.assertTrue(can_read_config_set('projects/secret')) 89 self.assertTrue(can_read_config_set('projects/secret'))
92 90
93 def test_can_read_project_config_no_access(self): 91 def test_can_read_project_config_no_access(self):
94 self.assertFalse(has_project_access('projects/swarming')) 92 self.assertFalse(has_project_access('projects/swarming'))
95 self.assertFalse(can_read_config_set('projects/swarming/refs/heads/x')) 93 self.assertFalse(can_read_config_set('projects/swarming/refs/heads/x'))
96 94
97 def test_malformed_config_set(self): 95 def test_malformed_config_set(self):
98 with self.assertRaises(ValueError): 96 with self.assertRaises(ValueError):
99 can_read_config_set('invalid config set') 97 can_read_config_set('invalid config set')
100 98
101 99
102 if __name__ == '__main__': 100 if __name__ == '__main__':
103 test_env.main() 101 test_env.main()
OLDNEW
« no previous file with comments | « appengine/config_service/acl.py ('k') | appengine/config_service/api.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698