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";