summaryrefslogtreecommitdiff
path: root/icespider/unittests
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2016-06-26 12:40:30 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2016-06-26 12:40:30 +0100
commite548772e83997fd2b1cdf1473b68e912ee986018 (patch)
tree2aef1b314709d88585dd8f225a62e27259743cc9 /icespider/unittests
parentDefault parameter expressions (diff)
downloadicespider-e548772e83997fd2b1cdf1473b68e912ee986018.tar.bz2
icespider-e548772e83997fd2b1cdf1473b68e912ee986018.tar.xz
icespider-e548772e83997fd2b1cdf1473b68e912ee986018.zip
URL parameters by index internally, not key
Diffstat (limited to 'icespider/unittests')
-rw-r--r--icespider/unittests/testApp.cpp30
1 files changed, 12 insertions, 18 deletions
diff --git a/icespider/unittests/testApp.cpp b/icespider/unittests/testApp.cpp
index b5af516..cf14c81 100644
--- a/icespider/unittests/testApp.cpp
+++ b/icespider/unittests/testApp.cpp
@@ -7,6 +7,8 @@
#include <core.h>
#include <test-api.h>
#include <Ice/ObjectAdapter.h>
+#include <boost/algorithm/string/split.hpp>
+#include <boost/algorithm/string/classification.hpp>
using namespace UserIceSpider;
@@ -40,14 +42,18 @@ class TestRequest : public IceSpider::IHttpRequest {
public:
TestRequest(const IceSpider::Core * c, HttpMethod m, const std::string & p) :
IHttpRequest(c),
- method(m),
- path(p)
+ method(m)
{
+ namespace ba = boost::algorithm;
+ auto path = p.substr(1);
+ if (!path.empty()) {
+ ba::split(url, path, ba::is_any_of("/"), ba::token_compress_off);
+ }
}
- std::string getRequestPath() const override
+ const std::vector<std::string> & getRequestPath() const override
{
- return path;
+ return url;
}
HttpMethod getRequestMethod() const override
@@ -55,11 +61,6 @@ class TestRequest : public IceSpider::IHttpRequest {
return method;
}
- IceUtil::Optional<std::string> getURLParam(const std::string & key) const override
- {
- return AdHoc::safeMapLookup<std::runtime_error>(url, key);
- }
-
IceUtil::Optional<std::string> getQueryStringParam(const std::string & key) const override
{
return AdHoc::safeMapLookup<std::runtime_error>(qs, key);
@@ -81,14 +82,14 @@ class TestRequest : public IceSpider::IHttpRequest {
}
typedef std::map<std::string, std::string> MapVars;
- MapVars url;
+ typedef std::vector<std::string> UrlVars;
+ UrlVars url;
MapVars qs;
MapVars hdr;
mutable std::stringstream input;
mutable std::stringstream output;
const HttpMethod method;
- const std::string path;
};
BOOST_AUTO_TEST_CASE( testFindRoutes )
@@ -168,29 +169,22 @@ BOOST_AUTO_TEST_CASE( testCallMethods )
BOOST_REQUIRE_EQUAL(requestGetIndex.output.str(), "200 OK\r\n\r\n{\"value\":\"index\"}");
TestRequest requestGetItem(this, HttpMethod::GET, "/view/something/1234");
- requestGetItem.url["s"] = "something";
- requestGetItem.url["i"] = "1234";
process(&requestGetItem);
BOOST_REQUIRE_EQUAL(requestGetItem.output.str(), "200 OK\r\n\r\n{\"value\":\"withParams\"}");
TestRequest requestGetItemGiven(this, HttpMethod::GET, "/item/something/1234");
- requestGetItemGiven.url["s"] = "something";
- requestGetItemGiven.url["i"] = "1234";
process(&requestGetItemGiven);
BOOST_REQUIRE_EQUAL(requestGetItemGiven.output.str(), "200 OK\r\n\r\n{\"value\":\"withParams\"}");
TestRequest requestGetItemDefault(this, HttpMethod::GET, "/item/something");
- requestGetItemDefault.url["s"] = "something";
process(&requestGetItemDefault);
BOOST_REQUIRE_EQUAL(requestGetItemDefault.output.str(), "200 OK\r\n\r\n{\"value\":\"withParams\"}");
TestRequest requestDeleteItem(this, HttpMethod::DELETE, "/some value");
- requestDeleteItem.url["s"] = "some value";
process(&requestDeleteItem);
BOOST_REQUIRE_EQUAL(requestDeleteItem.output.str(), "200 OK\r\n\r\n");
TestRequest requestUpdateItem(this, HttpMethod::POST, "/1234");
- requestUpdateItem.url["id"] = "1234";
requestUpdateItem.hdr["Content-Type"] = "application/json";
requestUpdateItem.input << "{\"value\": \"some value\"}";
process(&requestUpdateItem);