@@ -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+
120138class 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);
706724LT_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+
708762LT_BEGIN_AUTO_TEST(basic_suite, register_unregister)
709763 simple_resource resource;
710764 ws->register_resource (" base" , &resource);
0 commit comments