Rename FileBody to HttpBody
Now that our custom body type does things more than files, it makes
sense to rename it. This commit renames the header itself, then all
instances of the class.
Tested: Basic GET requests succeed.
Change-Id: If4361ac8992fc7c268f48a336707f96e68d3576c
Signed-off-by: Ed Tanous <ed@tanous.net>
diff --git a/test/http/http_body_test.cpp b/test/http/http_body_test.cpp
new file mode 100644
index 0000000..6367cf9
--- /dev/null
+++ b/test/http/http_body_test.cpp
@@ -0,0 +1,128 @@
+#include "file_test_utilities.hpp"
+#include "http_body.hpp"
+
+#include <boost/system/error_code.hpp>
+
+#include <array>
+#include <span>
+#include <string>
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+using ::testing::ElementsAre;
+
+namespace bmcweb
+{
+namespace
+{
+
+TEST(HttpHttpBodyValueType, MoveString)
+{
+ HttpBody::value_type value("teststring");
+ // Move constructor
+ HttpBody::value_type value2(std::move(value));
+ EXPECT_EQ(value2.encodingType, EncodingType::Raw);
+ EXPECT_EQ(value2.str(), "teststring");
+ EXPECT_EQ(value2.payloadSize(), 10);
+}
+
+TEST(HttpHttpBodyValueType, MoveOperatorString)
+{
+ HttpBody::value_type value;
+ value.str() = "teststring";
+ // Move constructor
+ HttpBody::value_type value2 = std::move(value);
+ EXPECT_EQ(value2.encodingType, EncodingType::Raw);
+ EXPECT_EQ(value2.str(), "teststring");
+ EXPECT_EQ(value2.payloadSize(), 10);
+}
+
+TEST(HttpHttpBodyValueType, copysignl)
+{
+ HttpBody::value_type value;
+ value.str() = "teststring";
+ // Move constructor
+ HttpBody::value_type value2(value);
+ EXPECT_EQ(value2.encodingType, EncodingType::Raw);
+ EXPECT_EQ(value2.str(), "teststring");
+ EXPECT_EQ(value2.payloadSize(), 10);
+}
+
+TEST(HttpHttpBodyValueType, CopyOperatorString)
+{
+ HttpBody::value_type value;
+ value.str() = "teststring";
+ // Move constructor
+ HttpBody::value_type value2 = value;
+ EXPECT_EQ(value2.encodingType, EncodingType::Raw);
+ EXPECT_EQ(value2.str(), "teststring");
+ EXPECT_EQ(value2.payloadSize(), 10);
+}
+
+TEST(HttpHttpBodyValueType, MoveFile)
+{
+ HttpBody::value_type value(EncodingType::Base64);
+ std::string filepath = makeFile("teststring");
+ boost::system::error_code ec;
+ value.open(filepath.c_str(), boost::beast::file_mode::read, ec);
+ ASSERT_FALSE(ec);
+ // Move constructor
+ HttpBody::value_type value2(std::move(value));
+ std::array<char, 11> buffer{};
+ size_t out = value2.file().read(buffer.data(), buffer.size(), ec);
+ ASSERT_FALSE(ec);
+ EXPECT_EQ(value2.encodingType, EncodingType::Base64);
+
+ EXPECT_THAT(std::span(buffer.data(), out),
+ ElementsAre('t', 'e', 's', 't', 's', 't', 'r', 'i', 'n', 'g'));
+
+ EXPECT_THAT(buffer, ElementsAre('t', 'e', 's', 't', 's', 't', 'r', 'i', 'n',
+ 'g', '\0'));
+
+ EXPECT_EQ(value2.payloadSize(), 16);
+}
+
+TEST(HttpHttpBodyValueType, MoveOperatorFile)
+{
+ HttpBody::value_type value(EncodingType::Base64);
+ std::string filepath = makeFile("teststring");
+ boost::system::error_code ec;
+ value.open(filepath.c_str(), boost::beast::file_mode::read, ec);
+ ASSERT_FALSE(ec);
+ // Move constructor
+ HttpBody::value_type value2 = std::move(value);
+ std::array<char, 11> buffer{};
+ size_t out = value2.file().read(buffer.data(), buffer.size(), ec);
+ ASSERT_FALSE(ec);
+ EXPECT_EQ(value2.encodingType, EncodingType::Base64);
+
+ EXPECT_THAT(std::span(buffer.data(), out),
+ ElementsAre('t', 'e', 's', 't', 's', 't', 'r', 'i', 'n', 'g'));
+ EXPECT_THAT(buffer, ElementsAre('t', 'e', 's', 't', 's', 't', 'r', 'i', 'n',
+ 'g', '\0'));
+
+ EXPECT_EQ(value2.payloadSize(), 16);
+}
+
+TEST(HttpBodyValueType, SetFd)
+{
+ HttpBody::value_type value(EncodingType::Base64);
+ std::string filepath = makeFile("teststring");
+
+ boost::system::error_code ec;
+ value.setFd(fileno(fopen(filepath.c_str(), "r")), ec);
+ ASSERT_FALSE(ec);
+
+ std::array<char, 4096> buffer{};
+
+ size_t out = value.file().read(buffer.data(), buffer.size(), ec);
+ ASSERT_FALSE(ec);
+
+ EXPECT_THAT(std::span(buffer.data(), out),
+ ElementsAre('t', 'e', 's', 't', 's', 't', 'r', 'i', 'n', 'g'));
+ EXPECT_EQ(value.payloadSize(), 16);
+}
+
+} // namespace
+} // namespace bmcweb