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

Side by Side Diff: appengine/swarming/handlers_endpoints_test.py

Issue 2984843002: swarming: switch to a 'capability focused' ACL system (Closed)
Patch Set: Tuned permissions, added tests Created 3 years, 5 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/swarming/handlers_endpoints.py ('k') | appengine/swarming/handlers_frontend.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 # coding=utf-8 2 # coding=utf-8
3 # Copyright 2015 The LUCI Authors. All rights reserved. 3 # Copyright 2015 The LUCI Authors. All rights reserved.
4 # Use of this source code is governed under the Apache License, Version 2.0 4 # Use of this source code is governed under the Apache License, Version 2.0
5 # that can be found in the LICENSE file. 5 # that can be found in the LICENSE file.
6 6
7 import base64 7 import base64
8 import datetime 8 import datetime
9 import json 9 import json
10 import logging 10 import logging
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 120
121 def test_user_permissions(self): 121 def test_user_permissions(self):
122 """Asserts that permissions respond correctly to a basic user.""" 122 """Asserts that permissions respond correctly to a basic user."""
123 self.set_as_user() 123 self.set_as_user()
124 response = self.call_api('permissions') 124 response = self.call_api('permissions')
125 expected = { 125 expected = {
126 u'cancel_task': True, 126 u'cancel_task': True,
127 u'cancel_tasks': False, 127 u'cancel_tasks': False,
128 u'delete_bot': False, 128 u'delete_bot': False,
129 u'get_bootstrap_token': False, 129 u'get_bootstrap_token': False,
130 u'get_configs': True, 130 u'get_configs': False,
131 u'put_configs': False, 131 u'put_configs': False,
132 u'terminate_bot': False, 132 u'terminate_bot': False,
133 } 133 }
134 self.assertEqual(expected, response.json) 134 self.assertEqual(expected, response.json)
135 135
136 def test_privileged_user_permissions(self): 136 def test_privileged_user_permissions(self):
137 """Asserts that permissions respond correctly to a privileged user.""" 137 """Asserts that permissions respond correctly to a privileged user."""
138 self.set_as_privileged_user() 138 self.set_as_privileged_user()
139 response = self.call_api('permissions') 139 response = self.call_api('permissions')
140 expected = { 140 expected = {
141 u'cancel_task': True, 141 u'cancel_task': True,
142 u'cancel_tasks': False, 142 u'cancel_tasks': False,
143 u'delete_bot': False, 143 u'delete_bot': False,
144 u'get_bootstrap_token': False, 144 u'get_bootstrap_token': False,
145 u'get_configs': True, 145 u'get_configs': False,
146 u'put_configs': False, 146 u'put_configs': False,
147 u'terminate_bot': True, 147 u'terminate_bot': True,
148 } 148 }
149 self.assertEqual(expected, response.json) 149 self.assertEqual(expected, response.json)
150 150
151 def test_admin_permissions(self): 151 def test_admin_permissions(self):
152 """Asserts that permissions respond correctly to an admin.""" 152 """Asserts that permissions respond correctly to an admin."""
153 self.set_as_admin() 153 self.set_as_admin()
154 response = self.call_api('permissions') 154 response = self.call_api('permissions')
155 expected = { 155 expected = {
(...skipping 1189 matching lines...) Expand 10 before | Expand all | Expand 10 after
1345 u'service_account:none', 1345 u'service_account:none',
1346 u'user:joe@localhost', 1346 u'user:joe@localhost',
1347 ], 1347 ],
1348 u'task_id': task_id, 1348 u'task_id': task_id,
1349 u'try_number': u'1', 1349 u'try_number': u'1',
1350 u'user': u'joe@localhost', 1350 u'user': u'joe@localhost',
1351 } 1351 }
1352 out.update((unicode(k), v) for k, v in kwargs.iteritems()) 1352 out.update((unicode(k), v) for k, v in kwargs.iteritems())
1353 return out 1353 return out
1354 1354
1355 def _cycle(params, expected, must_stop): 1355 self.set_as_bot()
1356 response = self.post_json('/swarming/api/v1/bot/task_update', params)
1357 self.assertEqual({u'must_stop': must_stop, u'ok': True}, response)
1358 self.assertEqual(expected, self.client_get_results(task_id))
1359
1360 params = _params(output=base64.b64encode('Oh ')) 1356 params = _params(output=base64.b64encode('Oh '))
1361 expected = _expected() 1357 response = self.post_json('/swarming/api/v1/bot/task_update', params)
1362 _cycle(params, expected, False) 1358 self.assertEqual({u'must_stop': False, u'ok': True}, response)
1359 self.set_as_user()
1360 self.assertEqual(_expected(), self.client_get_results(task_id))
1363 1361
1364 # Canceling a running task is currently not supported. 1362 # Canceling a running task is currently not supported.
1365 self.set_as_user()
1366 expected = {u'ok': False, u'was_running': True}
1367 response = self.call_api('cancel', body={'task_id': task_id}) 1363 response = self.call_api('cancel', body={'task_id': task_id})
1368 self.assertEqual(expected, response.json) 1364 self.assertEqual({u'ok': False, u'was_running': True}, response.json)
1369 1365
1370 self.set_as_bot() 1366 self.set_as_bot()
1371 params = _params(output=base64.b64encode('hi'), output_chunk_start=3) 1367 params = _params(output=base64.b64encode('hi'), output_chunk_start=3)
1372 expected = _expected() 1368 response = self.post_json('/swarming/api/v1/bot/task_update', params)
1373 _cycle(params, expected, False) 1369 self.assertEqual({u'must_stop': False, u'ok': True}, response)
1370 self.set_as_user()
1371 self.assertEqual(_expected(), self.client_get_results(task_id))
1374 1372
1375 def test_result_unknown(self): 1373 def test_result_unknown(self):
1376 """Asserts that result raises 404 for unknown task IDs.""" 1374 """Asserts that result raises 404 for unknown task IDs."""
1377 self.call_api('result', body={'task_id': '12310'}, status=404) 1375 self.call_api('result', body={'task_id': '12310'}, status=404)
1378 1376
1379 def test_result_ok(self): 1377 def test_result_ok(self):
1380 """Asserts that result produces a result entity.""" 1378 """Asserts that result produces a result entity."""
1381 self.mock(random, 'getrandbits', lambda _: 0x88) 1379 self.mock(random, 'getrandbits', lambda _: 0x88)
1382 1380
1383 # pending task 1381 # pending task
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
1938 self.assertEqual(expected, response.json) 1936 self.assertEqual(expected, response.json)
1939 1937
1940 def test_get_no_bot(self): 1938 def test_get_no_bot(self):
1941 """Asserts that get raises 404 when no bot is found.""" 1939 """Asserts that get raises 404 when no bot is found."""
1942 self.set_as_admin() 1940 self.set_as_admin()
1943 self.call_api('get', body={'bot_id': 'not_a_bot'}, status=404) 1941 self.call_api('get', body={'bot_id': 'not_a_bot'}, status=404)
1944 1942
1945 def test_delete_ok(self): 1943 def test_delete_ok(self):
1946 """Assert that delete finds and deletes a bot.""" 1944 """Assert that delete finds and deletes a bot."""
1947 self.set_as_admin() 1945 self.set_as_admin()
1948 self.mock(acl, 'is_admin', lambda *_args, **_kwargs: True) 1946 self.mock(acl, '_is_admin', lambda *_args, **_kwargs: True)
1949 now = datetime.datetime(2010, 1, 2, 3, 4, 5, 6) 1947 now = datetime.datetime(2010, 1, 2, 3, 4, 5, 6)
1950 self.mock_now(now) 1948 self.mock_now(now)
1951 state = { 1949 state = {
1952 'dict': {'random': 'values'}, 1950 'dict': {'random': 'values'},
1953 'float': 0., 1951 'float': 0.,
1954 'list': ['of', 'things'], 1952 'list': ['of', 'things'],
1955 'str': u'uni', 1953 'str': u'uni',
1956 } 1954 }
1957 bot_management.bot_event( 1955 bot_management.bot_event(
1958 event_type='bot_connected', bot_id='id1', 1956 event_type='bot_connected', bot_id='id1',
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
2189 self.call_api('terminate', body={'bot_id': 'bot1'}, status=403) 2187 self.call_api('terminate', body={'bot_id': 'bot1'}, status=403)
2190 2188
2191 2189
2192 if __name__ == '__main__': 2190 if __name__ == '__main__':
2193 if '-v' in sys.argv: 2191 if '-v' in sys.argv:
2194 unittest.TestCase.maxDiff = None 2192 unittest.TestCase.maxDiff = None
2195 logging.basicConfig(level=logging.DEBUG) 2193 logging.basicConfig(level=logging.DEBUG)
2196 else: 2194 else:
2197 logging.basicConfig(level=logging.CRITICAL) 2195 logging.basicConfig(level=logging.CRITICAL)
2198 unittest.main() 2196 unittest.main()
OLDNEW
« no previous file with comments | « appengine/swarming/handlers_endpoints.py ('k') | appengine/swarming/handlers_frontend.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698