first_run_unittest.cc revision f8ee788a64d60abd8f2d742a5fdedde054ecd910
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/compiler_specific.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h"
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/path_service.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/test/scoped_path_override.h"
104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/values.h"
118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "chrome/browser/first_run/first_run.h"
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/first_run/first_run_internal.h"
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/common/chrome_paths.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/master_preferences.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)
17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)namespace first_run {
18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
19868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)class FirstRunTest : public testing::Test {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FirstRunTest() : user_data_dir_override_(chrome::DIR_USER_DATA) {}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~FirstRunTest() {}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu private:
2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  base::ScopedPathOverride user_data_dir_override_;
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(FirstRunTest);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(FirstRunTest, SetupMasterPrefsFromInstallPrefs_VariationsSeed) {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  installer::MasterPreferences install_prefs("{ \"variations_seed\":\"xyz\" }");
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(1U, install_prefs.master_dictionary().size());
335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MasterPrefs out_prefs;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  internal::SetupMasterPrefsFromInstallPrefs(install_prefs, &out_prefs);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("xyz", out_prefs.variations_seed);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Variations prefs should have been extracted (removed) from the dictionary.
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(install_prefs.master_dictionary().empty());
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TEST_F(FirstRunTest, SetupMasterPrefsFromInstallPrefs_NoVariationsSeed) {
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  installer::MasterPreferences install_prefs("{ }");
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_TRUE(install_prefs.master_dictionary().empty());
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MasterPrefs out_prefs;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  internal::SetupMasterPrefsFromInstallPrefs(install_prefs, &out_prefs);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(out_prefs.variations_seed.empty());
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(out_prefs.variations_seed_signature.empty());
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)TEST_F(FirstRunTest, SetupMasterPrefsFromInstallPrefs_VariationsSeedSignature) {
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  installer::MasterPreferences install_prefs(
535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu      "{ \"variations_seed\":\"xyz\", \"variations_seed_signature\":\"abc\" }");
545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  EXPECT_EQ(2U, install_prefs.master_dictionary().size());
555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  MasterPrefs out_prefs;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  internal::SetupMasterPrefsFromInstallPrefs(install_prefs, &out_prefs);
585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  EXPECT_EQ("xyz", out_prefs.variations_seed);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("abc", out_prefs.variations_seed_signature);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Variations prefs should have been extracted (removed) from the dictionary.
614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  EXPECT_TRUE(install_prefs.master_dictionary().empty());
62010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace first_run
65a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)