diff options
Diffstat (limited to 'test/http/http_body_test.cpp')
-rw-r--r-- | test/http/http_body_test.cpp | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/test/http/http_body_test.cpp b/test/http/http_body_test.cpp new file mode 100644 index 0000000000..6367cf9409 --- /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 |