示例#1
0
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()
示例#2
0
 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)
示例#3
0
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()
示例#4
0
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()
示例#5
0
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)
示例#6
0
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
示例#7
0
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
示例#8
0
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)
示例#9
0
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()
示例#10
0
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()
示例#11
0
 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)
示例#12
0
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()