summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-10 01:06:56 +0000
committercpu@chromium.org <cpu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-10 01:06:56 +0000
commit3f2085b50922a7c325b4c2fd6fb6fdfdabbd9f08 (patch)
tree1f766d28232c459540778d999525445e6bfeca8e
parent65ce83601b722d2e1ad190a23240b2fcee8b0a7a (diff)
downloadchromium_src-3f2085b50922a7c325b4c2fd6fb6fdfdabbd9f08.zip
chromium_src-3f2085b50922a7c325b4c2fd6fb6fdfdabbd9f08.tar.gz
chromium_src-3f2085b50922a7c325b4c2fd6fb6fdfdabbd9f08.tar.bz2
Component updater: Adding test for prodversionmin
BUG=61602 TEST=none Review URL: http://codereview.chromium.org/7849002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100548 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/component_updater/component_updater_service_unittest.cc89
-rw-r--r--chrome/test/data/components/updatecheck_reply_2.xml6
2 files changed, 73 insertions, 22 deletions
diff --git a/chrome/browser/component_updater/component_updater_service_unittest.cc b/chrome/browser/component_updater/component_updater_service_unittest.cc
index 59acb6d..c5cd516 100644
--- a/chrome/browser/component_updater/component_updater_service_unittest.cc
+++ b/chrome/browser/component_updater/component_updater_service_unittest.cc
@@ -118,11 +118,20 @@ const char header_ok_reply[] =
"HTTP/1.1 200 OK\0"
"Content-type: text/html\0"
"\0";
+
+const char expected_crx_url[] =
+ "http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx";
+
} // namespace
// Common fixture for all the component updater tests.
class ComponentUpdaterTest : public testing::Test {
public:
+ enum TestComponents {
+ kTestComponent_abag,
+ kTestComponent_jebg
+ };
+
ComponentUpdaterTest() : component_updater_(NULL), test_config_(NULL) {
// The component updater instance under test.
test_config_ = new TestConfigurator;
@@ -167,6 +176,21 @@ class ComponentUpdaterTest : public testing::Test {
return test_config_;
}
+ void RegisterComponent(CrxComponent* com,
+ TestComponents component,
+ const Version& version) {
+ if (component == kTestComponent_abag) {
+ com->name = "test_abag";
+ com->pk_hash.assign(abag_hash, abag_hash + arraysize(abag_hash));
+ } else {
+ com->name = "test_jebg";
+ com->pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash));
+ }
+ com->version = version;
+ com->installer = new TestInstaller;
+ component_updater_->RegisterComponent(*com);
+ }
+
private:
scoped_ptr<ComponentUpdateService> component_updater_;
FilePath test_data_dir_;
@@ -211,12 +235,7 @@ TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
interceptor(new ComponentUpdateInterceptor());
CrxComponent com;
- com.name = "test_abag";
- com.pk_hash.assign(abag_hash, abag_hash + arraysize(abag_hash));
- com.version = Version("1.1");
- com.installer = new TestInstaller;
-
- component_updater()->RegisterComponent(com);
+ RegisterComponent(&com, kTestComponent_abag, Version("1.1"));
const char expected_update_url[] =
"http://localhost/upd?x=id%3D"
@@ -300,20 +319,10 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
interceptor(new ComponentUpdateInterceptor());
CrxComponent com1;
- com1.name = "test_jebg";
- com1.pk_hash.assign(jebg_hash, jebg_hash + arraysize(jebg_hash));
- com1.version = Version("0.9");
- com1.installer = new TestInstaller;
-
+ RegisterComponent(&com1, kTestComponent_jebg, Version("0.9"));
CrxComponent com2;
- com2.name = "test_abag";
- com2.pk_hash.assign(abag_hash, abag_hash + arraysize(abag_hash));
- com2.version = Version("2.2");
- com2.installer = new TestInstaller;
-
- component_updater()->RegisterComponent(com1);
- component_updater()->RegisterComponent(com2);
-
+ RegisterComponent(&com2, kTestComponent_abag, Version("2.2"));
+
const char expected_update_url_1[] =
"http://localhost/upd?x=id%3D"
"jebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26uc&x=id%3D"
@@ -324,9 +333,6 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
"abagagagagagagagagagagagagagagag%26v%3D2.2%26uc&x=id%3D"
"jebgalgnebhfojomionfpkfelancnnkf%26v%3D1.0%26uc";
- const char expected_crx_url[] =
- "http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx";
-
interceptor->SetResponse(expected_update_url_1, header_ok_reply,
test_file("updatecheck_reply_1.xml"));
interceptor->SetResponse(expected_update_url_2, header_ok_reply,
@@ -362,3 +368,42 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
delete com2.installer;
xmlCleanupGlobals();
}
+
+// This test checks that the "prodversionmin" value is handled correctly. In
+// particular there should not be an install because the minimun product
+// version is much higher than of chrome.
+TEST_F(ComponentUpdaterTest, ProdVersionCheck) {
+ MessageLoop message_loop;
+ BrowserThread ui_thread(BrowserThread::UI, &message_loop);
+ BrowserThread file_thread(BrowserThread::FILE);
+ BrowserThread io_thread(BrowserThread::IO);
+
+ io_thread.StartWithOptions(base::Thread::Options(MessageLoop::TYPE_IO, 0));
+ file_thread.Start();
+
+ scoped_refptr<ComponentUpdateInterceptor>
+ interceptor(new ComponentUpdateInterceptor());
+
+ CrxComponent com;
+ RegisterComponent(&com, kTestComponent_jebg, Version("0.9"));
+
+ const char expected_update_url[] =
+ "http://localhost/upd?x=id%3D"
+ "jebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26uc";
+
+ interceptor->SetResponse(expected_update_url,
+ header_ok_reply,
+ test_file("updatecheck_reply_2.xml"));
+ interceptor->SetResponse(expected_crx_url, header_ok_reply,
+ test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
+
+ test_configurator()->SetLoopCount(1);
+ component_updater()->Start();
+ message_loop.Run();
+
+ EXPECT_EQ(1, interceptor->hit_count());
+ EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
+ EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count());
+
+ component_updater()->Stop();
+}
diff --git a/chrome/test/data/components/updatecheck_reply_2.xml b/chrome/test/data/components/updatecheck_reply_2.xml
new file mode 100644
index 0000000..82689ae
--- /dev/null
+++ b/chrome/test/data/components/updatecheck_reply_2.xml
@@ -0,0 +1,6 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
+ <app appid='jebgalgnebhfojomionfpkfelancnnkf'>
+ <updatecheck codebase='http://localhost/download/jebgalgnebhfojomionfpkfelancnnkf.crx' version='2.0' prodversionmin='55.0.1.0' />
+ </app>
+</gupdate>