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

Side by Side Diff: components/variations/variations_seed_store_unittest.cc

Issue 1404583004: Support gzip-compressed seed data from the variations server. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolved comments Created 5 years, 2 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
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 "components/variations/variations_seed_store.h" 5 #include "components/variations/variations_seed_store.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/prefs/testing_pref_service.h" 8 #include "base/prefs/testing_pref_service.h"
9 #include "components/compression/compression_utils.h" 9 #include "components/compression/compression_utils.h"
10 #include "components/variations/pref_names.h" 10 #include "components/variations/pref_names.h"
11 #include "components/variations/proto/study.pb.h" 11 #include "components/variations/proto/study.pb.h"
12 #include "components/variations/proto/variations_seed.pb.h" 12 #include "components/variations/proto/variations_seed.pb.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace variations { 15 namespace variations {
16 16
17 namespace { 17 namespace {
18 18
19 class TestVariationsSeedStore : public VariationsSeedStore { 19 class TestVariationsSeedStore : public VariationsSeedStore {
20 public: 20 public:
21 explicit TestVariationsSeedStore(PrefService* local_state) 21 explicit TestVariationsSeedStore(PrefService* local_state)
22 : VariationsSeedStore(local_state) {} 22 : VariationsSeedStore(local_state) {}
23 ~TestVariationsSeedStore() override {} 23 ~TestVariationsSeedStore() override {}
24 24
25 bool StoreSeedForTesting(const std::string& seed_data) { 25 bool StoreSeedForTesting(const std::string& seed_data) {
26 return StoreSeedData(seed_data, std::string(), std::string(), 26 return StoreSeedData(seed_data, std::string(), std::string(),
27 base::Time::Now(), false, nullptr); 27 base::Time::Now(), false, false, nullptr);
28 } 28 }
29 29
30 VariationsSeedStore::VerifySignatureResult VerifySeedSignature( 30 VariationsSeedStore::VerifySignatureResult VerifySeedSignature(
31 const std::string& seed_bytes, 31 const std::string& seed_bytes,
32 const std::string& base64_seed_signature) override { 32 const std::string& base64_seed_signature) override {
33 return VariationsSeedStore::VARIATIONS_SEED_SIGNATURE_ENUM_SIZE; 33 return VariationsSeedStore::VARIATIONS_SEED_SIGNATURE_ENUM_SIZE;
34 } 34 }
35 35
36 private: 36 private:
37 DISALLOW_COPY_AND_ASSIGN(TestVariationsSeedStore); 37 DISALLOW_COPY_AND_ASSIGN(TestVariationsSeedStore);
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 const variations::VariationsSeed seed = CreateTestSeed(); 204 const variations::VariationsSeed seed = CreateTestSeed();
205 const std::string serialized_seed = SerializeSeed(seed); 205 const std::string serialized_seed = SerializeSeed(seed);
206 206
207 TestingPrefServiceSimple prefs; 207 TestingPrefServiceSimple prefs;
208 VariationsSeedStore::RegisterPrefs(prefs.registry()); 208 VariationsSeedStore::RegisterPrefs(prefs.registry());
209 TestVariationsSeedStore seed_store(&prefs); 209 TestVariationsSeedStore seed_store(&prefs);
210 210
211 variations::VariationsSeed parsed_seed; 211 variations::VariationsSeed parsed_seed;
212 EXPECT_TRUE(seed_store.StoreSeedData(serialized_seed, std::string(), 212 EXPECT_TRUE(seed_store.StoreSeedData(serialized_seed, std::string(),
213 std::string(), base::Time::Now(), false, 213 std::string(), base::Time::Now(), false,
214 &parsed_seed)); 214 false, &parsed_seed));
215 EXPECT_EQ(serialized_seed, SerializeSeed(parsed_seed)); 215 EXPECT_EQ(serialized_seed, SerializeSeed(parsed_seed));
216 } 216 }
217 217
218 TEST(VariationsSeedStoreTest, StoreSeedData_CountryCode) { 218 TEST(VariationsSeedStoreTest, StoreSeedData_CountryCode) {
219 TestingPrefServiceSimple prefs; 219 TestingPrefServiceSimple prefs;
220 VariationsSeedStore::RegisterPrefs(prefs.registry()); 220 VariationsSeedStore::RegisterPrefs(prefs.registry());
221 TestVariationsSeedStore seed_store(&prefs); 221 TestVariationsSeedStore seed_store(&prefs);
222 222
223 // Test with a seed country code and no header value. 223 // Test with a seed country code and no header value.
224 variations::VariationsSeed seed = CreateTestSeed(); 224 variations::VariationsSeed seed = CreateTestSeed();
225 seed.set_country_code("test_country"); 225 seed.set_country_code("test_country");
226 EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(), 226 EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(),
227 std::string(), base::Time::Now(), false, 227 std::string(), base::Time::Now(), false,
228 nullptr)); 228 false, nullptr));
229 EXPECT_EQ("test_country", prefs.GetString(prefs::kVariationsCountry)); 229 EXPECT_EQ("test_country", prefs.GetString(prefs::kVariationsCountry));
230 230
231 // Test with a header value and no seed country. 231 // Test with a header value and no seed country.
232 prefs.ClearPref(prefs::kVariationsCountry); 232 prefs.ClearPref(prefs::kVariationsCountry);
233 seed.clear_country_code(); 233 seed.clear_country_code();
234 EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(), 234 EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(),
235 "test_country2", base::Time::Now(), 235 "test_country2", base::Time::Now(),
236 false, nullptr)); 236 false, false, nullptr));
237 EXPECT_EQ("test_country2", prefs.GetString(prefs::kVariationsCountry)); 237 EXPECT_EQ("test_country2", prefs.GetString(prefs::kVariationsCountry));
238 238
239 // Test with a seed country code and header value. 239 // Test with a seed country code and header value.
240 prefs.ClearPref(prefs::kVariationsCountry); 240 prefs.ClearPref(prefs::kVariationsCountry);
241 seed.set_country_code("test_country3"); 241 seed.set_country_code("test_country3");
242 EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(), 242 EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(),
243 "test_country4", base::Time::Now(), 243 "test_country4", base::Time::Now(),
244 false, nullptr)); 244 false, false, nullptr));
245 EXPECT_EQ("test_country4", prefs.GetString(prefs::kVariationsCountry)); 245 EXPECT_EQ("test_country4", prefs.GetString(prefs::kVariationsCountry));
246 246
247 // Test with no country code specified - which should preserve the old value. 247 // Test with no country code specified - which should preserve the old value.
248 seed.clear_country_code(); 248 seed.clear_country_code();
249 EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(), 249 EXPECT_TRUE(seed_store.StoreSeedData(SerializeSeed(seed), std::string(),
250 std::string(), base::Time::Now(), false, 250 std::string(), base::Time::Now(), false,
251 nullptr)); 251 false, nullptr));
252 EXPECT_EQ("test_country4", prefs.GetString(prefs::kVariationsCountry)); 252 EXPECT_EQ("test_country4", prefs.GetString(prefs::kVariationsCountry));
253 } 253 }
254 254
255 TEST(VariationsSeedStoreTest, StoreSeedData_GzippedSeed) {
256 const variations::VariationsSeed seed = CreateTestSeed();
257 const std::string serialized_seed = SerializeSeed(seed);
258 std::string compressed_seed;
259 ASSERT_TRUE(compression::GzipCompress(serialized_seed, &compressed_seed));
260
261 TestingPrefServiceSimple prefs;
262 VariationsSeedStore::RegisterPrefs(prefs.registry());
263 TestVariationsSeedStore seed_store(&prefs);
264
265 variations::VariationsSeed parsed_seed;
266 EXPECT_TRUE(seed_store.StoreSeedData(compressed_seed, std::string(),
267 std::string(), base::Time::Now(), false,
268 true, &parsed_seed));
269 EXPECT_EQ(serialized_seed, SerializeSeed(parsed_seed));
270 }
271
272 TEST(VariationsSeedStoreTest, StoreSeedData_GzippedEmptySeed) {
273 std::string empty_seed;
274 std::string compressed_seed;
275 ASSERT_TRUE(compression::GzipCompress(empty_seed, &compressed_seed));
276
277 TestingPrefServiceSimple prefs;
278 VariationsSeedStore::RegisterPrefs(prefs.registry());
279 TestVariationsSeedStore seed_store(&prefs);
280
281 variations::VariationsSeed parsed_seed;
282 EXPECT_FALSE(seed_store.StoreSeedData(compressed_seed, std::string(),
283 std::string(), base::Time::Now(), false,
284 true, &parsed_seed));
285 }
286
255 TEST(VariationsSeedStoreTest, VerifySeedSignature) { 287 TEST(VariationsSeedStoreTest, VerifySeedSignature) {
256 // The below seed and signature pair were generated using the server's 288 // The below seed and signature pair were generated using the server's
257 // private key. 289 // private key.
258 const std::string base64_seed_data = 290 const std::string base64_seed_data =
259 "CigxZDI5NDY0ZmIzZDc4ZmYxNTU2ZTViNTUxYzY0NDdjYmM3NGU1ZmQwEr0BCh9VTUEtVW5p" 291 "CigxZDI5NDY0ZmIzZDc4ZmYxNTU2ZTViNTUxYzY0NDdjYmM3NGU1ZmQwEr0BCh9VTUEtVW5p"
260 "Zm9ybWl0eS1UcmlhbC0xMC1QZXJjZW50GICckqUFOAFCB2RlZmF1bHRKCwoHZGVmYXVsdBAB" 292 "Zm9ybWl0eS1UcmlhbC0xMC1QZXJjZW50GICckqUFOAFCB2RlZmF1bHRKCwoHZGVmYXVsdBAB"
261 "SgwKCGdyb3VwXzAxEAFKDAoIZ3JvdXBfMDIQAUoMCghncm91cF8wMxABSgwKCGdyb3VwXzA0" 293 "SgwKCGdyb3VwXzAxEAFKDAoIZ3JvdXBfMDIQAUoMCghncm91cF8wMxABSgwKCGdyb3VwXzA0"
262 "EAFKDAoIZ3JvdXBfMDUQAUoMCghncm91cF8wNhABSgwKCGdyb3VwXzA3EAFKDAoIZ3JvdXBf" 294 "EAFKDAoIZ3JvdXBfMDUQAUoMCghncm91cF8wNhABSgwKCGdyb3VwXzA3EAFKDAoIZ3JvdXBf"
263 "MDgQAUoMCghncm91cF8wORAB"; 295 "MDgQAUoMCghncm91cF8wORAB";
264 const std::string base64_seed_signature = 296 const std::string base64_seed_signature =
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 EXPECT_TRUE(base::Base64Decode(base64_after_seed_data, &after_seed_data)); 372 EXPECT_TRUE(base::Base64Decode(base64_after_seed_data, &after_seed_data));
341 EXPECT_TRUE(base::Base64Decode(base64_delta_data, &delta_data)); 373 EXPECT_TRUE(base::Base64Decode(base64_delta_data, &delta_data));
342 374
343 std::string output; 375 std::string output;
344 EXPECT_TRUE(VariationsSeedStore::ApplyDeltaPatch(before_seed_data, delta_data, 376 EXPECT_TRUE(VariationsSeedStore::ApplyDeltaPatch(before_seed_data, delta_data,
345 &output)); 377 &output));
346 EXPECT_EQ(after_seed_data, output); 378 EXPECT_EQ(after_seed_data, output);
347 } 379 }
348 380
349 } // namespace variations 381 } // namespace variations
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698