TEST_F(UpdateCheckTest, RequestFailure) { webRequest->response.status = AdblockPlus::WebRequest::NS_ERROR_FAILURE; appInfo.name = "1"; appInfo.id = "2"; appInfo.version = "3"; appInfo.application = "4"; appInfo.applicationVersion = "5"; appInfo.developmentBuild = false; Reset(); ForceUpdateCheck(); AdblockPlus::Sleep(100); ASSERT_FALSE(eventCallbackCalled); ASSERT_TRUE(updateCallbackCalled); ASSERT_FALSE(updateError.empty()); std::string expectedUrl(filterEngine->GetPref("update_url_release")->AsString()); std::string platform = jsEngine->Evaluate("require('info').platform")->AsString(); std::string platformVersion = jsEngine->Evaluate("require('info').platformVersion")->AsString(); FindAndReplace(expectedUrl, "%NAME%", appInfo.name); FindAndReplace(expectedUrl, "%TYPE%", "1"); // manual update expectedUrl += "&addonName=" + appInfo.name + "&addonVersion=" + appInfo.version + "&application=" + appInfo.application + "&applicationVersion=" + appInfo.applicationVersion + "&platform=" + platform + "&platformVersion=" + platformVersion + "&lastVersion=0"; ASSERT_EQ(expectedUrl, previousRequestUrl); }
TEST_F(UpdateCheckTest, WrongURL) { webRequest->response.status = AdblockPlus::WebRequest::NS_OK; webRequest->response.responseStatus = 200; webRequest->response.responseText = "{\"1\": {\"version\":\"3.1\",\"url\":\"http://insecure/\"}}"; appInfo.name = "1"; appInfo.version = "3"; appInfo.application = "4"; appInfo.applicationVersion = "2"; appInfo.developmentBuild = true; Reset(); ForceUpdateCheck(); AdblockPlus::Sleep(100); ASSERT_FALSE(eventCallbackCalled); ASSERT_TRUE(updateCallbackCalled); ASSERT_FALSE(updateError.empty()); }
TEST_F(UpdateCheckTest, UpdateAvailable) { webRequest->response.status = AdblockPlus::WebRequest::NS_OK; webRequest->response.responseStatus = 200; webRequest->response.responseText = "{\"1\": {\"version\":\"3.1\",\"url\":\"https://foo.bar/\"}}"; appInfo.name = "1"; appInfo.id = "2"; appInfo.version = "3"; appInfo.application = "4"; appInfo.applicationVersion = "5"; appInfo.developmentBuild = true; Reset(); ForceUpdateCheck(); AdblockPlus::Sleep(100); ASSERT_TRUE(eventCallbackCalled); ASSERT_EQ(1u, eventCallbackParams.size()); ASSERT_EQ("https://foo.bar/", eventCallbackParams[0]->AsString()); ASSERT_TRUE(updateCallbackCalled); ASSERT_TRUE(updateError.empty()); std::string expectedUrl(filterEngine->GetPref("update_url_devbuild")->AsString()); std::string platform = jsEngine->Evaluate("require('info').platform")->AsString(); std::string platformVersion = jsEngine->Evaluate("require('info').platformVersion")->AsString(); FindAndReplace(expectedUrl, "%NAME%", appInfo.name); FindAndReplace(expectedUrl, "%TYPE%", "1"); // manual update expectedUrl += "&addonName=" + appInfo.name + "&addonVersion=" + appInfo.version + "&application=" + appInfo.application + "&applicationVersion=" + appInfo.applicationVersion + "&platform=" + platform + "&platformVersion=" + platformVersion + "&lastVersion=0"; ASSERT_EQ(expectedUrl, previousRequestUrl); }
TEST_F(UpdateCheckTest, ApplicationUpdateAvailable) { webRequest->response.status = AdblockPlus::WebRequest::NS_OK; webRequest->response.responseStatus = 200; webRequest->response.responseText = "{\"1/4\": {\"version\":\"3.1\",\"url\":\"https://foo.bar/\"}}"; appInfo.name = "1"; appInfo.version = "3"; appInfo.application = "4"; appInfo.applicationVersion = "2"; appInfo.developmentBuild = true; Reset(); ForceUpdateCheck(); AdblockPlus::Sleep(100); ASSERT_TRUE(eventCallbackCalled); ASSERT_EQ(1u, eventCallbackParams.size()); ASSERT_EQ("https://foo.bar/", eventCallbackParams[0]->AsString()); ASSERT_TRUE(updateCallbackCalled); ASSERT_TRUE(updateError.empty()); }