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)