Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: google_apis/gcm/engine/gservices_settings_unittest.cc

Issue 288433002: G-services settings v3 implementation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressing feedback from Jian Li Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/strings/string_number_conversions.h" 5 #include "base/strings/string_number_conversions.h"
6 #include "google_apis/gcm/engine/gservices_settings.h" 6 #include "google_apis/gcm/engine/gservices_settings.h"
7 #include "google_apis/gcm/engine/registration_info.h" 7 #include "google_apis/gcm/engine/registration_info.h"
8 #include "google_apis/gcm/gcm_client.h" 8 #include "google_apis/gcm/gcm_client.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 namespace gcm { 11 namespace gcm {
12 12
13 namespace { 13 namespace {
14 14
15 const int64 kAlternativeCheckinInterval = 16 * 60 * 60; 15 const int64 kAlternativeCheckinInterval = 16 * 60 * 60;
16 const char kAlternativeCheckinURL[] = "http://alternative.url/checkin"; 16 const char kAlternativeCheckinURL[] = "http://alternative.url/checkin";
17 const char kAlternativeMCSHostname[] = "alternative.gcm.host"; 17 const char kAlternativeMCSHostname[] = "alternative.gcm.host";
18 const int kAlternativeMCSSecurePort = 7777; 18 const int kAlternativeMCSSecurePort = 7777;
19 const char kAlternativeRegistrationURL[] = 19 const char kAlternativeRegistrationURL[] =
20 "http://alternative.url/registration"; 20 "http://alternative.url/registration";
21 21
22 const int64 kDefaultCheckinInterval = 2 * 24 * 60 * 60; // seconds = 2 days. 22 const int64 kDefaultCheckinInterval = 2 * 24 * 60 * 60; // seconds = 2 days.
23 const char kDefaultCheckinURL[] = "https://android.clients.google.com/checkin"; 23 const char kDefaultCheckinURL[] = "https://android.clients.google.com/checkin";
24 const char kDefaultRegistrationURL[] = 24 const char kDefaultRegistrationURL[] =
25 "https://android.clients.google.com/c2dm/register3"; 25 "https://android.clients.google.com/c2dm/register3";
26 const char kDefaultSettingsDigest[] =
27 "1-4C598686664FF131F439C522AB7B355A65819B1F";
28 const char kAlternativeSettingsDigest[] =
29 "1-7DA4AA4EB38A8BD3E330E3751CC0899924499134";
26 30
27 } // namespace 31 } // namespace
28 32
29 class GServicesSettingsTest : public testing::Test { 33 class GServicesSettingsTest : public testing::Test {
30 public: 34 public:
31 GServicesSettingsTest(); 35 GServicesSettingsTest();
32 virtual ~GServicesSettingsTest(); 36 virtual ~GServicesSettingsTest();
33 37
34 virtual void SetUp() OVERRIDE; 38 virtual void SetUp() OVERRIDE;
35 39
(...skipping 27 matching lines...) Expand all
63 base::Int64ToString(kAlternativeCheckinInterval); 67 base::Int64ToString(kAlternativeCheckinInterval);
64 alternative_settings_["checkin_url"] = kAlternativeCheckinURL; 68 alternative_settings_["checkin_url"] = kAlternativeCheckinURL;
65 alternative_settings_["gcm_hostname"] = kAlternativeMCSHostname; 69 alternative_settings_["gcm_hostname"] = kAlternativeMCSHostname;
66 alternative_settings_["gcm_secure_port"] = 70 alternative_settings_["gcm_secure_port"] =
67 base::IntToString(kAlternativeMCSSecurePort); 71 base::IntToString(kAlternativeMCSSecurePort);
68 alternative_settings_["gcm_registration_url"] = kAlternativeRegistrationURL; 72 alternative_settings_["gcm_registration_url"] = kAlternativeRegistrationURL;
69 } 73 }
70 74
71 void GServicesSettingsTest::CheckAllSetToDefault() { 75 void GServicesSettingsTest::CheckAllSetToDefault() {
72 EXPECT_EQ(base::TimeDelta::FromSeconds(kDefaultCheckinInterval), 76 EXPECT_EQ(base::TimeDelta::FromSeconds(kDefaultCheckinInterval),
73 settings().checkin_interval()); 77 settings().GetCheckinInterval());
74 EXPECT_EQ(GURL(kDefaultCheckinURL), settings().checkin_url()); 78 EXPECT_EQ(GURL(kDefaultCheckinURL), settings().GetCheckinURL());
75 EXPECT_EQ(GURL("https://mtalk.google.com:5228"), 79 EXPECT_EQ(GURL("https://mtalk.google.com:5228"),
76 settings().mcs_main_endpoint()); 80 settings().GetMCSMainEndpoint());
77 EXPECT_EQ(GURL("https://mtalk.google.com:443"), 81 EXPECT_EQ(GURL("https://mtalk.google.com:443"),
78 settings().mcs_fallback_endpoint()); 82 settings().GetMCSFallbackEndpoint());
79 EXPECT_EQ(GURL(kDefaultRegistrationURL), settings().registration_url()); 83 EXPECT_EQ(GURL(kDefaultRegistrationURL), settings().GetRegistrationURL());
80 } 84 }
81 85
82 void GServicesSettingsTest::CheckAllSetToAlternative() { 86 void GServicesSettingsTest::CheckAllSetToAlternative() {
83 EXPECT_EQ(base::TimeDelta::FromSeconds(kAlternativeCheckinInterval), 87 EXPECT_EQ(base::TimeDelta::FromSeconds(kAlternativeCheckinInterval),
84 settings().checkin_interval()); 88 settings().GetCheckinInterval());
85 EXPECT_EQ(GURL(kAlternativeCheckinURL), settings().checkin_url()); 89 EXPECT_EQ(GURL(kAlternativeCheckinURL), settings().GetCheckinURL());
86 EXPECT_EQ(GURL("https://alternative.gcm.host:7777"), 90 EXPECT_EQ(GURL("https://alternative.gcm.host:7777"),
87 settings().mcs_main_endpoint()); 91 settings().GetMCSMainEndpoint());
88 EXPECT_EQ(GURL("https://alternative.gcm.host:443"), 92 EXPECT_EQ(GURL("https://alternative.gcm.host:443"),
89 settings().mcs_fallback_endpoint()); 93 settings().GetMCSFallbackEndpoint());
90 EXPECT_EQ(GURL(kAlternativeRegistrationURL), settings().registration_url()); 94 EXPECT_EQ(GURL(kAlternativeRegistrationURL), settings().GetRegistrationURL());
91 } 95 }
92 96
93 void GServicesSettingsTest::SetWithAlternativeSettings( 97 void GServicesSettingsTest::SetWithAlternativeSettings(
94 checkin_proto::AndroidCheckinResponse& checkin_response) { 98 checkin_proto::AndroidCheckinResponse& checkin_response) {
99 checkin_response.set_settings_diff(false);
95 for (std::map<std::string, std::string>::const_iterator iter = 100 for (std::map<std::string, std::string>::const_iterator iter =
96 alternative_settings_.begin(); 101 alternative_settings_.begin();
97 iter != alternative_settings_.end(); ++iter) { 102 iter != alternative_settings_.end(); ++iter) {
98 checkin_proto::GservicesSetting* setting = checkin_response.add_setting(); 103 checkin_proto::GservicesSetting* setting = checkin_response.add_setting();
99 setting->set_name(iter->first); 104 setting->set_name(iter->first);
100 setting->set_value(iter->second); 105 setting->set_value(iter->second);
101 } 106 }
102 } 107 }
103 108
104 // Verifies default values of the G-services settings and settings digest. 109 // Verifies default values of the G-services settings and settings digest.
105 TEST_F(GServicesSettingsTest, DefaultSettingsAndDigest) { 110 TEST_F(GServicesSettingsTest, DefaultSettingsAndDigest) {
106 CheckAllSetToDefault(); 111 CheckAllSetToDefault();
107 EXPECT_EQ(std::string(), settings().digest()); 112 EXPECT_EQ(kDefaultSettingsDigest, settings().digest());
113 }
114
115 // Verifies digest calculation for default settings.
116 TEST_F(GServicesSettingsTest, CalculateDigestForDefaultSettings) {
117 CheckAllSetToDefault();
118 EXPECT_EQ(kDefaultSettingsDigest,
119 GServicesSettings::CalculateDigest(settings().get_settings_map()));
120 }
121
122 // Verifies digest calculation for aternative settings.
123 TEST_F(GServicesSettingsTest, CalculateDigestForAternativeSettings) {
124 EXPECT_EQ(kAlternativeSettingsDigest,
125 GServicesSettings::CalculateDigest(alternative_settings_));
108 } 126 }
109 127
110 // Verifies that settings are not updated when load result is empty. 128 // Verifies that settings are not updated when load result is empty.
111 TEST_F(GServicesSettingsTest, UpdateFromEmptyLoadResult) { 129 TEST_F(GServicesSettingsTest, UpdateFromEmptyLoadResult) {
112 GCMStore::LoadResult result; 130 GCMStore::LoadResult result;
113 result.gservices_digest = "digest_value"; 131 result.gservices_digest = "digest_value";
114 settings().UpdateFromLoadResult(result); 132 settings().UpdateFromLoadResult(result);
115 133
116 CheckAllSetToDefault(); 134 CheckAllSetToDefault();
117 EXPECT_EQ(std::string(), settings().digest()); 135 EXPECT_EQ(kDefaultSettingsDigest, settings().digest());
118 } 136 }
119 137
120 // Verifies that settings are not updated when one of them is missing. 138 // Verifies that settings are not updated when one of them is missing.
121 TEST_F(GServicesSettingsTest, UpdateFromLoadResultWithSettingMissing) { 139 TEST_F(GServicesSettingsTest, UpdateFromLoadResultWithSettingMissing) {
122 GCMStore::LoadResult result; 140 GCMStore::LoadResult result;
123 result.gservices_settings = alternative_settings(); 141 result.gservices_settings = alternative_settings();
124 result.gservices_digest = "digest_value"; 142 result.gservices_digest = "digest_value";
125 result.gservices_settings.erase("gcm_hostname"); 143 result.gservices_settings.erase("gcm_hostname");
126 settings().UpdateFromLoadResult(result); 144 settings().UpdateFromLoadResult(result);
127 145
128 CheckAllSetToDefault(); 146 CheckAllSetToDefault();
129 EXPECT_EQ(std::string(), settings().digest()); 147 EXPECT_EQ(kDefaultSettingsDigest, settings().digest());
130 } 148 }
131 149
132 // Verifies that the settings are set correctly based on the load result. 150 // Verifies that the settings are set correctly based on the load result.
133 TEST_F(GServicesSettingsTest, UpdateFromLoadResult) { 151 TEST_F(GServicesSettingsTest, UpdateFromLoadResult) {
134 GCMStore::LoadResult result; 152 GCMStore::LoadResult result;
135 result.gservices_settings = alternative_settings(); 153 result.gservices_settings = alternative_settings();
136 result.gservices_digest = "digest_value"; 154 result.gservices_digest = kAlternativeSettingsDigest;
137 settings().UpdateFromLoadResult(result); 155 settings().UpdateFromLoadResult(result);
138 156
139 CheckAllSetToAlternative(); 157 CheckAllSetToAlternative();
140 EXPECT_EQ("digest_value", settings().digest()); 158 EXPECT_EQ(kAlternativeSettingsDigest, settings().digest());
141 } 159 }
142 160
143 // Verifies that the settings are set correctly after parsing a checkin 161 // Verifies that the settings are set correctly after parsing a checkin
144 // response. 162 // response.
145 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponse) { 163 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponse) {
146 checkin_proto::AndroidCheckinResponse checkin_response; 164 checkin_proto::AndroidCheckinResponse checkin_response;
147 165
148 checkin_response.set_digest("digest_value"); 166 checkin_response.set_digest(kAlternativeSettingsDigest);
149 SetWithAlternativeSettings(checkin_response); 167 SetWithAlternativeSettings(checkin_response);
150 168
151 EXPECT_TRUE(settings().UpdateFromCheckinResponse(checkin_response)); 169 EXPECT_TRUE(settings().UpdateFromCheckinResponse(checkin_response));
152 170
153 CheckAllSetToAlternative(); 171 CheckAllSetToAlternative();
154 EXPECT_EQ(alternative_settings_, settings().GetSettingsMap()); 172 EXPECT_EQ(alternative_settings_, settings().get_settings_map());
155 EXPECT_EQ("digest_value", settings().digest()); 173 EXPECT_EQ(kAlternativeSettingsDigest, settings().digest());
156 } 174 }
157 175
158 // Verifies that the checkin interval is updated to minimum if the original 176 // Verifies that the checkin interval is updated to minimum if the original
159 // value is less than minimum. 177 // value is less than minimum.
160 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseMinimumCheckinInterval) { 178 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseMinimumCheckinInterval) {
161 checkin_proto::AndroidCheckinResponse checkin_response; 179 checkin_proto::AndroidCheckinResponse checkin_response;
162 180
163 checkin_response.set_digest("digest_value"); 181 const char digest[] = "1-436646257E0FAC3F0D20C866B0DA46C21DCD1FA2";
182 checkin_response.set_digest(digest);
164 // Setting the checkin interval to less than minimum. 183 // Setting the checkin interval to less than minimum.
165 alternative_settings_["checkin_interval"] = base::IntToString(3600); 184 alternative_settings_["checkin_interval"] = base::IntToString(3600);
166 SetWithAlternativeSettings(checkin_response); 185 SetWithAlternativeSettings(checkin_response);
167 186
168 EXPECT_TRUE(settings().UpdateFromCheckinResponse(checkin_response)); 187 EXPECT_TRUE(settings().UpdateFromCheckinResponse(checkin_response));
169 188
170 EXPECT_EQ(GServicesSettings::MinimumCheckinInterval(), 189 EXPECT_EQ(GServicesSettings::MinimumCheckinInterval(),
171 settings().checkin_interval()); 190 settings().GetCheckinInterval());
172 EXPECT_EQ("digest_value", settings().digest()); 191 EXPECT_EQ(digest, settings().digest());
173 } 192 }
174 193
175 // Verifies that settings are not updated when one of them is missing. 194 // Verifies that settings are not updated when one of them is missing.
176 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseWithSettingMissing) { 195 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseWithSettingMissing) {
177 checkin_proto::AndroidCheckinResponse checkin_response; 196 checkin_proto::AndroidCheckinResponse checkin_response;
178 197
179 checkin_response.set_digest("digest_value"); 198 checkin_response.set_digest(kAlternativeSettingsDigest);
180 alternative_settings_.erase("gcm_hostname"); 199 alternative_settings_.erase("gcm_hostname");
181 SetWithAlternativeSettings(checkin_response); 200 SetWithAlternativeSettings(checkin_response);
182 201
183 EXPECT_FALSE(settings().UpdateFromCheckinResponse(checkin_response)); 202 EXPECT_FALSE(settings().UpdateFromCheckinResponse(checkin_response));
184 203
185 CheckAllSetToDefault(); 204 CheckAllSetToDefault();
186 EXPECT_EQ(std::string(), settings().digest()); 205 EXPECT_EQ(kDefaultSettingsDigest, settings().digest());
187 } 206 }
188 207
189 // Verifies that no update is done, when a checkin response misses digest. 208 // Verifies that no update is done, when a checkin response misses digest.
190 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseNoDigest) { 209 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseNoDigest) {
191 checkin_proto::AndroidCheckinResponse checkin_response; 210 checkin_proto::AndroidCheckinResponse checkin_response;
192 211
193 SetWithAlternativeSettings(checkin_response); 212 SetWithAlternativeSettings(checkin_response);
194 EXPECT_FALSE(settings().UpdateFromCheckinResponse(checkin_response)); 213 EXPECT_FALSE(settings().UpdateFromCheckinResponse(checkin_response));
195 214
196 CheckAllSetToDefault(); 215 CheckAllSetToDefault();
197 EXPECT_EQ(std::string(), settings().digest()); 216 EXPECT_EQ(kDefaultSettingsDigest, settings().digest());
198 } 217 }
199 218
200 // Verifies that no update is done, when a checkin response digest is the same. 219 // Verifies that no update is done, when a checkin response digest is the same.
201 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseSameDigest) { 220 TEST_F(GServicesSettingsTest, UpdateFromCheckinResponseSameDigest) {
202 GCMStore::LoadResult load_result; 221 GCMStore::LoadResult load_result;
203 load_result.gservices_digest = "old_digest"; 222 load_result.gservices_digest = kAlternativeSettingsDigest;
204 load_result.gservices_settings = alternative_settings(); 223 load_result.gservices_settings = alternative_settings();
205 settings().UpdateFromLoadResult(load_result); 224 settings().UpdateFromLoadResult(load_result);
206 225
207 checkin_proto::AndroidCheckinResponse checkin_response; 226 checkin_proto::AndroidCheckinResponse checkin_response;
208 checkin_response.set_digest("old_digest"); 227 checkin_response.set_digest(kAlternativeSettingsDigest);
209 SetWithAlternativeSettings(checkin_response); 228 SetWithAlternativeSettings(checkin_response);
210 EXPECT_FALSE(settings().UpdateFromCheckinResponse(checkin_response)); 229 EXPECT_FALSE(settings().UpdateFromCheckinResponse(checkin_response));
211 230
212 CheckAllSetToAlternative(); 231 CheckAllSetToAlternative();
213 EXPECT_EQ("old_digest", settings().digest()); 232 EXPECT_EQ(kAlternativeSettingsDigest, settings().digest());
214 } 233 }
215 234
216 } // namespace gcm 235 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698