diff OrthancFramework/UnitTestsSources/RestApiTests.cpp @ 4333:a85e74235a78

fix parsing of multipart boundaries, to resolve issue #190 in STOW-RS of DICOMweb plugin
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 27 Nov 2020 06:57:23 +0100
parents 072adf3c3409
children 3af1d763763a
line wrap: on
line diff
--- a/OrthancFramework/UnitTestsSources/RestApiTests.cpp	Wed Nov 25 21:42:50 2020 +0100
+++ b/OrthancFramework/UnitTestsSources/RestApiTests.cpp	Fri Nov 27 06:57:23 2020 +0100
@@ -894,6 +894,36 @@
 }
 
 
+TEST(MultipartStreamReader, Issue190)
+{
+  // https://bugs.orthanc-server.com/show_bug.cgi?id=190
+  // https://hg.orthanc-server.com/orthanc-dicomweb/rev/6dc2f79b5579
+
+  std::map<std::string, std::string> headers;
+  headers["content-type"] = "multipart/related; type=application/dicom; boundary=0f3cf5c0-70e0-41ef-baef-c6f9f65ec3e1";
+
+  {
+    std::string tmp, contentType, subType, boundary;
+    ASSERT_TRUE(Orthanc::MultipartStreamReader::GetMainContentType(tmp, headers));
+    ASSERT_TRUE(Orthanc::MultipartStreamReader::ParseMultipartContentType(contentType, subType, boundary, tmp));
+    ASSERT_EQ("multipart/related", contentType);
+    ASSERT_EQ("application/dicom", subType);
+    ASSERT_EQ("0f3cf5c0-70e0-41ef-baef-c6f9f65ec3e1", boundary);
+  }
+
+  headers["content-type"] = "multipart/related; type=\"application/dicom\"; boundary=\"0f3cf5c0-70e0-41ef-baef-c6f9f65ec3e1\"";
+
+  {
+    std::string tmp, contentType, subType, boundary;
+    ASSERT_TRUE(Orthanc::MultipartStreamReader::GetMainContentType(tmp, headers));
+    ASSERT_TRUE(Orthanc::MultipartStreamReader::ParseMultipartContentType(contentType, subType, boundary, tmp));
+    ASSERT_EQ("multipart/related", contentType);
+    ASSERT_EQ("application/dicom", subType);
+    ASSERT_EQ("0f3cf5c0-70e0-41ef-baef-c6f9f65ec3e1", boundary);
+  }
+}
+
+
 TEST(WebServiceParameters, Url)
 {
   WebServiceParameters w;