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 datetime | 5 import datetime |
6 import httplib | 6 import httplib |
7 import json | 7 import json |
8 import mock | 8 import mock |
9 | 9 |
10 from components import auth | 10 from components import auth |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 self.assertEqual( | 71 self.assertEqual( |
72 resp['build']['parameters_json'], '{"buildername": "linux_rel"}') | 72 resp['build']['parameters_json'], '{"buildername": "linux_rel"}') |
73 | 73 |
74 def test_get_nonexistent_build(self): | 74 def test_get_nonexistent_build(self): |
75 self.service.get.return_value = None | 75 self.service.get.return_value = None |
76 self.expect_error('get', {'id': 1}, 'BUILD_NOT_FOUND') | 76 self.expect_error('get', {'id': 1}, 'BUILD_NOT_FOUND') |
77 | 77 |
78 ##################################### PUT #################################### | 78 ##################################### PUT #################################### |
79 | 79 |
80 def test_put(self): | 80 def test_put(self): |
81 self.test_build.tags = ['owner=ivan'] | 81 self.test_build.tags = ['owner:ivan'] |
82 self.service.add.return_value = self.test_build | 82 self.service.add.return_value = self.test_build |
83 req = { | 83 req = { |
84 'bucket': self.test_build.bucket, | 84 'bucket': self.test_build.bucket, |
85 'tags': self.test_build.tags, | 85 'tags': self.test_build.tags, |
86 } | 86 } |
87 resp = self.call_api('put', req).json_body | 87 resp = self.call_api('put', req).json_body |
88 self.service.add.assert_called_once_with( | 88 self.service.add.assert_called_once_with( |
89 bucket=self.test_build.bucket, | 89 bucket=self.test_build.bucket, |
90 tags=req['tags'], | 90 tags=req['tags'], |
91 parameters=None, | 91 parameters=None, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 def test_put_with_empty_bucket(self): | 124 def test_put_with_empty_bucket(self): |
125 self.expect_error('put', {'bucket': ''}, 'INVALID_INPUT') | 125 self.expect_error('put', {'bucket': ''}, 'INVALID_INPUT') |
126 | 126 |
127 def test_put_with_malformed_parameters_json(self): | 127 def test_put_with_malformed_parameters_json(self): |
128 req = { | 128 req = { |
129 'bucket':'chromium', | 129 'bucket':'chromium', |
130 'parameters_json': '}non-json', | 130 'parameters_json': '}non-json', |
131 } | 131 } |
132 self.expect_error('put', req, 'INVALID_INPUT') | 132 self.expect_error('put', req, 'INVALID_INPUT') |
133 | 133 |
| 134 ################################## PUT_BATCH ################################# |
| 135 |
| 136 def test_put_batch(self): |
| 137 self.test_build.tags = ['owner:ivan'] |
| 138 build2 = model.Build(bucket='v8') |
| 139 build2.put() |
| 140 self.service.add_batch.return_value = [self.test_build, build2] |
| 141 req = { |
| 142 'builds': [ |
| 143 { |
| 144 'bucket': self.test_build.bucket, |
| 145 'tags': self.test_build.tags, |
| 146 }, |
| 147 { |
| 148 'bucket': build2.bucket, |
| 149 }, |
| 150 ], |
| 151 } |
| 152 resp = self.call_api('put_batch', req).json_body |
| 153 self.service.add_batch.assert_called_once_with([ |
| 154 { |
| 155 'bucket': self.test_build.bucket, |
| 156 'tags': self.test_build.tags, |
| 157 'parameters': None, |
| 158 'lease_expiration_date': None, |
| 159 }, |
| 160 { |
| 161 'bucket': build2.bucket, |
| 162 'tags': [], |
| 163 'parameters': None, |
| 164 'lease_expiration_date': None, |
| 165 }, |
| 166 ]) |
| 167 |
| 168 res_build0 = resp['builds'][0] |
| 169 self.assertEqual(res_build0['id'], str(self.test_build.key.id())) |
| 170 self.assertEqual(res_build0['bucket'], self.test_build.bucket) |
| 171 self.assertEqual(res_build0['tags'], self.test_build.tags) |
| 172 |
| 173 res_build1 = resp['builds'][1] |
| 174 self.assertEqual(res_build1['id'], str(self.test_build.key.id())) |
| 175 self.assertEqual(res_build1['bucket'], build2.bucket) |
| 176 |
134 #################################### SEARCH ################################## | 177 #################################### SEARCH ################################## |
135 | 178 |
136 def test_search(self): | 179 def test_search(self): |
137 self.test_build.put() | 180 self.test_build.put() |
138 self.service.search.return_value = ([self.test_build], 'the cursor') | 181 self.service.search.return_value = ([self.test_build], 'the cursor') |
139 req = { | 182 req = { |
140 'bucket': ['chromium'], | 183 'bucket': ['chromium'], |
141 'cancelation_reason': 'CANCELED_EXPLICITLY', | 184 'cancelation_reason': 'CANCELED_EXPLICITLY', |
142 'created_by': 'user:x@chromium.org', | 185 'created_by': 'user:x@chromium.org', |
143 'result': 'CANCELED', | 186 'result': 'CANCELED', |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 self.error_test(errors.BuildNotFoundError, 'BUILD_NOT_FOUND') | 530 self.error_test(errors.BuildNotFoundError, 'BUILD_NOT_FOUND') |
488 | 531 |
489 def test_invalid_input_error(self): | 532 def test_invalid_input_error(self): |
490 self.error_test(errors.InvalidInputError, 'INVALID_INPUT') | 533 self.error_test(errors.InvalidInputError, 'INVALID_INPUT') |
491 | 534 |
492 def test_invalid_build_state_error(self): | 535 def test_invalid_build_state_error(self): |
493 self.error_test(errors.InvalidBuildStateError, 'INVALID_BUILD_STATE') | 536 self.error_test(errors.InvalidBuildStateError, 'INVALID_BUILD_STATE') |
494 | 537 |
495 def test_lease_expired_error(self): | 538 def test_lease_expired_error(self): |
496 self.error_test(errors.LeaseExpiredError, 'LEASE_EXPIRED') | 539 self.error_test(errors.LeaseExpiredError, 'LEASE_EXPIRED') |
OLD | NEW |