Commit c1690ab6 authored by Miguel Sacristan's avatar Miguel Sacristan

Added Unit Test for CUSTOM_HEADER Macro

parent 45f36f7f
...@@ -553,23 +553,29 @@ private: ...@@ -553,23 +553,29 @@ private:
}; };
#define CUSTOM_HEADER(header_name) \ #define CUSTOM_HEADER(header_name) \
class header_name : public Pistache::Http::Header::Header { \ class header_name : public Pistache::Http::Header::Header { \
public: \ public: \
NAME(#header_name) \ NAME(#header_name) \
\ \
header_name() = default; \ header_name() = default; \
\ \
explicit header_name(const char* value) \ explicit header_name(const char* value) \
: value_{value} {} \ : value_{value} {} \
\ \
explicit header_name(const std::string& value) \ explicit header_name(std::string value) \
: value_(value) {} \ : value_(std::move(value)) {} \
\ \
void write(std::ostream& os) const final { os << value_; }; \ void parseRaw(const char *str, size_t len) final \
\ { value_ = { str, len };} \
private: \ \
std::string value_; \ void write(std::ostream& os) const final \
}; \ { os << value_; }; \
\
std::string val() const { return value_; }; \
\
private: \
std::string value_; \
}; \
class Raw { class Raw {
public: public:
......
...@@ -8,8 +8,6 @@ ...@@ -8,8 +8,6 @@
using namespace Pistache::Http; using namespace Pistache::Http;
CUSTOM_HEADER(TestHeader)
TEST(headers_test, accept) { TEST(headers_test, accept) {
Header::Accept a1; Header::Accept a1;
a1.parse("audio/*; q=0.2"); a1.parse("audio/*; q=0.2");
...@@ -250,19 +248,19 @@ TEST(headers_test, host) { ...@@ -250,19 +248,19 @@ TEST(headers_test, host) {
host.parse("localhost:8080"); host.parse("localhost:8080");
ASSERT_EQ(host.host(), "localhost"); ASSERT_EQ(host.host(), "localhost");
ASSERT_EQ(host.port(), 8080); ASSERT_EQ(host.port(), 8080);
/* Due to an error in GLIBC these tests don't fail as expected, further research needed */ /* 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("256.256.256.256:8080");, std::invalid_argument);
// ASSERT_THROW( host.parse("1.0.0.256:8080");, std::invalid_argument); // ASSERT_THROW( host.parse("1.0.0.256:8080");, std::invalid_argument);
host.parse("[::1]:8080"); host.parse("[::1]:8080");
ASSERT_EQ(host.host(), "[::1]"); ASSERT_EQ(host.host(), "[::1]");
ASSERT_EQ(host.port(), 8080); ASSERT_EQ(host.port(), 8080);
host.parse("[2001:0DB8:AABB:CCDD:EEFF:0011:2233:4455]: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.host(), "[2001:0DB8:AABB:CCDD:EEFF:0011:2233:4455]");
ASSERT_EQ(host.port(), 8080); ASSERT_EQ(host.port(), 8080);
/* Due to an error in GLIBC these tests don't fail as expected, further research needed */ /* 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:GGGG:GGGG:GGGG:GGGG:GGGG:GGGG:GGGG]:8080");, std::invalid_argument);
// ASSERT_THROW( host.parse("[::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) ...@@ -323,13 +321,23 @@ TEST(headers_test, access_control_allow_methods_test)
ASSERT_EQ(allowMethods.val(), "GET, POST, DELETE"); 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) TEST(headers_test, add_new_header_test)
{ {
const std::string headerName = "TestHeader"; const std::string headerName = "TestHeader";
ASSERT_FALSE(Header::Registry::instance().isRegistered(headerName)); ASSERT_FALSE(Header::Registry::instance().isRegistered(headerName));
Header::Registry::instance().registerHeader<TestHeader>(); Header::Registry::instance().registerHeader<TestHeader>();
ASSERT_TRUE(TestHeader::Name == "TestHeader");
ASSERT_TRUE(Header::Registry::instance().isRegistered(headerName)); ASSERT_TRUE(Header::Registry::instance().isRegistered(headerName));
const auto& headersList = Header::Registry::instance().headersList(); 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