def test_event_stream_initial_response_no_event(): raw_stream = create_mock_raw_stream(b'') parser = mock.Mock(spec=EventStreamXMLParser) output_shape = mock.Mock() event_stream = EventStream(raw_stream, output_shape, parser, '') with pytest.raises(NoInitialResponseError): event_stream.get_initial_response()
def _parse_payload(self, response, shape, member_shapes, final_parsed): if 'payload' in shape.serialization: # If a payload is specified in the output shape, then only that # shape is used for the body payload. payload_member_name = shape.serialization['payload'] body_shape = member_shapes[payload_member_name] if body_shape.serialization.get('eventstream'): parser = self._event_stream_parser name = response['context'].get('operation_name') body = EventStream(response['body'], body_shape, parser, name) final_parsed[payload_member_name] = body elif body_shape.type_name in ['string', 'blob']: # This is a stream body = response['body'] if isinstance(body, bytes): body = body.decode(self.DEFAULT_ENCODING) final_parsed[payload_member_name] = body else: original_parsed = self._initial_body_parse(response['body']) final_parsed[payload_member_name] = self._parse_shape( body_shape, original_parsed) else: original_parsed = self._initial_body_parse(response['body']) body_parsed = self._parse_shape(shape, original_parsed) final_parsed.update(body_parsed)
def test_event_stream_initial_response_wrong_type(): raw_stream = create_mock_raw_stream( b"\x00\x00\x00+\x00\x00\x00\x0e4\x8b\xec{\x08event-id\x04\x00", b"\x00\xa0\x0c{'foo':'bar'}\xd3\x89\x02\x85", ) parser = Mock(spec=EventStreamXMLParser) output_shape = Mock() event_stream = EventStream(raw_stream, output_shape, parser, '') event_stream.get_initial_response()
def test_eventstream_wrapper_iteration_error(): raw_stream = create_mock_raw_stream(ERROR_EVENT_MESSAGE[0]) parser = Mock(spec=EventStreamXMLParser) parser.parse.return_value = {} output_shape = Mock() event_stream = EventStream(raw_stream, output_shape, parser, '') list(event_stream)
def test_event_stream_initial_response(): raw_stream = create_mock_raw_stream( b'\x00\x00\x00~\x00\x00\x00O\xc5\xa3\xdd\xc6\r:message-type\x07\x00', b'\x05event\x0b:event-type\x07\x00\x10initial-response\r:content-type', b'\x07\x00\ttext/json{"InitialResponse": "sometext"}\xf6\x98$\x83') parser = Mock(spec=EventStreamXMLParser) output_shape = Mock() event_stream = EventStream(raw_stream, output_shape, parser, '') event = event_stream.get_initial_response() headers = { ':message-type': 'event', ':event-type': 'initial-response', ':content-type': 'text/json', } payload = b'{"InitialResponse": "sometext"}' assert event.headers == headers assert event.payload == payload
def test_event_stream_initial_response(): raw_stream = create_mock_raw_stream( b'\x00\x00\x00~\x00\x00\x00O\xc5\xa3\xdd\xc6\r:message-type\x07\x00', b'\x05event\x0b:event-type\x07\x00\x10initial-response\r:content-type', b'\x07\x00\ttext/json{"InitialResponse": "sometext"}\xf6\x98$\x83' ) parser = Mock(spec=EventStreamXMLParser) output_shape = Mock() event_stream = EventStream(raw_stream, output_shape, parser, '') event = event_stream.get_initial_response() headers = { ':message-type': 'event', ':event-type': 'initial-response', ':content-type': 'text/json', } payload = b'{"InitialResponse": "sometext"}' assert event.headers == headers assert event.payload == payload
def test_event_stream_wrapper_iteration(): raw_stream = create_mock_raw_stream( b"\x00\x00\x00+\x00\x00\x00\x0e4\x8b\xec{\x08event-id\x04\x00", b"\x00\xa0\x0c{'foo':'bar'}\xd3\x89\x02\x85", ) parser = mock.Mock(spec=EventStreamXMLParser) output_shape = mock.Mock() event_stream = EventStream(raw_stream, output_shape, parser, '') events = list(event_stream) assert len(events) == 1 response_dict = { 'headers': {'event-id': 0x0000a00c}, 'body': b"{'foo':'bar'}", 'status_code': 200, } parser.parse.assert_called_with(response_dict, output_shape)
def test_event_stream_wrapper_close(): raw_stream = Mock() event_stream = EventStream(raw_stream, None, None, '') event_stream.close() raw_stream.close.assert_called_once_with()
def test_event_stream_initial_response_no_event(): raw_stream = create_mock_raw_stream(b'') parser = Mock(spec=EventStreamXMLParser) output_shape = Mock() event_stream = EventStream(raw_stream, output_shape, parser, '') event_stream.get_initial_response()
def _create_event_stream(self, response, shape): parser = self._event_stream_parser name = response['context'].get('operation_name') return EventStream(response['body'], shape, parser, name)