(
mock_ujson_loads,
mock_mesos_http_request,
default_tos,
override_tos,
json_payload,
obj_decoder,
request_exception,
resp_status,
json_exception,
expected_exception,
expected_additional_kwargs)
| 237 | expected_exception=http.MesosException, |
| 238 | expected_additional_kwargs=[{}])]) |
| 239 | def test_resource_request_json( |
| 240 | mock_ujson_loads, |
| 241 | mock_mesos_http_request, |
| 242 | default_tos, |
| 243 | override_tos, |
| 244 | json_payload, |
| 245 | obj_decoder, |
| 246 | request_exception, |
| 247 | resp_status, |
| 248 | json_exception, |
| 249 | expected_exception, |
| 250 | expected_additional_kwargs): |
| 251 | call_kwargs = dict(method=http.METHOD_POST, |
| 252 | json={'some': 'payload'}, |
| 253 | timeout=None, |
| 254 | url='http://some.domain/some/prefix', |
| 255 | auth=None, |
| 256 | headers={'Accept': 'application/json', |
| 257 | 'Accept-Encoding': 'gzip'}, |
| 258 | params=None) |
| 259 | mock_calls = [] |
| 260 | for kwargs in expected_additional_kwargs: |
| 261 | call_kwargs.update(kwargs) |
| 262 | mock_calls.append(mock.call(**call_kwargs)) |
| 263 | |
| 264 | def json_side_effect(_): |
| 265 | if json_exception is None: |
| 266 | return {'some': 'return_value'} |
| 267 | raise json_exception |
| 268 | |
| 269 | def request_side_effect(*_, **__): |
| 270 | if request_exception is None: |
| 271 | return mock.Mock(status_code=resp_status) |
| 272 | raise request_exception |
| 273 | |
| 274 | mock_mesos_http_request.side_effect = request_side_effect |
| 275 | mock_ujson_loads.side_effect = json_side_effect |
| 276 | |
| 277 | resource = http.Resource('http://some.domain/some/prefix', |
| 278 | default_timeout=default_tos, |
| 279 | default_auth=None, |
| 280 | default_max_attempts=1, |
| 281 | default_use_gzip_encoding=True) |
| 282 | |
| 283 | if expected_exception is None: |
| 284 | ret = resource.request_json(http.METHOD_POST, |
| 285 | timeout=override_tos, |
| 286 | payload=json_payload, |
| 287 | decoder=obj_decoder) |
| 288 | expected_ret = {'some': 'return_value'} |
| 289 | if obj_decoder is None: |
| 290 | assert ret == expected_ret |
| 291 | else: |
| 292 | assert ret == SomeModel(**expected_ret) |
| 293 | else: |
| 294 | with pytest.raises(expected_exception): |
| 295 | resource.request_json(http.METHOD_POST, |
| 296 | timeout=override_tos, |
nothing calls this directly
no test coverage detected