diff options
author | fgorski@chromium.org <fgorski@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 02:24:34 +0000 |
---|---|---|
committer | fgorski@chromium.org <fgorski@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 02:24:34 +0000 |
commit | dcfe32a7ea850f1ce29cfe7c4e22ee2336a956cd (patch) | |
tree | baaf95e992fd4a3a270aba4ebf6ff095fa5b9b44 /google_apis/gcm/engine/gservices_settings_unittest.cc | |
parent | 625791699a3cb76b5b161f8cfa83b96b681f73f2 (diff) | |
download | chromium_src-dcfe32a7ea850f1ce29cfe7c4e22ee2336a956cd.zip chromium_src-dcfe32a7ea850f1ce29cfe7c4e22ee2336a956cd.tar.gz chromium_src-dcfe32a7ea850f1ce29cfe7c4e22ee2336a956cd.tar.bz2 |
[GCM] fixing G-settings initialization from an empty store
Adding a test for the problem
Fixing the problem
Adding a minimum checkin interval
BUG=359254
Review URL: https://codereview.chromium.org/252933002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267049 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'google_apis/gcm/engine/gservices_settings_unittest.cc')
-rw-r--r-- | google_apis/gcm/engine/gservices_settings_unittest.cc | 60 |
1 files changed, 58 insertions, 2 deletions
diff --git a/google_apis/gcm/engine/gservices_settings_unittest.cc b/google_apis/gcm/engine/gservices_settings_unittest.cc index ada4194..de756f8 100644 --- a/google_apis/gcm/engine/gservices_settings_unittest.cc +++ b/google_apis/gcm/engine/gservices_settings_unittest.cc @@ -12,7 +12,7 @@ namespace gcm { namespace { -const int64 kAlternativeCheckinInterval = 2000LL; +const int64 kAlternativeCheckinInterval = 16 * 60 * 60; const char kAlternativeCheckinURL[] = "http://alternative.url/checkin"; const char kAlternativeMCSHostname[] = "http://alternative.gcm.host"; const int kAlternativeMCSSecurePort = 443; @@ -121,10 +121,11 @@ class GServicesSettingsTest : public testing::Test { FakeGCMStore& gcm_store() { return gcm_store_; } + std::map<std::string, std::string> alternative_settings_; + private: FakeGCMStore gcm_store_; GServicesSettings gserivces_settings_; - std::map<std::string, std::string> alternative_settings_; }; GServicesSettingsTest::GServicesSettingsTest() @@ -176,6 +177,28 @@ TEST_F(GServicesSettingsTest, DefaultSettingsAndDigest) { EXPECT_EQ(std::string(), settings().digest()); } +// Verifies that settings are not updated when load result is empty. +TEST_F(GServicesSettingsTest, UpdateFromEmptyLoadResult) { + GCMStore::LoadResult result; + result.gservices_digest = "digest_value"; + settings().UpdateFromLoadResult(result); + + CheckAllSetToDefault(); + EXPECT_EQ(std::string(), settings().digest()); +} + +// Verifies that settings are not updated when one of them is missing. +TEST_F(GServicesSettingsTest, UpdateFromLoadResultWithSettingMissing) { + GCMStore::LoadResult result; + result.gservices_settings = alternative_settings(); + result.gservices_digest = "digest_value"; + result.gservices_settings.erase("gcm_hostname"); + settings().UpdateFromLoadResult(result); + + CheckAllSetToDefault(); + EXPECT_EQ(std::string(), settings().digest()); +} + // Verifies that the settings are set correctly based on the load result. TEST_F(GServicesSettingsTest, UpdateFromLoadResult) { GCMStore::LoadResult result; @@ -202,6 +225,39 @@ TEST_F(GServicesSettingsTest, UpdateFromCheckinResponse) { EXPECT_EQ("digest_value", settings().digest()); } +// Verifies that the checkin interval is updated to minimum if the original +// value is less than minimum. +TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseMinimumCheckinInterval) { + checkin_proto::AndroidCheckinResponse checkin_response; + + checkin_response.set_digest("digest_value"); + // Setting the checkin interval to less than minimum. + alternative_settings_["checkin_interval"] = base::IntToString(3600); + SetWithAlternativeSettings(checkin_response); + + settings().UpdateFromCheckinResponse(checkin_response); + EXPECT_TRUE(gcm_store().settings_saved()); + + EXPECT_EQ(GServicesSettings::kMinimumCheckinInterval, + settings().checkin_interval()); + EXPECT_EQ("digest_value", settings().digest()); +} + +// Verifies that settings are not updated when one of them is missing. +TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseWithSettingMissing) { + checkin_proto::AndroidCheckinResponse checkin_response; + + checkin_response.set_digest("digest_value"); + alternative_settings_.erase("gcm_hostname"); + SetWithAlternativeSettings(checkin_response); + + settings().UpdateFromCheckinResponse(checkin_response); + EXPECT_FALSE(gcm_store().settings_saved()); + + CheckAllSetToDefault(); + EXPECT_EQ(std::string(), settings().digest()); +} + // Verifies that no update is done, when a checkin response misses digest. TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseNoDigest) { checkin_proto::AndroidCheckinResponse checkin_response; |