summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEd Tanous <ed@tanous.net>2024-01-29 08:30:06 +0300
committerEd Tanous <ed@tanous.net>2024-02-06 15:49:27 +0300
commit6fb96ce33d221a4cfa20d156eff5a3166ecb2661 (patch)
treee6fc343c39f3d60d25fa870533cae96886cc0a37 /test
parentf78fc98df3225e36a8abe865179a20b27e01d487 (diff)
downloadbmcweb-6fb96ce33d221a4cfa20d156eff5a3166ecb2661.tar.xz
Make tests not require body interaction
The muitipart test interacts with some significant details of the response class. This was largely only done because Request lacked an addHeader method that Request already had. Add addHeader() method to the Request class, and adapt multipart unit tests to use it. Tested: Unit tests pass. Unit test only changes. Change-Id: Icb3b92dce6d17011ae0063a962678173b1b01a87 Signed-off-by: Ed Tanous <ed@tanous.net>
Diffstat (limited to 'test')
-rw-r--r--test/include/multipart_test.cpp418
1 files changed, 221 insertions, 197 deletions
diff --git a/test/include/multipart_test.cpp b/test/include/multipart_test.cpp
index 38ac53deb0..0ac201f100 100644
--- a/test/include/multipart_test.cpp
+++ b/test/include/multipart_test.cpp
@@ -3,7 +3,6 @@
#include <boost/beast/http/fields.hpp>
#include <boost/beast/http/message.hpp>
-#include <boost/beast/http/string_body.hpp>
#include <memory>
#include <string_view>
@@ -26,29 +25,30 @@ using ::testing::Test;
class MultipartTest : public Test
{
public:
- boost::beast::http::request<boost::beast::http::string_body> req{};
MultipartParser parser;
std::error_code ec;
};
TEST_F(MultipartTest, TestGoodMultipartParser)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
- "111111111111111111111111112222222222222222222222222222222\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "{\r\n-----------------------------d74496d66958873e123456\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test3\"\r\n\r\n"
- "{\r\n--------d74496d6695887}\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+ "111111111111111111111111112222222222222222222222222222222\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "{\r\n-----------------------------d74496d66958873e123456\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test3\"\r\n\r\n"
+ "{\r\n--------d74496d6695887}\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
+
ParserError rc = parser.parse(reqIn);
ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
@@ -72,16 +72,18 @@ TEST_F(MultipartTest, TestGoodMultipartParser)
TEST_F(MultipartTest, TestBadMultipartParser1)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+ "1234567890\r\n"
+ "-----------------------------d74496d66958873e\r-\r\n";
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
- "1234567890\r\n"
- "-----------------------------d74496d66958873e\r-\r\n";
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
- crow::Request reqIn(req, ec);
ParserError rc = parser.parse(reqIn);
EXPECT_EQ(rc, ParserError::ERROR_UNEXPECTED_END_OF_INPUT);
@@ -89,16 +91,17 @@ TEST_F(MultipartTest, TestBadMultipartParser1)
TEST_F(MultipartTest, TestBadMultipartParser2)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+ "abcd\r\n"
+ "-----------------------------d74496d66958873e-\r\n";
+ crow::Request reqIn(body, ec);
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
- "abcd\r\n"
- "-----------------------------d74496d66958873e-\r\n";
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
- crow::Request reqIn(req, ec);
ParserError rc = parser.parse(reqIn);
EXPECT_EQ(rc, ParserError::ERROR_UNEXPECTED_END_OF_INPUT);
@@ -106,162 +109,176 @@ TEST_F(MultipartTest, TestBadMultipartParser2)
TEST_F(MultipartTest, TestErrorBoundaryFormat)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary+=-----------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
- "{\"Key1\": 11223333333333333333333333333333333333333333}\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "123456\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+ "{\"Key1\": 11223333333333333333333333333333333333333333}\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "123456\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary+=-----------------------------d74496d66958873e");
+
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_BOUNDARY_FORMAT);
}
TEST_F(MultipartTest, TestErrorBoundaryCR)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r"
- "{\"Key1\": 112233}\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "123456\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r"
+ "{\"Key1\": 112233}\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "123456\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
+
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_BOUNDARY_CR);
}
TEST_F(MultipartTest, TestErrorBoundaryLF)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
- "{\"Key1\": 112233}\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "123456\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+ "{\"Key1\": 112233}\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "123456\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
+
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_BOUNDARY_LF);
}
TEST_F(MultipartTest, TestErrorBoundaryData)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d7449sd6d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
- "{\"Key1\": 112233}\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "123456\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+ "{\"Key1\": 112233}\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "123456\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d7449sd6d66958873e");
+
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_BOUNDARY_DATA);
}
TEST_F(MultipartTest, TestErrorEmptyHeader)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r\n"
- ": form-data; name=\"Test1\"\r\n"
- "{\"Key1\": 112233}\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n"
- "123456\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ ": form-data; name=\"Test1\"\r\n"
+ "{\"Key1\": 112233}\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n"
+ "123456\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
+
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_EMPTY_HEADER);
}
TEST_F(MultipartTest, TestErrorHeaderName)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-!!Disposition: form-data; name=\"Test1\"\r\n"
- "{\"Key1\": 112233}\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "123456\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-!!Disposition: form-data; name=\"Test1\"\r\n"
+ "{\"Key1\": 112233}\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "123456\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
+
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_HEADER_NAME);
}
TEST_F(MultipartTest, TestErrorHeaderValue)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r"
- "{\"Key1\": 112233}\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "123456\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r"
+ "{\"Key1\": 112233}\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "123456\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
+
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_HEADER_VALUE);
}
TEST_F(MultipartTest, TestErrorHeaderEnding)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r"
- "{\"Key1\": 112233}\r\n"
- "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "123456\r\n"
- "-----------------------------d74496d66958873e--\r\n";
-
- crow::Request reqIn(req, ec);
+ std::string_view body =
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r"
+ "{\"Key1\": 112233}\r\n"
+ "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "123456\r\n"
+ "-----------------------------d74496d66958873e--\r\n";
+
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
+
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_HEADER_ENDING);
}
TEST_F(MultipartTest, TestGoodMultipartParserMultipleHeaders)
{
- req.set("Content-Type",
- "multipart/form-data; "
- "boundary=---------------------------d74496d66958873e");
-
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n"
- "Other-Header: value=\"v1\"\r\n"
- "\r\n"
- "Data1\r\n"
- "-----------------------------d74496d66958873e--";
-
- crow::Request reqIn(req, ec);
+ std::string_view body = "-----------------------------d74496d66958873e\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n"
+ "Other-Header: value=\"v1\"\r\n"
+ "\r\n"
+ "Data1\r\n"
+ "-----------------------------d74496d66958873e--";
+
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type",
+ "multipart/form-data; "
+ "boundary=---------------------------d74496d66958873e");
+
ParserError rc = parser.parse(reqIn);
ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
@@ -277,32 +294,32 @@ TEST_F(MultipartTest, TestGoodMultipartParserMultipleHeaders)
TEST_F(MultipartTest, TestErrorHeaderWithoutColon)
{
- req.set("Content-Type", "multipart/form-data; "
- "boundary=--end");
+ std::string_view body = "----end\r\n"
+ "abc\r\n"
+ "\r\n"
+ "Data1\r\n"
+ "----end--\r\n";
+ crow::Request reqIn(body, ec);
- req.body() = "----end\r\n"
- "abc\r\n"
- "\r\n"
- "Data1\r\n"
- "----end--\r\n";
+ reqIn.addHeader("Content-Type", "multipart/form-data; "
+ "boundary=--end");
- crow::Request reqIn(req, ec);
EXPECT_EQ(parser.parse(reqIn), ParserError::ERROR_UNEXPECTED_END_OF_HEADER);
}
TEST_F(MultipartTest, TestUnknownHeaderIsCorrectlyParsed)
{
- req.set("Content-Type", "multipart/form-data; "
- "boundary=--end");
-
- req.body() =
+ std::string_view body =
"----end\r\n"
"t-DiPpcccc:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaa\r\n"
"\r\n"
"Data1\r\n"
"----end--\r\n";
- crow::Request reqIn(req, ec);
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type", "multipart/form-data; "
+ "boundary=--end");
ParserError rc = parser.parse(reqIn);
ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
@@ -318,17 +335,18 @@ TEST_F(MultipartTest, TestUnknownHeaderIsCorrectlyParsed)
TEST_F(MultipartTest, TestErrorMissingSeparatorBetweenMimeFieldsAndData)
{
- req.set(
- "Content-Type",
- "multipart/form-data; boundary=---------------------------d74496d66958873e");
-
- req.body() =
+ std::string_view body =
"-----------------------------d74496d66958873e\r\n"
"t-DiPpcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaa\r\n"
"Data1"
"-----------------------------d74496d66958873e--";
- crow::Request reqIn(req, ec);
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader(
+ "Content-Type",
+ "multipart/form-data; boundary=---------------------------d74496d66958873e");
+
ParserError rc = parser.parse(reqIn);
EXPECT_EQ(rc, ParserError::ERROR_UNEXPECTED_END_OF_HEADER);
@@ -336,16 +354,17 @@ TEST_F(MultipartTest, TestErrorMissingSeparatorBetweenMimeFieldsAndData)
TEST_F(MultipartTest, TestDataWithoutMimeFields)
{
- req.set(
+ std::string_view body = "-----------------------------d74496d66958873e\r\n"
+ "\r\n"
+ "Data1\r\n"
+ "-----------------------------d74496d66958873e--";
+
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader(
"Content-Type",
"multipart/form-data; boundary=---------------------------d74496d66958873e");
- req.body() = "-----------------------------d74496d66958873e\r\n"
- "\r\n"
- "Data1\r\n"
- "-----------------------------d74496d66958873e--";
-
- crow::Request reqIn(req, ec);
ParserError rc = parser.parse(reqIn);
ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
@@ -362,15 +381,16 @@ TEST_F(MultipartTest, TestDataWithoutMimeFields)
TEST_F(MultipartTest, TestErrorMissingFinalBoundry)
{
- req.set("Content-Type", "multipart/form-data; boundary=--XX");
-
- req.body() =
+ std::string_view body =
"----XX\r\n"
"Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
"t-DiPpccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccAAAAAAAAAAAAAAABCDz\r\n"
"\335\r\n\r\n";
- crow::Request reqIn(req, ec);
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type", "multipart/form-data; boundary=--XX");
+
ParserError rc = parser.parse(reqIn);
EXPECT_EQ(rc, ParserError::ERROR_UNEXPECTED_END_OF_INPUT);
@@ -378,17 +398,19 @@ TEST_F(MultipartTest, TestErrorMissingFinalBoundry)
TEST_F(MultipartTest, TestIgnoreDataAfterFinalBoundary)
{
- req.set("Content-Type", "multipart/form-data; boundary=--XX");
+ std::string_view body =
+ "----XX\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+ "Data1\r\n"
+ "----XX--\r\n"
+ "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
+ "Data2\r\n"
+ "----XX--\r\n";
- req.body() = "----XX\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
- "Data1\r\n"
- "----XX--\r\n"
- "Content-Disposition: form-data; name=\"Test2\"\r\n\r\n"
- "Data2\r\n"
- "----XX--\r\n";
+ crow::Request reqIn(body, ec);
+
+ reqIn.addHeader("Content-Type", "multipart/form-data; boundary=--XX");
- crow::Request reqIn(req, ec);
ParserError rc = parser.parse(reqIn);
ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);
@@ -403,16 +425,18 @@ TEST_F(MultipartTest, TestIgnoreDataAfterFinalBoundary)
TEST_F(MultipartTest, TestFinalBoundaryIsCorrectlyRecognized)
{
- req.set("Content-Type", "multipart/form-data; boundary=--XX");
+ std::string_view body =
+ "----XX\r\n"
+ "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
+ "Data1\r\n"
+ "----XX-abc-\r\n"
+ "StillData1\r\n"
+ "----XX--\r\n";
+
+ crow::Request reqIn(body, ec);
- req.body() = "----XX\r\n"
- "Content-Disposition: form-data; name=\"Test1\"\r\n\r\n"
- "Data1\r\n"
- "----XX-abc-\r\n"
- "StillData1\r\n"
- "----XX--\r\n";
+ reqIn.addHeader("Content-Type", "multipart/form-data; boundary=--XX");
- crow::Request reqIn(req, ec);
ParserError rc = parser.parse(reqIn);
ASSERT_EQ(rc, ParserError::PARSER_SUCCESS);