| OLD | NEW |
| 1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import contextlib | 5 import contextlib |
| 6 import datetime | 6 import datetime |
| 7 | 7 |
| 8 from components import auth | 8 from components import auth |
| 9 from components import utils | 9 from components import utils |
| 10 from google.appengine.ext import ndb | 10 from google.appengine.ext import ndb |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 | 102 |
| 103 def test_add_with_auth_error(self): | 103 def test_add_with_auth_error(self): |
| 104 self.mock_cannot(acl.Action.ADD_BUILD) | 104 self.mock_cannot(acl.Action.ADD_BUILD) |
| 105 with self.assertRaises(auth.AuthorizationError): | 105 with self.assertRaises(auth.AuthorizationError): |
| 106 service.add(self.test_build.bucket) | 106 service.add(self.test_build.bucket) |
| 107 | 107 |
| 108 def test_add_with_bad_parameters(self): | 108 def test_add_with_bad_parameters(self): |
| 109 with self.assertRaises(errors.InvalidInputError): | 109 with self.assertRaises(errors.InvalidInputError): |
| 110 service.add('bucket', parameters=[]) | 110 service.add('bucket', parameters=[]) |
| 111 | 111 |
| 112 ################################### RETRY #################################### |
| 113 |
| 114 def test_retry(self): |
| 115 self.test_build.put() |
| 116 build = service.retry(self.test_build.key.id()) |
| 117 self.assertIsNotNone(build) |
| 118 self.assertIsNotNone(build.key) |
| 119 self.assertNotEqual(build.key.id(), self.test_build.key.id()) |
| 120 self.assertEqual(build.bucket, self.test_build.bucket) |
| 121 self.assertEqual(build.parameters, self.test_build.parameters) |
| 122 self.assertEqual(build.retry_of, self.test_build.key.id()) |
| 123 |
| 124 def test_retry_not_found(self): |
| 125 with self.assertRaises(errors.BuildNotFoundError): |
| 126 service.retry(2) |
| 127 |
| 112 #################################### GET ##################################### | 128 #################################### GET ##################################### |
| 113 | 129 |
| 114 def test_get(self): | 130 def test_get(self): |
| 115 self.test_build.put() | 131 self.test_build.put() |
| 116 build = service.get(self.test_build.key.id()) | 132 build = service.get(self.test_build.key.id()) |
| 117 self.assertEqual(build, self.test_build) | 133 self.assertEqual(build, self.test_build) |
| 118 | 134 |
| 119 def test_get_nonexistent_build(self): | 135 def test_get_nonexistent_build(self): |
| 120 self.assertIsNone(service.get(42)) | 136 self.assertIsNone(service.get(42)) |
| 121 | 137 |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 266 build2 = model.Build( | 282 build2 = model.Build( |
| 267 bucket=self.test_build.bucket, | 283 bucket=self.test_build.bucket, |
| 268 created_by=auth.Identity.from_bytes('user:x@chromium.org') | 284 created_by=auth.Identity.from_bytes('user:x@chromium.org') |
| 269 ) | 285 ) |
| 270 build2.put() | 286 build2.put() |
| 271 | 287 |
| 272 builds, _ = service.search( | 288 builds, _ = service.search( |
| 273 created_by='x@chromium.org', buckets=[self.test_build.bucket]) | 289 created_by='x@chromium.org', buckets=[self.test_build.bucket]) |
| 274 self.assertEqual(builds, [build2]) | 290 self.assertEqual(builds, [build2]) |
| 275 | 291 |
| 292 def test_search_by_retry_of(self): |
| 293 self.test_build.put() |
| 294 build2 = model.Build( |
| 295 bucket=self.test_build.bucket, |
| 296 retry_of=42, |
| 297 ) |
| 298 build2.put() |
| 299 |
| 300 builds, _ = service.search(retry_of=42) |
| 301 self.assertEqual(builds, [build2]) |
| 302 |
| 276 def test_search_by_created_by_with_bad_string(self): | 303 def test_search_by_created_by_with_bad_string(self): |
| 277 with self.assertRaises(errors.InvalidInputError): | 304 with self.assertRaises(errors.InvalidInputError): |
| 278 service.search(created_by='blah') | 305 service.search(created_by='blah') |
| 279 | 306 |
| 280 def test_search_with_paging(self): | 307 def test_search_with_paging(self): |
| 281 self.put_many_builds() | 308 self.put_many_builds() |
| 282 | 309 |
| 283 first_page, next_cursor = service.search( | 310 first_page, next_cursor = service.search( |
| 284 buckets=[self.test_build.bucket], | 311 buckets=[self.test_build.bucket], |
| 285 max_builds=10, | 312 max_builds=10, |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 self.test_build.bucket, model.BuildStatus.SCHEDULED) | 795 self.test_build.bucket, model.BuildStatus.SCHEDULED) |
| 769 | 796 |
| 770 def test_delete_many_builds_schedule_task(self): | 797 def test_delete_many_builds_schedule_task(self): |
| 771 service.delete_many_builds( | 798 service.delete_many_builds( |
| 772 self.test_build.bucket, model.BuildStatus.SCHEDULED) | 799 self.test_build.bucket, model.BuildStatus.SCHEDULED) |
| 773 | 800 |
| 774 def test_delete_many_completed_builds(self): | 801 def test_delete_many_completed_builds(self): |
| 775 with self.assertRaises(errors.InvalidInputError): | 802 with self.assertRaises(errors.InvalidInputError): |
| 776 service.delete_many_builds( | 803 service.delete_many_builds( |
| 777 self.test_build.bucket, model.BuildStatus.COMPLETED) | 804 self.test_build.bucket, model.BuildStatus.COMPLETED) |
| OLD | NEW |