| Index: chrome/browser/component_updater/test/component_updater_service_unittest.cc
|
| diff --git a/chrome/browser/component_updater/test/component_updater_service_unittest.cc b/chrome/browser/component_updater/test/component_updater_service_unittest.cc
|
| index 693e3e50d783b22614848589be0a162eb47623bf..de1adf409d6221122634b1fd390770beefbb332f 100644
|
| --- a/chrome/browser/component_updater/test/component_updater_service_unittest.cc
|
| +++ b/chrome/browser/component_updater/test/component_updater_service_unittest.cc
|
| @@ -12,7 +12,6 @@
|
| #include "chrome/browser/component_updater/test/test_installer.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "content/public/browser/browser_thread.h"
|
| -#include "content/test/net/url_request_prepackaged_interceptor.h"
|
| #include "libxml/globals.h"
|
| #include "net/base/upload_bytes_element_reader.h"
|
| #include "net/url_request/url_fetcher.h"
|
| @@ -26,6 +25,10 @@ using ::testing::Mock;
|
|
|
| namespace component_updater {
|
|
|
| +#define POST_INTERCEPT_SCHEME "http"
|
| +#define POST_INTERCEPT_HOSTNAME "localhost2"
|
| +#define POST_INTERCEPT_PATH "/update2"
|
| +
|
| MockComponentObserver::MockComponentObserver() {
|
| }
|
|
|
| @@ -75,11 +78,12 @@ int TestConfigurator::OnDemandDelay() {
|
| }
|
|
|
| GURL TestConfigurator::UpdateUrl() {
|
| - return GURL("http://localhost/upd");
|
| + return GURL(POST_INTERCEPT_SCHEME "://"
|
| + POST_INTERCEPT_HOSTNAME POST_INTERCEPT_PATH);
|
| }
|
|
|
| GURL TestConfigurator::PingUrl() {
|
| - return GURL("http://localhost2/update2");
|
| + return UpdateUrl();
|
| }
|
|
|
| const char* TestConfigurator::ExtraRequestParams() { return "extra=foo"; }
|
| @@ -122,12 +126,14 @@ void TestConfigurator::SetQuitClosure(const base::Closure& quit_closure) {
|
|
|
|
|
| InterceptorFactory::InterceptorFactory()
|
| - : URLRequestPostInterceptorFactory("http", "localhost2") {}
|
| + : URLRequestPostInterceptorFactory(POST_INTERCEPT_SCHEME,
|
| + POST_INTERCEPT_HOSTNAME) {}
|
|
|
| InterceptorFactory::~InterceptorFactory() {}
|
|
|
| URLRequestPostInterceptor* InterceptorFactory::CreateInterceptor() {
|
| - return URLRequestPostInterceptorFactory::CreateInterceptor("/update2");
|
| + return URLRequestPostInterceptorFactory::CreateInterceptor(
|
| + base::FilePath::FromUTF8Unsafe(POST_INTERCEPT_PATH));
|
| }
|
|
|
| class PartialMatch : public URLRequestPostInterceptor::RequestMatcher {
|
| @@ -163,11 +169,15 @@ ComponentUpdaterTest::~ComponentUpdaterTest() {
|
| }
|
|
|
| void ComponentUpdaterTest::SetUp() {
|
| + get_interceptor_.reset(new GetInterceptor);
|
| interceptor_factory_.reset(new InterceptorFactory);
|
| + post_interceptor_ = interceptor_factory_->CreateInterceptor();
|
| + EXPECT_TRUE(post_interceptor_);
|
| }
|
|
|
| void ComponentUpdaterTest::TearDown() {
|
| interceptor_factory_.reset();
|
| + get_interceptor_.reset();
|
| xmlCleanupGlobals();
|
| }
|
|
|
| @@ -208,6 +218,12 @@ void ComponentUpdaterTest::RunThreads() {
|
| base::RunLoop runloop;
|
| test_configurator()->SetQuitClosure(runloop.QuitClosure());
|
| runloop.Run();
|
| +
|
| + // Since some tests need to drain currently enqueued tasks such as network
|
| + // intercepts on the IO thread, run the threads until they are
|
| + // idle. The component updater service won't loop again until the loop count
|
| + // is set and the service is started.
|
| + RunThreadsUntilIdle();
|
| }
|
|
|
| void ComponentUpdaterTest::RunThreadsUntilIdle() {
|
| @@ -237,15 +253,22 @@ TEST_F(ComponentUpdaterTest, StartStop) {
|
| // the COMPONENT_UPDATER_STARTED and COMPONENT_UPDATER_SLEEPING notifications
|
| // are generated. No pings are sent.
|
| TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "event eventtype")));
|
| + MockComponentObserver observer;
|
|
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| + EXPECT_CALL(observer,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| + .Times(1);
|
| + EXPECT_CALL(observer,
|
| + OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| + .Times(2);
|
| + EXPECT_CALL(observer,
|
| + OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
|
| + .Times(2);
|
|
|
| - MockComponentObserver observer;
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
|
|
| TestInstaller installer;
|
| CrxComponent com;
|
| @@ -256,68 +279,69 @@ TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
|
| Version("1.1"),
|
| &installer));
|
|
|
| - const GURL expected_update_url(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D1.1%26fp%3D%26uc");
|
| -
|
| - interceptor.SetResponse(expected_update_url,
|
| - test_file("updatecheck_reply_1.xml"));
|
| -
|
| // We loop twice, but there are no updates so we expect two sleep messages.
|
| test_configurator()->SetLoopCount(2);
|
| -
|
| - EXPECT_CALL(observer,
|
| - OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| - .Times(1);
|
| component_updater()->Start();
|
| -
|
| - EXPECT_CALL(observer,
|
| - OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| - .Times(2);
|
| -
|
| - EXPECT_CALL(observer,
|
| - OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
|
| - .Times(2);
|
| RunThreads();
|
|
|
| - EXPECT_EQ(2, interceptor.GetHitCount());
|
| -
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count());
|
|
|
| + // Expect to see the two update check requests and no other requests,
|
| + // including pings.
|
| + EXPECT_EQ(2, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(2, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| component_updater()->Stop();
|
|
|
| // Loop twice again but this case we simulate a server error by returning
|
| - // an empty file.
|
| -
|
| - interceptor.SetResponse(expected_update_url,
|
| - test_file("updatecheck_reply_empty"));
|
| -
|
| - test_configurator()->SetLoopCount(2);
|
| -
|
| + // an empty file. Expect the behavior of the service to be the same as before.
|
| EXPECT_CALL(observer,
|
| OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
|
| .Times(1);
|
| - component_updater()->Start();
|
| -
|
| EXPECT_CALL(observer,
|
| OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
|
| .Times(2);
|
| EXPECT_CALL(observer,
|
| OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
|
| .Times(2);
|
| - RunThreads();
|
|
|
| - EXPECT_EQ(0, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| + post_interceptor_->Reset();
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_empty")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_empty")));
|
|
|
| - EXPECT_EQ(4, interceptor.GetHitCount());
|
| + test_configurator()->SetLoopCount(2);
|
| + component_updater()->Start();
|
| + RunThreads();
|
|
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count());
|
|
|
| + EXPECT_EQ(2, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(2, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| component_updater()->Stop();
|
| }
|
|
|
| @@ -325,22 +349,12 @@ TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
|
| // the notifications above COMPONENT_UPDATE_FOUND and COMPONENT_UPDATE_READY
|
| // should have been fired. We do two loops so the second time around there
|
| // should be nothing left to do.
|
| -// We also check that only 3 non-ping network requests are issued:
|
| +// We also check that the following network requests are issued:
|
| // 1- manifest check
|
| // 2- download crx
|
| -// 3- second manifest check.
|
| -// Only one ping is sent.
|
| +// 3- ping
|
| +// 4- second manifest check.
|
| TEST_F(ComponentUpdaterTest, InstallCrx) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"1\" "
|
| - "previousversion=\"0.9\" nextversion=\"1.0\"/></o:app>")));
|
| -
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| -
|
| MockComponentObserver observer1;
|
| {
|
| InSequence seq;
|
| @@ -387,6 +401,16 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
|
| .Times(1);
|
| }
|
|
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| +
|
| + get_interceptor_->SetResponse(
|
| + GURL(expected_crx_url),
|
| + test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| +
|
| TestInstaller installer1;
|
| CrxComponent com1;
|
| com1.observer = &observer1;
|
| @@ -396,25 +420,7 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
|
| com2.observer = &observer2;
|
| RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2);
|
|
|
| - const GURL expected_update_url_1(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
|
| -
|
| - const GURL expected_update_url_2(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D1.0%26fp%3D%26uc");
|
| -
|
| - interceptor.SetResponse(expected_update_url_1,
|
| - test_file("updatecheck_reply_1.xml"));
|
| - interceptor.SetResponse(expected_update_url_2,
|
| - test_file("updatecheck_reply_1.xml"));
|
| - interceptor.SetResponse(GURL(expected_crx_url),
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| -
|
| test_configurator()->SetLoopCount(2);
|
| -
|
| component_updater()->Start();
|
| RunThreads();
|
|
|
| @@ -423,12 +429,37 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count());
|
|
|
| - EXPECT_EQ(3, interceptor.GetHitCount());
|
| -
|
| - EXPECT_EQ(1, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| + // Expect three request in total: two update checks and one ping.
|
| + EXPECT_EQ(3, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(3, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| + // Expect one component download.
|
| + EXPECT_EQ(1, get_interceptor_->GetHitCount());
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"2.2\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
|
| + "version=\"0.9\" nextversion=\"1.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"1\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
|
| + "<updatecheck /></app>"));
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
|
| + "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"2.2\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
|
|
| component_updater()->Stop();
|
| }
|
| @@ -437,34 +468,29 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
|
| // particular there should not be an install because the minimum product
|
| // version is much higher than of chrome.
|
| TEST_F(ComponentUpdaterTest, ProdVersionCheck) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "event eventtype")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_2.xml")));
|
|
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| + get_interceptor_->SetResponse(
|
| + GURL(expected_crx_url),
|
| + test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
|
|
| TestInstaller installer;
|
| CrxComponent com;
|
| RegisterComponent(&com, kTestComponent_jebg, Version("0.9"), &installer);
|
|
|
| - const GURL expected_update_url(
|
| - "http://localhost/upd?extra=foo&x=id%3D"
|
| - "jebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc");
|
| -
|
| - interceptor.SetResponse(expected_update_url,
|
| - test_file("updatecheck_reply_2.xml"));
|
| - interceptor.SetResponse(GURL(expected_crx_url),
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| -
|
| test_configurator()->SetLoopCount(1);
|
| component_updater()->Start();
|
| RunThreads();
|
|
|
| - EXPECT_EQ(0, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(1, interceptor.GetHitCount());
|
| + // Expect one update check and no ping.
|
| + EXPECT_EQ(1, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(1, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| + // Expect no download to occur.
|
| + EXPECT_EQ(0, get_interceptor_->GetHitCount());
|
|
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count());
|
| @@ -479,16 +505,6 @@ TEST_F(ComponentUpdaterTest, ProdVersionCheck) {
|
| // - We make an on demand call.
|
| // - This triggers a second loop, which has a reply that triggers an install.
|
| TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"1\" "
|
| - "previousversion=\"0.9\" nextversion=\"1.0\"/></o:app>")));
|
| -
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| -
|
| MockComponentObserver observer1;
|
| {
|
| InSequence seq;
|
| @@ -541,6 +557,13 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
|
| .Times(1);
|
| }
|
|
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_empty")));
|
| +
|
| + get_interceptor_->SetResponse(
|
| + GURL(expected_crx_url),
|
| + test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| +
|
| TestInstaller installer1;
|
| CrxComponent com1;
|
| com1.observer = &observer1;
|
| @@ -550,30 +573,25 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
|
| com2.observer = &observer2;
|
| RegisterComponent(&com2, kTestComponent_jebg, Version("0.9"), &installer2);
|
|
|
| - const GURL expected_update_url_1(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc");
|
| -
|
| - const GURL expected_update_url_2(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc"
|
| - "%26installsource%3Dondemand"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
|
| -
|
| - interceptor.SetResponse(expected_update_url_1,
|
| - test_file("updatecheck_reply_empty"));
|
| - interceptor.SetResponse(expected_update_url_2,
|
| - test_file("updatecheck_reply_1.xml"));
|
| - interceptor.SetResponse(GURL(expected_crx_url),
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| // No update normally.
|
| test_configurator()->SetLoopCount(1);
|
| component_updater()->Start();
|
| RunThreads();
|
| component_updater()->Stop();
|
|
|
| + EXPECT_EQ(1, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(1, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| + EXPECT_EQ(0, get_interceptor_->GetHitCount());
|
| +
|
| // Update after an on-demand check is issued.
|
| + post_interceptor_->Reset();
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| +
|
| EXPECT_EQ(ComponentUpdateService::kOk,
|
| OnDemandTester::OnDemand(component_updater(),
|
| GetCrxComponentID(com2)));
|
| @@ -586,7 +604,28 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
|
| EXPECT_EQ(1, static_cast<TestInstaller*>(com2.installer)->install_count());
|
|
|
| - EXPECT_EQ(3, interceptor.GetHitCount());
|
| + EXPECT_EQ(2, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(2, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| + EXPECT_EQ(1, get_interceptor_->GetHitCount());
|
| +
|
| + // Expect the update check to contain an "ondemand" request for the
|
| + // second component (com2) and a normal request for the other component.
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"abagagagagagagagagagagagagagagag\" "
|
| + "version=\"2.2\"><updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
|
| + "version=\"0.9\" installsource=\"ondemand\"><updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
|
| + "version=\"0.9\" nextversion=\"1.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"1\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
|
|
| // Also check what happens if previous check too soon.
|
| test_configurator()->SetOnDemandTime(60 * 60);
|
| @@ -626,24 +665,24 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
|
| .Times(1);
|
| }
|
|
|
| - const GURL expected_update_url_3(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D1.0%26fp%3D%26uc"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
|
| -
|
| // No update: error from no server response
|
| - interceptor.SetResponse(expected_update_url_3,
|
| - test_file("updatecheck_reply_empty"));
|
| + post_interceptor_->Reset();
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_empty")));
|
| +
|
| test_configurator()->SetLoopCount(1);
|
| component_updater()->Start();
|
| EXPECT_EQ(ComponentUpdateService::kOk,
|
| OnDemandTester::OnDemand(component_updater(),
|
| GetCrxComponentID(com2)));
|
| -
|
| RunThreads();
|
| -
|
| component_updater()->Stop();
|
|
|
| + EXPECT_EQ(1, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(1, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| // No update: already updated to 1.0 so nothing new
|
| EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
|
| {
|
| @@ -672,20 +711,21 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
|
| .Times(1);
|
| }
|
|
|
| - interceptor.SetResponse(expected_update_url_3,
|
| - test_file("updatecheck_reply_1.xml"));
|
| + post_interceptor_->Reset();
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| +
|
| test_configurator()->SetLoopCount(1);
|
| component_updater()->Start();
|
| EXPECT_EQ(ComponentUpdateService::kOk,
|
| OnDemandTester::OnDemand(component_updater(),
|
| GetCrxComponentID(com2)));
|
| -
|
| RunThreads();
|
|
|
| - EXPECT_EQ(1, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| + EXPECT_EQ(1, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(1, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
|
|
| component_updater()->Stop();
|
| }
|
| @@ -693,16 +733,6 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
|
| // Verify that a previously registered component can get re-registered
|
| // with a different version.
|
| TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"1\" "
|
| - "previousversion=\"0.9\" nextversion=\"1.0\"/></o:app>")));
|
| -
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| -
|
| MockComponentObserver observer1;
|
| {
|
| InSequence seq;
|
| @@ -749,6 +779,16 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| .Times(1);
|
| }
|
|
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| +
|
| + get_interceptor_->SetResponse(
|
| + GURL(expected_crx_url),
|
| + test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| +
|
| TestInstaller installer1;
|
| CrxComponent com1;
|
| com1.observer = &observer1;
|
| @@ -758,28 +798,9 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| com2.observer = &observer2;
|
| RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2);
|
|
|
| - // Start with 0.9, and update to 1.0
|
| - const GURL expected_update_url_1(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
|
| -
|
| - const GURL expected_update_url_2(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D1.0%26fp%3D%26uc");
|
| -
|
| - interceptor.SetResponse(expected_update_url_1,
|
| - test_file("updatecheck_reply_1.xml"));
|
| - interceptor.SetResponse(expected_update_url_2,
|
| - test_file("updatecheck_reply_1.xml"));
|
| - interceptor.SetResponse(GURL(expected_crx_url),
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| -
|
| - // Loop twice to issue two checks: (1) with original 0.9 version
|
| - // and (2) with the updated 1.0 version.
|
| + // Loop twice to issue two checks: (1) with original 0.9 version, update to
|
| + // 1.0, and do the second check (2) with the updated 1.0 version.
|
| test_configurator()->SetLoopCount(2);
|
| -
|
| component_updater()->Start();
|
| RunThreads();
|
|
|
| @@ -788,12 +809,23 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count());
|
|
|
| - EXPECT_EQ(1, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| -
|
| - EXPECT_EQ(3, interceptor.GetHitCount());
|
| + EXPECT_EQ(3, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(1, get_interceptor_->GetHitCount());
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
|
| + "version=\"0.9\" nextversion=\"1.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"1\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
|
|
| component_updater()->Stop();
|
|
|
| @@ -826,6 +858,10 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| .Times(1);
|
| }
|
|
|
| + post_interceptor_->Reset();
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| +
|
| TestInstaller installer3;
|
| EXPECT_EQ(ComponentUpdateService::kReplaced,
|
| RegisterComponent(&com1,
|
| @@ -833,35 +869,27 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| Version("2.2"),
|
| &installer3));
|
|
|
| - // Check that we send out 2.2 as our version.
|
| - // Interceptor's hit count should go up by 1.
|
| - const GURL expected_update_url_3(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D2.2%26fp%3D%26uc"
|
| - "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
|
| -
|
| - interceptor.SetResponse(expected_update_url_3,
|
| - test_file("updatecheck_reply_1.xml"));
|
| -
|
| // Loop once just to notice the check happening with the re-register version.
|
| test_configurator()->SetLoopCount(1);
|
| component_updater()->Start();
|
| RunThreads();
|
|
|
| - EXPECT_EQ(4, interceptor.GetHitCount());
|
| -
|
| - // No additional pings are expected.
|
| - EXPECT_EQ(1, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| -
|
| // We created a new installer, so the counts go back to 0.
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->error());
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->install_count());
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count());
|
|
|
| + // One update check and no additional pings are expected.
|
| + EXPECT_EQ(1, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(1, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"2.2\">"
|
| + "<updatecheck /></app>"));
|
| +
|
| component_updater()->Stop();
|
| }
|
|
|
| @@ -877,67 +905,63 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
|
| // There should be two pings, one for each update. The second will bear a
|
| // diffresult=1, while the first will not.
|
| TEST_F(ComponentUpdaterTest, DifferentialUpdate) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"1\" "
|
| - "previousversion=\"0.0\" nextversion=\"1.0\" nextfp=\"1\"/></o:app>")));
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"1\" "
|
| - "previousversion=\"1.0\" nextversion=\"2.0\" "
|
| - "diffresult=\"1\" previousfp=\"1\" nextfp=\"f22\"/></o:app>")));
|
| -
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_diff_reply_1.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_diff_reply_2.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_diff_reply_3.xml")));
|
| +
|
| + get_interceptor_->SetResponse(
|
| + GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"),
|
| + test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
|
| + get_interceptor_->SetResponse(
|
| + GURL("http://localhost/download/"
|
| + "ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"),
|
| + test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"));
|
|
|
| VersionedTestInstaller installer;
|
| CrxComponent com;
|
| RegisterComponent(&com, kTestComponent_ihfo, Version("0.0"), &installer);
|
|
|
| - const GURL expected_update_url_0(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D0.0%26fp%3D%26uc");
|
| - const GURL expected_update_url_1(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D1.0%26fp%3D1%26uc");
|
| - const GURL expected_update_url_2(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D2.0%26fp%3Df22%26uc");
|
| - const GURL expected_crx_url_1(
|
| - "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx");
|
| - const GURL expected_crx_url_1_diff_2(
|
| - "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx");
|
| -
|
| - interceptor.SetResponse(expected_update_url_0,
|
| - test_file("updatecheck_diff_reply_1.xml"));
|
| - interceptor.SetResponse(expected_update_url_1,
|
| - test_file("updatecheck_diff_reply_2.xml"));
|
| - interceptor.SetResponse(expected_update_url_2,
|
| - test_file("updatecheck_diff_reply_3.xml"));
|
| - interceptor.SetResponse(expected_crx_url_1,
|
| - test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
|
| - interceptor.SetResponse(
|
| - expected_crx_url_1_diff_2,
|
| - test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"));
|
| -
|
| test_configurator()->SetLoopCount(3);
|
| -
|
| component_updater()->Start();
|
| RunThreads();
|
|
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
|
| EXPECT_EQ(2, static_cast<TestInstaller*>(com.installer)->install_count());
|
|
|
| - // One ping has the diffresult=1, the other does not.
|
| - EXPECT_EQ(2, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| -
|
| - EXPECT_EQ(5, interceptor.GetHitCount());
|
| -
|
| + EXPECT_EQ(5, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(5, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(2, get_interceptor_->GetHitCount());
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"0.0\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
|
| + "version=\"0.0\" nextversion=\"1.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"1\" nextfp=\"1\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
|
| + "<updatecheck /><packages><package fp=\"1\"/></packages></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[3].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
|
| + "version=\"1.0\" nextversion=\"2.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"1\" diffresult=\"1\" "
|
| + "previousfp=\"1\" nextfp=\"22\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[4].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
|
| + "<updatecheck /><packages><package fp=\"22\"/></packages></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| component_updater()->Stop();
|
| }
|
|
|
| @@ -952,49 +976,28 @@ TEST_F(ComponentUpdaterTest, DifferentialUpdate) {
|
| // 4- update check (loop 2 - no update available)
|
| // There should be one ping for the first attempted update.
|
| TEST_F(ComponentUpdaterTest, DifferentialUpdateFails) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"1\" "
|
| - "previousversion=\"1.0\" nextversion=\"2.0\" "
|
| - "diffresult=\"0\" differrorcat=\"2\" differrorcode=\"16\" "
|
| - "nextfp=\"f22\"/></o:app>")));
|
| -
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_diff_reply_2.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_diff_reply_3.xml")));
|
| +
|
| + get_interceptor_->SetResponse(
|
| + GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"),
|
| + test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
|
| + get_interceptor_->SetResponse(
|
| + GURL("http://localhost/download/"
|
| + "ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"),
|
| + test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"));
|
| + get_interceptor_->SetResponse(
|
| + GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"),
|
| + test_file("ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"));
|
|
|
| TestInstaller installer;
|
| CrxComponent com;
|
| RegisterComponent(&com, kTestComponent_ihfo, Version("1.0"), &installer);
|
|
|
| - const GURL expected_update_url_1(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D1.0%26fp%3D%26uc");
|
| - const GURL expected_update_url_2(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D2.0%26fp%3Df22%26uc");
|
| - const GURL expected_crx_url_1(
|
| - "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx");
|
| - const GURL expected_crx_url_1_diff_2(
|
| - "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx");
|
| - const GURL expected_crx_url_2(
|
| - "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx");
|
| -
|
| - interceptor.SetResponse(expected_update_url_1,
|
| - test_file("updatecheck_diff_reply_2.xml"));
|
| - interceptor.SetResponse(expected_update_url_2,
|
| - test_file("updatecheck_diff_reply_3.xml"));
|
| - interceptor.SetResponse(expected_crx_url_1,
|
| - test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
|
| - interceptor.SetResponse(
|
| - expected_crx_url_1_diff_2,
|
| - test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"));
|
| - interceptor.SetResponse(expected_crx_url_2,
|
| - test_file("ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"));
|
| -
|
| test_configurator()->SetLoopCount(2);
|
| -
|
| component_updater()->Start();
|
| RunThreads();
|
|
|
| @@ -1002,34 +1005,32 @@ TEST_F(ComponentUpdaterTest, DifferentialUpdateFails) {
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
|
| EXPECT_EQ(1, static_cast<TestInstaller*>(com.installer)->install_count());
|
|
|
| - EXPECT_EQ(1, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| -
|
| - EXPECT_EQ(4, interceptor.GetHitCount());
|
| + EXPECT_EQ(3, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(3, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(2, get_interceptor_->GetHitCount());
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
|
| + "version=\"1.0\" nextversion=\"2.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"1\" diffresult=\"0\" "
|
| + "differrorcat=\"2\" differrorcode=\"16\" nextfp=\"22\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
|
| + "<updatecheck /><packages><package fp=\"22\"/></packages></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
|
|
| component_updater()->Stop();
|
| }
|
|
|
| // Verify that a failed installation causes an install failure ping.
|
| TEST_F(ComponentUpdaterTest, CheckFailedInstallPing) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"0\" "
|
| - "previousversion=\"0.9\" nextversion=\"1.0\" "
|
| - "errorcat=\"3\" errorcode=\"9\"/></o:app>")));
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"0\" "
|
| - "previousversion=\"0.9\" nextversion=\"1.0\" "
|
| - "errorcat=\"3\" errorcode=\"9\"/></o:app>")));
|
| -
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| -
|
| // This test installer reports installation failure.
|
| class : public TestInstaller {
|
| virtual bool Install(const base::DictionaryValue& manifest,
|
| @@ -1040,30 +1041,58 @@ TEST_F(ComponentUpdaterTest, CheckFailedInstallPing) {
|
| }
|
| } installer;
|
|
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_1.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + get_interceptor_->SetResponse(
|
| + GURL(expected_crx_url),
|
| + test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| +
|
| + // Start with 0.9, and attempt update to 1.0.
|
| + // Loop twice to issue two checks: (1) with original 0.9 version
|
| + // and (2), which should retry with 0.9.
|
| CrxComponent com;
|
| RegisterComponent(&com, kTestComponent_jebg, Version("0.9"), &installer);
|
|
|
| - // Start with 0.9, and attempt update to 1.0
|
| - const GURL expected_update_url_1(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc");
|
| -
|
| - interceptor.SetResponse(expected_update_url_1,
|
| - test_file("updatecheck_reply_1.xml"));
|
| - interceptor.SetResponse(GURL(expected_crx_url),
|
| - test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
|
| -
|
| - // Loop twice to issue two checks: (1) with original 0.9 version
|
| - // and (2), which should retry with 0.9.
|
| test_configurator()->SetLoopCount(2);
|
| component_updater()->Start();
|
| RunThreads();
|
|
|
| + EXPECT_EQ(4, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(2, get_interceptor_->GetHitCount());
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
|
| + "version=\"0.9\" nextversion=\"1.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"0\" "
|
| + "errorcat=\"3\" errorcode=\"9\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[3].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
|
| + "version=\"0.9\" nextversion=\"1.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"0\" "
|
| + "errorcat=\"3\" errorcode=\"9\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| +
|
| // Loop once more, but expect no ping because a noupdate response is issued.
|
| // This is necessary to clear out the fire-and-forget ping from the previous
|
| // iteration.
|
| - interceptor.SetResponse(expected_update_url_1,
|
| - test_file("updatecheck_reply_noupdate.xml"));
|
| + post_interceptor_->Reset();
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_reply_noupdate.xml")));
|
| +
|
| test_configurator()->SetLoopCount(1);
|
| component_updater()->Start();
|
| RunThreads();
|
| @@ -1071,12 +1100,15 @@ TEST_F(ComponentUpdaterTest, CheckFailedInstallPing) {
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
|
| EXPECT_EQ(2, static_cast<TestInstaller*>(com.installer)->install_count());
|
|
|
| - EXPECT_EQ(2, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| + EXPECT_EQ(1, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(1, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
|
|
| - EXPECT_EQ(5, interceptor.GetHitCount());
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
|
|
| component_updater()->Stop();
|
| }
|
| @@ -1085,74 +1117,73 @@ TEST_F(ComponentUpdaterTest, CheckFailedInstallPing) {
|
| // ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx contains an incorrect
|
| // patching instruction that should fail.
|
| TEST_F(ComponentUpdaterTest, DifferentialUpdateFailErrorcode) {
|
| - URLRequestPostInterceptor* post_interceptor(
|
| - interceptor_factory_->CreateInterceptor());
|
| - EXPECT_TRUE(post_interceptor != NULL);
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"1\" "
|
| - "previousversion=\"0.0\" nextversion=\"1.0\" nextfp=\"1\"/></o:app>")));
|
| - EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
|
| - "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
|
| - "<o:event eventtype=\"3\" eventresult=\"1\" "
|
| - "previousversion=\"1.0\" nextversion=\"2.0\" "
|
| - "diffresult=\"0\" differrorcat=\"2\" "
|
| - "differrorcode=\"14\" diffextracode1=\"305\" "
|
| - "previousfp=\"1\" nextfp=\"f22\"/></o:app>")));
|
| -
|
| - content::URLLocalHostRequestPrepackagedInterceptor interceptor;
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_diff_reply_1.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_diff_reply_2.xml")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
|
| + EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
|
| + "updatecheck"), test_file("updatecheck_diff_reply_3.xml")));
|
| +
|
| + get_interceptor_->SetResponse(
|
| + GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"),
|
| + test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
|
| + // This intercept returns a different file than what is specified in the
|
| + // update check response and requested in the download. The file that is
|
| + // actually dowloaded contains a patching error, an therefore, an error
|
| + // is injected at the time of patching.
|
| + get_interceptor_->SetResponse(
|
| + GURL("http://localhost/download/"
|
| + "ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"),
|
| + test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx"));
|
| + get_interceptor_->SetResponse(
|
| + GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"),
|
| + test_file("ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"));
|
|
|
| VersionedTestInstaller installer;
|
| CrxComponent com;
|
| RegisterComponent(&com, kTestComponent_ihfo, Version("0.0"), &installer);
|
|
|
| - const GURL expected_update_url_0(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D0.0%26fp%3D%26uc");
|
| - const GURL expected_update_url_1(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D1.0%26fp%3D1%26uc");
|
| - const GURL expected_update_url_2(
|
| - "http://localhost/upd?extra=foo"
|
| - "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D2.0%26fp%3Df22%26uc");
|
| - const GURL expected_crx_url_1(
|
| - "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx");
|
| - const GURL expected_crx_url_1_diff_2(
|
| - "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx");
|
| - const GURL expected_crx_url_2(
|
| - "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx");
|
| -
|
| - interceptor.SetResponse(expected_update_url_0,
|
| - test_file("updatecheck_diff_reply_1.xml"));
|
| - interceptor.SetResponse(expected_update_url_1,
|
| - test_file("updatecheck_diff_reply_2.xml"));
|
| - interceptor.SetResponse(expected_update_url_2,
|
| - test_file("updatecheck_diff_reply_3.xml"));
|
| - interceptor.SetResponse(expected_crx_url_1,
|
| - test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
|
| - interceptor.SetResponse(
|
| - expected_crx_url_1_diff_2,
|
| - test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx"));
|
| - interceptor.SetResponse(expected_crx_url_2,
|
| - test_file("ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"));
|
| -
|
| - test_configurator()->SetLoopCount(2);
|
| -
|
| + test_configurator()->SetLoopCount(3);
|
| component_updater()->Start();
|
| RunThreads();
|
| component_updater()->Stop();
|
| - // There may still be pings in the queue.
|
| - RunThreadsUntilIdle();
|
|
|
| EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
|
| EXPECT_EQ(2, static_cast<TestInstaller*>(com.installer)->install_count());
|
|
|
| - EXPECT_EQ(2, post_interceptor->GetHitCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| - EXPECT_EQ(0, post_interceptor->GetMissCount())
|
| - << post_interceptor->GetRequestsAsString();
|
| -
|
| - EXPECT_EQ(5, interceptor.GetHitCount());
|
| + EXPECT_EQ(5, post_interceptor_->GetHitCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(5, post_interceptor_->GetCount())
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_EQ(3, get_interceptor_->GetHitCount());
|
| +
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"0.0\">"
|
| + "<updatecheck /></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
|
| + "version=\"0.0\" nextversion=\"1.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"1\" nextfp=\"1\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
|
| + "<updatecheck /><packages><package fp=\"1\"/></packages></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[3].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
|
| + "version=\"1.0\" nextversion=\"2.0\">"
|
| + "<event eventtype=\"3\" eventresult=\"1\" "
|
| + "diffresult=\"0\" differrorcat=\"2\" "
|
| + "differrorcode=\"14\" diffextracode1=\"305\" "
|
| + "previousfp=\"1\" nextfp=\"22\"/></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| + EXPECT_NE(string::npos, post_interceptor_->GetRequests()[4].find(
|
| + "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
|
| + "<updatecheck /><packages><package fp=\"22\"/></packages></app>"))
|
| + << post_interceptor_->GetRequestsAsString();
|
| }
|
|
|
| } // namespace component_updater
|
|
|