Skip to content

Commit cb0b1a6

Browse files
committed
Additional tests on http_request methods
1 parent cf3b8d2 commit cb0b1a6

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

test/integ/basic.cpp

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,24 @@ class header_reading_resource : public http_resource
117117
}
118118
};
119119

120+
class full_args_resource : public http_resource
121+
{
122+
public:
123+
const shared_ptr<http_response> render_GET(const http_request& req)
124+
{
125+
return shared_ptr<string_response>(new string_response(req.get_args().at("arg"), 200, "text/plain"));
126+
}
127+
};
128+
129+
class querystring_resource : public http_resource
130+
{
131+
public:
132+
const shared_ptr<http_response> render_GET(const http_request& req)
133+
{
134+
return shared_ptr<string_response>(new string_response(req.get_querystring(), 200, "text/plain"));
135+
}
136+
};
137+
120138
class complete_test_resource : public http_resource
121139
{
122140
public:
@@ -705,6 +723,42 @@ LT_BEGIN_AUTO_TEST(basic_suite, querystring_processing)
705723
curl_easy_cleanup(curl);
706724
LT_END_AUTO_TEST(querystring_processing)
707725

726+
LT_BEGIN_AUTO_TEST(basic_suite, full_arguments_processing)
727+
full_args_resource resource;
728+
ws->register_resource("this/captures/args/passed/in/the/querystring", &resource);
729+
curl_global_init(CURL_GLOBAL_ALL);
730+
731+
std::string s;
732+
CURL *curl = curl_easy_init();
733+
CURLcode res;
734+
curl_easy_setopt(curl, CURLOPT_URL, "localhost:8080/this/captures/args/passed/in/the/querystring?arg=argument");
735+
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
736+
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
737+
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
738+
res = curl_easy_perform(curl);
739+
LT_ASSERT_EQ(res, 0);
740+
LT_CHECK_EQ(s, "argument");
741+
curl_easy_cleanup(curl);
742+
LT_END_AUTO_TEST(full_arguments_processing)
743+
744+
LT_BEGIN_AUTO_TEST(basic_suite, querystring_query_processing)
745+
querystring_resource resource;
746+
ws->register_resource("this/captures/args/passed/in/the/querystring", &resource);
747+
curl_global_init(CURL_GLOBAL_ALL);
748+
749+
std::string s;
750+
CURL *curl = curl_easy_init();
751+
CURLcode res;
752+
curl_easy_setopt(curl, CURLOPT_URL, "localhost:8080/this/captures/args/passed/in/the/querystring?arg1=value1&arg2=value2&arg3=value3");
753+
curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
754+
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
755+
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
756+
res = curl_easy_perform(curl);
757+
LT_ASSERT_EQ(res, 0);
758+
LT_CHECK_EQ(s, "?arg1=value1&arg2=value2&arg3=value3");
759+
curl_easy_cleanup(curl);
760+
LT_END_AUTO_TEST(querystring_query_processing)
761+
708762
LT_BEGIN_AUTO_TEST(basic_suite, register_unregister)
709763
simple_resource resource;
710764
ws->register_resource("base", &resource);

0 commit comments

Comments
 (0)