예제 #1
0
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);
}
예제 #2
0
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());
}
예제 #3
0
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);
}
예제 #4
0
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());
}