Mercurial > hg > orthanc
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;