| Index: test/WebRequest.cpp |
| diff --git a/test/WebRequest.cpp b/test/WebRequest.cpp |
| index 1e0f9d66f139f8c2ede7082822d8828e61e774d0..9c1b3484d3d5a50b0e0cb95c4806295cc8bf1271 100644 |
| --- a/test/WebRequest.cpp |
| +++ b/test/WebRequest.cpp |
| @@ -113,198 +113,6 @@ TEST_F(MockWebRequestTest, SuccessfulRequest) |
| ASSERT_EQ("{\"Foo\":\"Bar\"}", jsEngine->Evaluate("JSON.stringify(foo.responseHeaders)")->AsString()); |
| } |
| -TEST_F(MockWebRequestTest, ConnectionIsAllowedOnJsEngine) |
| -{ |
| - std::atomic<int> isConnectionAllowedCalledTimes(0); |
| - jsEngine->SetIsConnectionAllowedCallback([&isConnectionAllowedCalledTimes]()->bool |
| - { |
| - ++isConnectionAllowedCalledTimes; |
| - return true; |
| - }); |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - ASSERT_TRUE(jsEngine->Evaluate("this.foo")->IsUndefined()); |
| - AdblockPlus::Sleep(200); |
| - EXPECT_EQ(1, isConnectionAllowedCalledTimes); |
| - EXPECT_EQ(AdblockPlus::WebRequest::NS_OK, jsEngine->Evaluate("foo.status")->AsInt()); |
| - EXPECT_EQ(123, jsEngine->Evaluate("foo.responseStatus")->AsInt()); |
| - EXPECT_EQ("http://example.com/\nX\nY", jsEngine->Evaluate("foo.responseText")->AsString()); |
| - EXPECT_EQ("{\"Foo\":\"Bar\"}", jsEngine->Evaluate("JSON.stringify(foo.responseHeaders)")->AsString()); |
| -} |
| - |
| -TEST_F(MockWebRequestTest, ConnectionIsNotAllowedOnJsEngine) |
| -{ |
| - std::atomic<int> isConnectionAllowedCalledTimes(0); |
| - jsEngine->SetIsConnectionAllowedCallback([&isConnectionAllowedCalledTimes]()->bool |
| - { |
| - ++isConnectionAllowedCalledTimes; |
| - return false; |
| - }); |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - ASSERT_TRUE(jsEngine->Evaluate("this.foo")->IsUndefined()); |
| - AdblockPlus::Sleep(200); |
| - EXPECT_EQ(1, isConnectionAllowedCalledTimes); |
| - EXPECT_EQ(AdblockPlus::WebRequest::NS_ERROR_CONNECTION_REFUSED, jsEngine->Evaluate("foo.status")->AsInt()); |
| - EXPECT_EQ(0, jsEngine->Evaluate("foo.responseStatus")->AsInt()); |
| - EXPECT_EQ("", jsEngine->Evaluate("foo.responseText")->AsString()); |
| - EXPECT_EQ("{}", jsEngine->Evaluate("JSON.stringify(foo.responseHeaders)")->AsString()); |
| -} |
| - |
| -namespace |
| -{ |
| - class SyncStrings |
| - { |
| - public: |
| - void Add(const std::string* value) |
| - { |
| - std::lock_guard<std::mutex> lock(mutex); |
| - strings.emplace_back(!!value, value ? *value : ""); |
| - } |
| - std::vector<std::pair<bool, std::string>> GetStrings() const |
| - { |
| - std::lock_guard<std::mutex> lock(mutex); |
| - return strings; |
| - } |
| - void Clear() |
| - { |
| - std::lock_guard<std::mutex> lock(mutex); |
| - strings.clear(); |
| - } |
| - private: |
| - mutable std::mutex mutex; |
| - std::vector<std::pair<bool, std::string>> strings; |
| - }; |
| -} |
| - |
| -TEST_F(MockWebRequestTest, ConnectionIsAllowedOnFilterEngine1) |
| -{ |
| - FilterEngine::CreationParameters createParams; |
| - std::string predefinedAllowedConnectionType = "non-metered"; |
| - createParams.preconfiguredPrefs.emplace("allowed_connection_type", jsEngine->NewValue(predefinedAllowedConnectionType)); |
| - auto receivedConnectionTypes = std::make_shared<SyncStrings>(); |
| - createParams.isConnectionAllowedCallback = [receivedConnectionTypes](const std::string* allowedConnectionType)->bool { |
| - receivedConnectionTypes->Add(allowedConnectionType); |
| - return true; |
| - }; |
| - auto filterEngine = FilterEngine::Create(jsEngine, createParams); |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - ASSERT_TRUE(jsEngine->Evaluate("this.foo")->IsUndefined()); |
| - AdblockPlus::Sleep(200); |
| - auto receivedConnectionTypesStrings = receivedConnectionTypes->GetStrings(); |
| - EXPECT_FALSE(receivedConnectionTypesStrings.empty()); |
| - for (const auto& connectionType : receivedConnectionTypesStrings) |
| - { |
| - EXPECT_TRUE(connectionType.first); |
| - EXPECT_EQ(predefinedAllowedConnectionType, connectionType.second); |
| - } |
| - EXPECT_EQ(AdblockPlus::WebRequest::NS_OK, jsEngine->Evaluate("foo.status")->AsInt()); |
| - EXPECT_EQ(123, jsEngine->Evaluate("foo.responseStatus")->AsInt()); |
| - EXPECT_EQ("http://example.com/\nX\nY", jsEngine->Evaluate("foo.responseText")->AsString()); |
| - EXPECT_EQ("{\"Foo\":\"Bar\"}", jsEngine->Evaluate("JSON.stringify(foo.responseHeaders)")->AsString()); |
| -} |
| - |
| -TEST_F(MockWebRequestTest, ConnectionIsAllowedOnFilterEngine2) |
| -{ |
| - FilterEngine::CreationParameters createParams; |
| - auto receivedConnectionTypes = std::make_shared<SyncStrings>(); |
| - createParams.isConnectionAllowedCallback = [receivedConnectionTypes](const std::string* allowedConnectionType)->bool { |
| - receivedConnectionTypes->Add(allowedConnectionType); |
| - return true; |
| - }; |
| - auto filterEngine = FilterEngine::Create(jsEngine, createParams); |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - ASSERT_TRUE(jsEngine->Evaluate("this.foo")->IsUndefined()); |
| - AdblockPlus::Sleep(200); |
| - auto receivedConnectionTypesStrings = receivedConnectionTypes->GetStrings(); |
| - EXPECT_FALSE(receivedConnectionTypesStrings.empty()); |
| - for (const auto& connectionType : receivedConnectionTypesStrings) |
| - { |
| - EXPECT_FALSE(connectionType.first); |
| - } |
| - EXPECT_EQ(AdblockPlus::WebRequest::NS_OK, jsEngine->Evaluate("foo.status")->AsInt()); |
| - EXPECT_EQ(123, jsEngine->Evaluate("foo.responseStatus")->AsInt()); |
| - EXPECT_EQ("http://example.com/\nX\nY", jsEngine->Evaluate("foo.responseText")->AsString()); |
| - EXPECT_EQ("{\"Foo\":\"Bar\"}", jsEngine->Evaluate("JSON.stringify(foo.responseHeaders)")->AsString()); |
| -} |
| - |
| -TEST_F(MockWebRequestTest, ConnectionIsAllowedOnFilterEngine3) |
| -{ |
| - // initially allowed connection type is not defined |
| - FilterEngine::CreationParameters createParams; |
| - auto receivedConnectionTypes = std::make_shared<SyncStrings>(); |
| - createParams.isConnectionAllowedCallback = [receivedConnectionTypes](const std::string* allowedConnectionType)->bool { |
| - receivedConnectionTypes->Add(allowedConnectionType); |
| - return true; |
| - }; |
| - auto filterEngine = FilterEngine::Create(jsEngine, createParams); |
| - |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - ASSERT_TRUE(jsEngine->Evaluate("this.foo")->IsUndefined()); |
| - AdblockPlus::Sleep(200); |
| - auto receivedConnectionTypesStrings = receivedConnectionTypes->GetStrings(); |
| - EXPECT_FALSE(receivedConnectionTypesStrings.empty()); |
| - for (const auto& connectionType : receivedConnectionTypesStrings) |
| - { |
| - EXPECT_FALSE(connectionType.first); |
| - } |
| - EXPECT_EQ(AdblockPlus::WebRequest::NS_OK, jsEngine->Evaluate("foo.status")->AsInt()); |
| - EXPECT_EQ(123, jsEngine->Evaluate("foo.responseStatus")->AsInt()); |
| - EXPECT_EQ("http://example.com/\nX\nY", jsEngine->Evaluate("foo.responseText")->AsString()); |
| - EXPECT_EQ("{\"Foo\":\"Bar\"}", jsEngine->Evaluate("JSON.stringify(foo.responseHeaders)")->AsString()); |
| - |
| - // set allowed connection type |
| - std::string allowedConnectionType = "test-connection"; |
| - filterEngine->SetAllowedConnectionType(&allowedConnectionType); |
| - receivedConnectionTypes->Clear(); |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - AdblockPlus::Sleep(200); |
| - receivedConnectionTypesStrings = receivedConnectionTypes->GetStrings(); |
| - EXPECT_FALSE(receivedConnectionTypesStrings.empty()); |
| - for (const auto& connectionType : receivedConnectionTypesStrings) |
| - { |
| - EXPECT_TRUE(connectionType.first); |
| - EXPECT_EQ(allowedConnectionType, connectionType.second); |
| - } |
| - |
| - // remove allowed connection type |
| - filterEngine->SetAllowedConnectionType(nullptr); |
| - receivedConnectionTypes->Clear(); |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - AdblockPlus::Sleep(200); |
| - receivedConnectionTypesStrings = receivedConnectionTypes->GetStrings(); |
| - EXPECT_FALSE(receivedConnectionTypesStrings.empty()); |
| - for (const auto& connectionType : receivedConnectionTypesStrings) |
| - { |
| - EXPECT_FALSE(connectionType.first); |
| - } |
| -} |
| - |
| -TEST_F(MockWebRequestTest, ConnectionIsNotAllowedOnFilterEngine) |
| -{ |
| - FilterEngine::CreationParameters createParams; |
| - std::string predefinedAllowedConnectionType = "non-metered"; |
| - createParams.preconfiguredPrefs.emplace("allowed_connection_type", jsEngine->NewValue(predefinedAllowedConnectionType)); |
| - auto receivedConnectionTypes = std::make_shared<SyncStrings>(); |
| - createParams.isConnectionAllowedCallback = [receivedConnectionTypes](const std::string* allowedConnectionType)->bool { |
| - receivedConnectionTypes->Add(allowedConnectionType); |
| - return false; |
| - }; |
| - auto filterEngine = FilterEngine::Create(jsEngine, createParams); |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - ASSERT_TRUE(jsEngine->Evaluate("this.foo")->IsUndefined()); |
| - AdblockPlus::Sleep(200); |
| - auto receivedConnectionTypesStrings = receivedConnectionTypes->GetStrings(); |
| - EXPECT_FALSE(receivedConnectionTypesStrings.empty()); |
| - for (const auto& connectionType : receivedConnectionTypesStrings) |
| - { |
| - EXPECT_TRUE(connectionType.first); |
| - EXPECT_EQ(predefinedAllowedConnectionType, connectionType.second); |
| - } |
| - EXPECT_EQ(AdblockPlus::WebRequest::NS_ERROR_CONNECTION_REFUSED, jsEngine->Evaluate("foo.status")->AsInt()); |
| - EXPECT_EQ(0, jsEngine->Evaluate("foo.responseStatus")->AsInt()); |
| - EXPECT_EQ("", jsEngine->Evaluate("foo.responseText")->AsString()); |
| - EXPECT_EQ("{}", jsEngine->Evaluate("JSON.stringify(foo.responseHeaders)")->AsString()); |
| -} |
| - |
| #if defined(HAVE_CURL) || defined(_WIN32) |
| TEST_F(DefaultWebRequestTest, RealWebRequest) |
| { |