Index: appengine/cr-buildbucket/test/api_test.py |
diff --git a/appengine/cr-buildbucket/test/api_test.py b/appengine/cr-buildbucket/test/api_test.py |
index dca6f417f44192f31c5fbe0ceb093b3c8ff853d6..8c91ddc9449ba1d9237e2680cb737799c5e251a9 100644 |
--- a/appengine/cr-buildbucket/test/api_test.py |
+++ b/appengine/cr-buildbucket/test/api_test.py |
@@ -78,7 +78,7 @@ class BuildBucketApiTest(testing.EndpointsTestCase): |
##################################### PUT #################################### |
def test_put(self): |
- self.test_build.tags = ['owner=ivan'] |
+ self.test_build.tags = ['owner:ivan'] |
self.service.add.return_value = self.test_build |
req = { |
'bucket': self.test_build.bucket, |
@@ -90,6 +90,7 @@ class BuildBucketApiTest(testing.EndpointsTestCase): |
tags=req['tags'], |
parameters=None, |
lease_expiration_date=None, |
+ client_operation_id=None, |
) |
self.assertEqual(resp['build']['id'], str(self.test_build.key.id())) |
self.assertEqual(resp['build']['bucket'], req['bucket']) |
@@ -117,13 +118,11 @@ class BuildBucketApiTest(testing.EndpointsTestCase): |
tags=[], |
parameters=None, |
lease_expiration_date=self.future_date, |
+ client_operation_id=None, |
) |
self.assertEqual( |
resp['build']['lease_expiration_ts'], req['lease_expiration_ts']) |
- def test_put_with_empty_bucket(self): |
- self.expect_error('put', {'bucket': ''}, 'INVALID_INPUT') |
- |
def test_put_with_malformed_parameters_json(self): |
req = { |
'bucket':'chromium', |
@@ -131,6 +130,72 @@ class BuildBucketApiTest(testing.EndpointsTestCase): |
} |
self.expect_error('put', req, 'INVALID_INPUT') |
+ ################################## PUT_BATCH ################################# |
+ |
+ def test_put_batch(self): |
+ self.test_build.tags = ['owner:ivan'] |
+ build1_future = ndb.Future() |
+ build1_future.set_result(self.test_build) |
+ |
+ build2 = model.Build(id=2, bucket='v8') |
+ build2_future = ndb.Future() |
+ build2_future.set_result(build2) |
+ |
+ bad_build_future = ndb.Future() |
+ bad_build_future.set_exception(errors.InvalidInputError('Just bad')) |
+ |
+ self.service.add_async.side_effect = [ |
+ build1_future, build2_future, bad_build_future] |
+ req = { |
+ 'builds': [ |
+ { |
+ 'bucket': self.test_build.bucket, |
+ 'tags': self.test_build.tags, |
+ 'client_operation_id': '0', |
+ }, |
+ { |
+ 'bucket': build2.bucket, |
+ 'client_operation_id': '1', |
+ }, |
+ { |
+ 'bucket': 'bad name', |
+ 'client_operation_id': '2', |
+ }, |
+ ], |
+ } |
+ resp = self.call_api('put_batch', req).json_body |
+ self.service.add_async.assert_any_call( |
+ bucket=self.test_build.bucket, |
+ tags=self.test_build.tags, |
+ parameters=None, |
+ lease_expiration_date=None, |
+ client_operation_id='0', |
+ ) |
+ self.service.add_async.assert_any_call( |
+ bucket=build2.bucket, |
+ tags=[], |
+ parameters=None, |
+ lease_expiration_date=None, |
+ client_operation_id='1', |
+ ) |
+ |
+ res0 = resp['results'][0] |
+ self.assertEqual(res0['client_operation_id'], '0') |
+ self.assertEqual(res0['build']['id'], str(self.test_build.key.id())) |
+ self.assertEqual(res0['build']['bucket'], self.test_build.bucket) |
+ self.assertEqual(res0['build']['tags'], self.test_build.tags) |
+ |
+ res1 = resp['results'][1] |
+ self.assertEqual(res1['client_operation_id'], '1') |
+ self.assertEqual(res1['build']['id'], str(build2.key.id())) |
+ self.assertEqual(res1['build']['bucket'], build2.bucket) |
+ |
+ res2 = resp['results'][2] |
+ self.assertEqual(res2, { |
+ 'client_operation_id': '2', |
+ 'error': {'reason': 'INVALID_INPUT', 'message': 'Just bad'}, |
+ }) |
+ |
#################################### SEARCH ################################## |
def test_search(self): |
@@ -247,9 +312,7 @@ class BuildBucketApiTest(testing.EndpointsTestCase): |
self.assertEqual(res['build']['url'], req['url']) |
def test_start_completed_build(self): |
- def raise_completed(*_, **__): |
- raise errors.BuildIsCompletedError() |
- self.service.start.side_effect = raise_completed |
+ self.service.start.side_effect = errors.BuildIsCompletedError |
req = { |
'id': self.test_build.key.id(), |
'lease_key': 42, |
@@ -478,9 +541,7 @@ class BuildBucketApiTest(testing.EndpointsTestCase): |
#################################### ERRORS ################################## |
def error_test(self, error_class, reason): |
- def raise_service_error(*_, **__): |
- raise error_class() |
- self.service.get.side_effect = raise_service_error |
+ self.service.get.side_effect = error_class |
self.expect_error('get', {'id': 123}, reason) |
def test_build_not_found_error(self): |