changeset 18910:f0148bae3d62

lib-mail: Updated test-message-header-parser unit test
author Timo Sirainen <tss@iki.fi>
date Thu, 16 Jul 2015 18:09:17 +0300
parents ab441df52e86
children 4bebfbb32410
files src/lib-mail/test-message-header-parser.c
diffstat 1 files changed, 24 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/test-message-header-parser.c	Thu Jul 16 18:08:40 2015 +0300
+++ b/src/lib-mail/test-message-header-parser.c	Thu Jul 16 18:09:17 2015 +0300
@@ -239,12 +239,36 @@
 	test_end();
 }
 
+static void test_message_header_parser_extra_cr_in_eoh(void)
+{
+	static const char *str = "a:b\n\r\r\n";
+	struct message_header_parser_ctx *parser;
+	struct message_header_line *hdr;
+	struct istream *input;
+
+	test_begin("message header parser extra CR in EOH");
+
+	input = test_istream_create(str);
+	parser = message_parse_header_init(input, NULL, 0);
+	test_assert(message_parse_header_next(parser, &hdr) > 0 &&
+		    strcmp(hdr->name, "a") == 0);
+	test_assert(message_parse_header_next(parser, &hdr) > 0 &&
+		    strcmp(hdr->name, "\r") == 0 && hdr->middle_len == 0 &&
+		    hdr->value_len == 0 && !hdr->eoh);
+	test_assert(message_parse_header_next(parser, &hdr) < 0);
+	message_parse_header_deinit(&parser);
+	test_assert(input->stream_errno == 0);
+	i_stream_unref(&input);
+	test_end();
+}
+
 int main(void)
 {
 	static void (*test_functions[])(void) = {
 		test_message_header_parser,
 		test_message_header_parser_partial,
 		test_message_header_parser_long_lines,
+		test_message_header_parser_extra_cr_in_eoh,
 		NULL
 	};
 	return test_run(test_functions);