diff --git a/deps/rabbitmq_stomp/test/frame_SUITE.erl b/deps/rabbitmq_stomp/test/frame_SUITE.erl index 847b25a0204..4a37be19137 100644 --- a/deps/rabbitmq_stomp/test/frame_SUITE.erl +++ b/deps/rabbitmq_stomp/test/frame_SUITE.erl @@ -92,13 +92,13 @@ parse_resume_mid_command(_) -> {ok, #stomp_frame{command = "COMMAND"}, _Rest} = parse(Second, Resume). parse_resume_mid_header_key(_) -> - First = "COMMAND\nheade", + First = "COMMAND\nheadꙕ", Second = "r1:value1\n\n\0", {more, Resume} = parse(First), {ok, Frame = #stomp_frame{command = "COMMAND"}, _Rest} = parse(Second, Resume), ?assertEqual({ok, "value1"}, - rabbit_stomp_frame:header(Frame, "header1")). + rabbit_stomp_frame:header(Frame, binary_to_list(<<"headꙕr1"/utf8>>))). parse_resume_mid_header_val(_) -> First = "COMMAND\nheader1:val", @@ -215,7 +215,7 @@ headers_escaping_roundtrip_without_trailing_lf(_) -> parse(Content) -> parse(Content, rabbit_stomp_frame:initial_state()). parse(Content, State) -> - rabbit_stomp_frame:parse(list_to_binary(Content), State). + rabbit_stomp_frame:parse(unicode:characters_to_binary(Content), State). parse_complete(Content) -> {ok, Frame = #stomp_frame{command = Command}, State} = parse(Content), diff --git a/deps/rabbitmq_stomp/test/python_SUITE_data/src/parsing.py b/deps/rabbitmq_stomp/test/python_SUITE_data/src/parsing.py index c2310c62f11..c13dabe7251 100644 --- a/deps/rabbitmq_stomp/test/python_SUITE_data/src/parsing.py +++ b/deps/rabbitmq_stomp/test/python_SUITE_data/src/parsing.py @@ -119,6 +119,27 @@ def test_send_without_content_type(self): 'hello\n\0') self.match(resp, self.cd.recv(4096).decode('utf-8')) + @connect(['cd']) + def test_unicode(self): + cmd = ('\n' + 'SUBSCRIBE\n' + 'destination:/exchange/amq.fanout\n' + '\n\x00\n' + 'SEND\n' + 'destination:/exchange/amq.fanout\n' + 'headꙕr1:valꙕe1\n\n' + 'hello\n\x00') + self.cd.sendall(cmd.encode('utf-8')) + resp = ('MESSAGE\n' + 'destination:/exchange/amq.fanout\n' + 'message-id:Q_/exchange/amq.fanout@@session-(.*)\n' + 'redelivered:false\n' + 'headꙕr1:valꙕe1\n' + 'content-length:6\n' + '\n' + 'hello\n\0') + self.match(resp, self.cd.recv(4096).decode('utf-8')) + @connect(['cd']) def test_send_without_content_type_binary(self): msg = 'hello'