diff options
Diffstat (limited to 'src/shrpx_http_test.cc')
-rw-r--r-- | src/shrpx_http_test.cc | 130 |
1 files changed, 77 insertions, 53 deletions
diff --git a/src/shrpx_http_test.cc b/src/shrpx_http_test.cc index 3ace870..f753ec8 100644 --- a/src/shrpx_http_test.cc +++ b/src/shrpx_http_test.cc @@ -30,7 +30,7 @@ #include <cstdlib> -#include <CUnit/CUnit.h> +#include "munitxx.h" #include "shrpx_http.h" #include "shrpx_config.h" @@ -38,43 +38,65 @@ namespace shrpx { +namespace { +const MunitTest tests[]{ + munit_void_test(test_shrpx_http_create_forwarded), + munit_void_test(test_shrpx_http_create_via_header_value), + munit_void_test(test_shrpx_http_create_affinity_cookie), + munit_void_test(test_shrpx_http_create_altsvc_header_value), + munit_void_test(test_shrpx_http_check_http_scheme), + munit_test_end(), +}; +} // namespace + +const MunitSuite http_suite{ + "/http", tests, NULL, 1, MUNIT_SUITE_OPTION_NONE, +}; + void test_shrpx_http_create_forwarded(void) { BlockAllocator balloc(1024, 1024); - CU_ASSERT("by=\"example.com:3000\";for=\"[::1]\";host=\"www.example.com\";" - "proto=https" == - http::create_forwarded(balloc, - FORWARDED_BY | FORWARDED_FOR | - FORWARDED_HOST | FORWARDED_PROTO, - StringRef::from_lit("example.com:3000"), - StringRef::from_lit("[::1]"), - StringRef::from_lit("www.example.com"), - StringRef::from_lit("https"))); - - CU_ASSERT("for=192.168.0.1" == - http::create_forwarded( - balloc, FORWARDED_FOR, StringRef::from_lit("alpha"), - StringRef::from_lit("192.168.0.1"), - StringRef::from_lit("bravo"), StringRef::from_lit("charlie"))); - - CU_ASSERT("by=_hidden;for=\"[::1]\"" == - http::create_forwarded( - balloc, FORWARDED_BY | FORWARDED_FOR, - StringRef::from_lit("_hidden"), StringRef::from_lit("[::1]"), - StringRef::from_lit(""), StringRef::from_lit(""))); - - CU_ASSERT("by=\"[::1]\";for=_hidden" == - http::create_forwarded( - balloc, FORWARDED_BY | FORWARDED_FOR, - StringRef::from_lit("[::1]"), StringRef::from_lit("_hidden"), - StringRef::from_lit(""), StringRef::from_lit(""))); - - CU_ASSERT("" == - http::create_forwarded( - balloc, - FORWARDED_BY | FORWARDED_FOR | FORWARDED_HOST | FORWARDED_PROTO, - StringRef::from_lit(""), StringRef::from_lit(""), - StringRef::from_lit(""), StringRef::from_lit(""))); + assert_stdstring_equal( + "by=\"example.com:3000\";for=\"[::1]\";host=\"www.example.com\";" + "proto=https", + http::create_forwarded( + balloc, + FORWARDED_BY | FORWARDED_FOR | FORWARDED_HOST | FORWARDED_PROTO, + StringRef::from_lit("example.com:3000"), StringRef::from_lit("[::1]"), + StringRef::from_lit("www.example.com"), StringRef::from_lit("https")) + .str()); + + assert_stdstring_equal( + "for=192.168.0.1", + http::create_forwarded( + balloc, FORWARDED_FOR, StringRef::from_lit("alpha"), + StringRef::from_lit("192.168.0.1"), StringRef::from_lit("bravo"), + StringRef::from_lit("charlie")) + .str()); + + assert_stdstring_equal( + "by=_hidden;for=\"[::1]\"", + http::create_forwarded(balloc, FORWARDED_BY | FORWARDED_FOR, + StringRef::from_lit("_hidden"), + StringRef::from_lit("[::1]"), + StringRef::from_lit(""), StringRef::from_lit("")) + .str()); + + assert_stdstring_equal( + "by=\"[::1]\";for=_hidden", + http::create_forwarded(balloc, FORWARDED_BY | FORWARDED_FOR, + StringRef::from_lit("[::1]"), + StringRef::from_lit("_hidden"), + StringRef::from_lit(""), StringRef::from_lit("")) + .str()); + + assert_stdstring_equal( + "", http::create_forwarded( + balloc, + FORWARDED_BY | FORWARDED_FOR | FORWARDED_HOST | FORWARDED_PROTO, + StringRef::from_lit(""), StringRef::from_lit(""), + StringRef::from_lit(""), StringRef::from_lit("")) + .str()); } void test_shrpx_http_create_via_header_value(void) { @@ -82,13 +104,13 @@ void test_shrpx_http_create_via_header_value(void) { auto end = http::create_via_header_value(std::begin(buf), 1, 1); - CU_ASSERT(("1.1 nghttpx" == StringRef{std::begin(buf), end})); + assert_stdstring_equal("1.1 nghttpx", (std::string{std::begin(buf), end})); std::fill(std::begin(buf), std::end(buf), '\0'); end = http::create_via_header_value(std::begin(buf), 2, 0); - CU_ASSERT(("2 nghttpx" == StringRef{std::begin(buf), end})); + assert_stdstring_equal("2 nghttpx", (std::string{std::begin(buf), end})); } void test_shrpx_http_create_affinity_cookie(void) { @@ -98,24 +120,24 @@ void test_shrpx_http_create_affinity_cookie(void) { c = http::create_affinity_cookie(balloc, StringRef::from_lit("cookie-val"), 0xf1e2d3c4u, StringRef{}, false); - CU_ASSERT("cookie-val=f1e2d3c4" == c); + assert_stdstring_equal("cookie-val=f1e2d3c4", c.str()); c = http::create_affinity_cookie(balloc, StringRef::from_lit("alpha"), 0x00000000u, StringRef{}, true); - CU_ASSERT("alpha=00000000; Secure" == c); + assert_stdstring_equal("alpha=00000000; Secure", c.str()); c = http::create_affinity_cookie(balloc, StringRef::from_lit("bravo"), 0x01111111u, StringRef::from_lit("bar"), false); - CU_ASSERT("bravo=01111111; Path=bar" == c); + assert_stdstring_equal("bravo=01111111; Path=bar", c.str()); c = http::create_affinity_cookie(balloc, StringRef::from_lit("charlie"), 0x01111111u, StringRef::from_lit("bar"), true); - CU_ASSERT("charlie=01111111; Path=bar; Secure" == c); + assert_stdstring_equal("charlie=01111111; Path=bar; Secure", c.str()); } void test_shrpx_http_create_altsvc_header_value(void) { @@ -130,8 +152,9 @@ void test_shrpx_http_create_altsvc_header_value(void) { }, }; - CU_ASSERT(R"(h3="127.0.0.1:443"; ma=3600)" == - http::create_altsvc_header_value(balloc, altsvcs)); + assert_stdstring_equal( + R"(h3="127.0.0.1:443"; ma=3600)", + http::create_altsvc_header_value(balloc, altsvcs).str()); } { @@ -149,20 +172,21 @@ void test_shrpx_http_create_altsvc_header_value(void) { }, }; - CU_ASSERT(R"(h3=":443"; ma=3600, h3%25="\"foo\":4433")" == - http::create_altsvc_header_value(balloc, altsvcs)); + assert_stdstring_equal( + R"(h3=":443"; ma=3600, h3%25="\"foo\":4433")", + http::create_altsvc_header_value(balloc, altsvcs).str()); } } void test_shrpx_http_check_http_scheme(void) { - CU_ASSERT(http::check_http_scheme(StringRef::from_lit("https"), true)); - CU_ASSERT(!http::check_http_scheme(StringRef::from_lit("https"), false)); - CU_ASSERT(!http::check_http_scheme(StringRef::from_lit("http"), true)); - CU_ASSERT(http::check_http_scheme(StringRef::from_lit("http"), false)); - CU_ASSERT(!http::check_http_scheme(StringRef::from_lit("foo"), true)); - CU_ASSERT(!http::check_http_scheme(StringRef::from_lit("foo"), false)); - CU_ASSERT(!http::check_http_scheme(StringRef{}, true)); - CU_ASSERT(!http::check_http_scheme(StringRef{}, false)); + assert_true(http::check_http_scheme(StringRef::from_lit("https"), true)); + assert_false(http::check_http_scheme(StringRef::from_lit("https"), false)); + assert_false(http::check_http_scheme(StringRef::from_lit("http"), true)); + assert_true(http::check_http_scheme(StringRef::from_lit("http"), false)); + assert_false(http::check_http_scheme(StringRef::from_lit("foo"), true)); + assert_false(http::check_http_scheme(StringRef::from_lit("foo"), false)); + assert_false(http::check_http_scheme(StringRef{}, true)); + assert_false(http::check_http_scheme(StringRef{}, false)); } } // namespace shrpx |