Mock CloudFront Response Missing Something for Botocore Parser
Description of Issue:
When running the code below, the following exception is raised when using the moto library to mock out the call. When used "live" to actually create and test updating a distribution, the code works as expected. When using moto, the error appears.
test_EnableRootObjectCloudfront.py:11:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../../../../.venv/lib/python3.10/site-packages/botocore/client.py:391: in _api_call
return self._make_api_call(operation_name, kwargs)
../../../../.venv/lib/python3.10/site-packages/botocore/client.py:705: in _make_api_call
http, parsed_response = self._make_request(
../../../../.venv/lib/python3.10/site-packages/botocore/client.py:725: in _make_request
return self._endpoint.make_request(operation_model, request_dict)
../../../../.venv/lib/python3.10/site-packages/botocore/endpoint.py:104: in make_request
return self._send_request(request_dict, operation_model)
../../../../.venv/lib/python3.10/site-packages/botocore/endpoint.py:136: in _send_request
success_response, exception = self._get_response(
../../../../.venv/lib/python3.10/site-packages/botocore/endpoint.py:167: in _get_response
success_response, exception = self._do_get_response(
../../../../.venv/lib/python3.10/site-packages/botocore/endpoint.py:218: in _do_get_response
parsed_response = parser.parse(
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:245: in parse
parsed = self._do_parse(response, shape)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:844: in _do_parse
self._add_modeled_parse(response, shape, final_parsed)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:853: in _add_modeled_parse
self._parse_payload(response, shape, member_shapes, final_parsed)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:890: in _parse_payload
final_parsed[payload_member_name] = self._parse_shape(
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:312: in _parse_shape
return handler(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:416: in _handle_structure
parsed[member_name] = self._parse_shape(
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:312: in _parse_shape
return handler(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:416: in _handle_structure
parsed[member_name] = self._parse_shape(
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:312: in _parse_shape
return handler(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:416: in _handle_structure
parsed[member_name] = self._parse_shape(
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:312: in _parse_shape
return handler(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:949: in _handle_list
return super(BaseRestParser, self)._handle_list(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:395: in _handle_list
return super(BaseXMLResponseParser, self)._handle_list(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:320: in _handle_list
parsed.append(self._parse_shape(member_shape, item))
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:312: in _parse_shape
return handler(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:416: in _handle_structure
parsed[member_name] = self._parse_shape(
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:312: in _parse_shape
return handler(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:416: in _handle_structure
parsed[member_name] = self._parse_shape(
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:312: in _parse_shape
return handler(shape, node)
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:174: in _get_text_content
return func(self, shape, text)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <botocore.parsers.RestXMLParser object at 0x7f25e1953c40>, shape = <Shape(integer)>, text = 'None'
@_text_content
def _handle_integer(self, shape, text):
> return int(text)
E ValueError: invalid literal for int() with base 10: 'None'
../../../../.venv/lib/python3.10/site-packages/botocore/parsers.py:514: ValueError
===================================================== short test summary info =====================================================
FAILED test_EnableRootObjectCloudfront.py::test_update_root_distribution - ValueError: invalid literal for int() with base 10: 'None'
Thanks for raising this @Outrun207. Looks like we're not providing any values for OriginKeepaliveTimeout and OriginReadTimeout, which are both required values. I'm opening a PR with a fix.
Mock CloudFront Response Missing Something for Botocore Parser
Description of Issue:
When running the code below, the following exception is raised when using the moto library to mock out the call. When used "live" to actually create and test updating a distribution, the code works as expected. When using moto, the error appears.
How to Reproduce:
Code:
Library Versions
Am using Python mocks.