def test_read_headers_fails(capture_logging): unparseable = io.BytesIO(b'21:' b'missing trailing null' b',') with pytest.raises(RuntimeError), capture_logging() as logger: receiver.read_headers(unparseable) fail_actions = LoggedAction.ofType(logger.messages, types.SCGI_PARSE) assert fail_actions and not fail_actions[0].succeeded
def test_read_headers_succeeds(capture_logging): parseable = io.BytesIO(SPEC_REQUEST_HEADERS) expected = {'CONTENT_LENGTH': '27', 'SCGI': '1', 'REQUEST_METHOD': 'POST', 'REQUEST_URI': '/deepthought'} with capture_logging() as logger: assert receiver.read_headers(parseable) == expected actions = LoggedAction.ofType(logger.messages, types.SCGI_PARSE) assert actions and actions[0].succeeded
def test_read_headers_succeeds_with_latin_1(capture_logging): latin1 = io.BytesIO() latin1.writelines([b'29:' b'CONTENT_LENGTH', _NULL, b'1', _NULL, b'X_LATIN_1', _NULL, b'\xbf', _NULL, b',']) latin1.seek(0) expected = {'CONTENT_LENGTH': '1', 'X_LATIN_1': u'\N{INVERTED QUESTION MARK}'} with capture_logging() as logger: assert receiver.read_headers(latin1) == expected actions = LoggedAction.ofType(logger.messages, types.SCGI_PARSE) assert actions and actions[0].succeeded