| Index: test/WebRequest.cpp |
| =================================================================== |
| new file mode 100644 |
| --- /dev/null |
| +++ b/test/WebRequest.cpp |
| @@ -0,0 +1,42 @@ |
| +#include <AdblockPlus.h> |
| +#include <gtest/gtest.h> |
| + |
| +#include "../src/Thread.h" |
| + |
| +class TestWebRequest : public AdblockPlus::WebRequest |
| +{ |
| +public: |
| + AdblockPlus::ServerResponse GET(const std::string& url, const AdblockPlus::HeaderList& requestHeaders) const |
| + { |
| + AdblockPlus::Sleep(50); |
| + |
| + AdblockPlus::ServerResponse result; |
| + result.responseStatus = 123; |
| + result.responseHeaders.push_back(std::pair<std::string, std::string>("Foo", "Bar")); |
| + result.responseText = url + "\n" + requestHeaders[0].first + "\n" + requestHeaders[0].second; |
| + return result; |
| + } |
| +}; |
| + |
| +TEST(WebRequestTest, BadCall) |
| +{ |
| + AdblockPlus::JsEngine jsEngine(0, 0, 0); |
| + ASSERT_ANY_THROW(jsEngine.Evaluate("_webRequest.GET()")); |
| + ASSERT_ANY_THROW(jsEngine.Evaluate("_webRequest.GET('', {}, function(){})")); |
| + ASSERT_ANY_THROW(jsEngine.Evaluate("_webRequest.GET({toString: false}, {}, function(){})")); |
| + ASSERT_ANY_THROW(jsEngine.Evaluate("_webRequest.GET('http://example.com/', null, function(){})")); |
| + ASSERT_ANY_THROW(jsEngine.Evaluate("_webRequest.GET('http://example.com/', {}, null)")); |
| + ASSERT_ANY_THROW(jsEngine.Evaluate("_webRequest.GET('http://example.com/', {}, function(){}, 0)")); |
| +} |
| + |
| +TEST(WebRequestTest, UrlLoad) |
| +{ |
| + TestWebRequest webRequest; |
| + AdblockPlus::JsEngine jsEngine(0, &webRequest, 0); |
| + jsEngine.Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| + ASSERT_EQ("undefined", jsEngine.Evaluate("typeof foo")); |
| + AdblockPlus::Sleep(200); |
| + ASSERT_EQ("123", jsEngine.Evaluate("foo.responseStatus")); |
| + ASSERT_EQ("http://example.com/\nX\nY", jsEngine.Evaluate("foo.responseText")); |
| + ASSERT_EQ("{\"Foo\":\"Bar\"}", jsEngine.Evaluate("JSON.stringify(foo.responseHeaders)")); |
| +} |