| 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):
|
|
|