Mercurial > hg > orthanc
diff OrthancFramework/UnitTestsSources/RestApiTests.cpp @ 4453:4f8e77c650e8
new function MultipartStreamReader::ParseHeaderArguments()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 19 Jan 2021 10:02:46 +0100 |
parents | d9473bd5ed43 |
children | 017ab543e6ef |
line wrap: on
line diff
--- a/OrthancFramework/UnitTestsSources/RestApiTests.cpp Mon Jan 18 15:04:36 2021 +0100 +++ b/OrthancFramework/UnitTestsSources/RestApiTests.cpp Tue Jan 19 10:02:46 2021 +0100 @@ -836,6 +836,63 @@ } +TEST(MultipartStreamReader, ParseHeaders2) +{ + std::string main; + std::map<std::string, std::string> args; + + ASSERT_FALSE(MultipartStreamReader::ParseHeaderArguments(main, args, "")); + ASSERT_FALSE(MultipartStreamReader::ParseHeaderArguments(main, args, " ")); + ASSERT_FALSE(MultipartStreamReader::ParseHeaderArguments(main, args, " ; ")); + + ASSERT_TRUE(MultipartStreamReader::ParseHeaderArguments(main, args, "hello")); + ASSERT_EQ("hello", main); + ASSERT_TRUE(args.empty()); + + ASSERT_TRUE(MultipartStreamReader::ParseHeaderArguments(main, args, "hello ; a = \" b \";c=d ; e=f;")); + ASSERT_EQ("hello", main); + ASSERT_EQ(3u, args.size()); + ASSERT_EQ(" b ", args["a"]); + ASSERT_EQ("d", args["c"]); + ASSERT_EQ("f", args["e"]); + + ASSERT_TRUE(MultipartStreamReader::ParseHeaderArguments(main, args, " hello ;;;; ; ")); + ASSERT_EQ("hello", main); + ASSERT_TRUE(args.empty()); + + ASSERT_FALSE(MultipartStreamReader::ParseHeaderArguments(main, args, "hello;a=b;c=d;a=f")); + + ASSERT_TRUE(MultipartStreamReader::ParseHeaderArguments(main, args, "multipart/related; dummy=value; boundary=1234; hello=world")); + ASSERT_EQ("multipart/related", main); + ASSERT_EQ(3u, args.size()); + ASSERT_EQ("value", args["dummy"]); + ASSERT_EQ("1234", args["boundary"]); + ASSERT_EQ("world", args["hello"]); + + ASSERT_TRUE(MultipartStreamReader::ParseHeaderArguments(main, args, "multipart/related; boundary=")); + ASSERT_EQ("multipart/related", main); + ASSERT_EQ(1u, args.size()); + ASSERT_EQ("", args["boundary"]); + + ASSERT_TRUE(MultipartStreamReader::ParseHeaderArguments(main, args, "multipart/related; boundary")); + ASSERT_EQ("multipart/related", main); + ASSERT_EQ(1u, args.size()); + ASSERT_EQ("", args["boundary"]); + + ASSERT_TRUE(MultipartStreamReader::ParseHeaderArguments(main, args, "Multipart/Related; TYPE=Application/Dicom; Boundary=heLLO")); + ASSERT_EQ("multipart/related", main); + ASSERT_EQ(2u, args.size()); + ASSERT_EQ("Application/Dicom", args["type"]); + ASSERT_EQ("heLLO", args["boundary"]); + + ASSERT_TRUE(MultipartStreamReader::ParseHeaderArguments(main, args, "Multipart/Related; type=\"application/DICOM\"; Boundary=a")); + ASSERT_EQ("multipart/related", main); + ASSERT_EQ(2u, args.size()); + ASSERT_EQ("application/DICOM", args["type"]); + ASSERT_EQ("a", args["boundary"]); +} + + TEST(MultipartStreamReader, BytePerByte) { std::string stream = "GARBAGE";