Commit c1690ab6 authored by Miguel Sacristan's avatar Miguel Sacristan

Added Unit Test for CUSTOM_HEADER Macro

parent 45f36f7f
......@@ -553,23 +553,29 @@ private:
};
#define CUSTOM_HEADER(header_name) \
class header_name : public Pistache::Http::Header::Header { \
public: \
NAME(#header_name) \
\
header_name() = default; \
\
explicit header_name(const char* value) \
: value_{value} {} \
\
explicit header_name(const std::string& value) \
: value_(value) {} \
\
void write(std::ostream& os) const final { os << value_; }; \
\
private: \
std::string value_; \
}; \
class header_name : public Pistache::Http::Header::Header { \
public: \
NAME(#header_name) \
\
header_name() = default; \
\
explicit header_name(const char* value) \
: value_{value} {} \
\
explicit header_name(std::string value) \
: value_(std::move(value)) {} \
\
void parseRaw(const char *str, size_t len) final \
{ value_ = { str, len };} \
\
void write(std::ostream& os) const final \
{ os << value_; }; \
\
std::string val() const { return value_; }; \
\
private: \
std::string value_; \
}; \
class Raw {
public:
......
......@@ -8,8 +8,6 @@
using namespace Pistache::Http;
CUSTOM_HEADER(TestHeader)
TEST(headers_test, accept) {
Header::Accept a1;
a1.parse("audio/*; q=0.2");
......@@ -250,19 +248,19 @@ TEST(headers_test, host) {
host.parse("localhost:8080");
ASSERT_EQ(host.host(), "localhost");
ASSERT_EQ(host.port(), 8080);
/* Due to an error in GLIBC these tests don't fail as expected, further research needed */
// ASSERT_THROW( host.parse("256.256.256.256:8080");, std::invalid_argument);
// ASSERT_THROW( host.parse("1.0.0.256:8080");, std::invalid_argument);
host.parse("[::1]:8080");
ASSERT_EQ(host.host(), "[::1]");
ASSERT_EQ(host.port(), 8080);
host.parse("[2001:0DB8:AABB:CCDD:EEFF:0011:2233:4455]:8080");
ASSERT_EQ(host.host(), "[2001:0DB8:AABB:CCDD:EEFF:0011:2233:4455]");
ASSERT_EQ(host.port(), 8080);
/* Due to an error in GLIBC these tests don't fail as expected, further research needed */
// ASSERT_THROW( host.parse("[GGGG:GGGG:GGGG:GGGG:GGGG:GGGG:GGGG:GGGG]:8080");, std::invalid_argument);
// ASSERT_THROW( host.parse("[::GGGG]:8080");, std::invalid_argument);
......@@ -323,13 +321,23 @@ TEST(headers_test, access_control_allow_methods_test)
ASSERT_EQ(allowMethods.val(), "GET, POST, DELETE");
}
CUSTOM_HEADER(TestHeader)
TEST(header_test, macro_for_custom_headers)
{
TestHeader testHeader;
ASSERT_TRUE(TestHeader::Name == "TestHeader");
testHeader.parse("Header Content Test");
ASSERT_EQ(testHeader.val(), "Header Content Test");
}
TEST(headers_test, add_new_header_test)
{
const std::string headerName = "TestHeader";
ASSERT_FALSE(Header::Registry::instance().isRegistered(headerName));
Header::Registry::instance().registerHeader<TestHeader>();
ASSERT_TRUE(TestHeader::Name == "TestHeader");
ASSERT_TRUE(Header::Registry::instance().isRegistered(headerName));
const auto& headersList = Header::Registry::instance().headersList();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment