cros_settings_unittest.cc revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
17ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman// Copyright (c) 2012 The Chromium Authors. All rights reserved. 27ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman// Use of this source code is governed by a BSD-style license that can be 37ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman// found in the LICENSE file. 47ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 57ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include <map> 67ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include <string> 77ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 87ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "base/bind.h" 97ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "base/memory/scoped_ptr.h" 107ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "base/memory/weak_ptr.h" 117ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "base/message_loop.h" 127ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "base/stl_util.h" 137ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "base/values.h" 147ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "chrome/browser/chromeos/settings/cros_settings.h" 157ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "chrome/browser/chromeos/settings/cros_settings_names.h" 167ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "chrome/browser/chromeos/settings/device_settings_test_helper.h" 177ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "chrome/browser/policy/cloud/cloud_policy_constants.h" 187ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "chrome/browser/policy/proto/chromeos/chrome_device_policy.pb.h" 197ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h" 207ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "chrome/test/base/scoped_testing_local_state.h" 217ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "chrome/test/base/testing_browser_process.h" 227ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "content/public/test/test_browser_thread.h" 237ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman#include "testing/gtest/include/gtest/gtest.h" 247ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 257ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukmannamespace em = enterprise_management; 267ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 277ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukmannamespace chromeos { 287ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 297ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukmanclass CrosSettingsTest : public testing::Test { 307ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman protected: 317ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman CrosSettingsTest() 327ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman : message_loop_(MessageLoop::TYPE_UI), 337ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman ui_thread_(content::BrowserThread::UI, &message_loop_), 347ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman local_state_(TestingBrowserProcess::GetGlobal()), 357ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman weak_factory_(this) {} 367ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 377ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman virtual ~CrosSettingsTest() {} 387ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 397ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman virtual void TearDown() OVERRIDE { 40b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad ASSERT_TRUE(expected_props_.empty()); 417ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman STLDeleteValues(&expected_props_); 42e4b9c93fc1b531fe0cfe25a042f6b81c1e7c15c0Benjamin Kramer expected_props_.clear(); 43b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad } 44b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 45b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad void FetchPref(const std::string& pref) { 46b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 477ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman if (expected_props_.find(pref) == expected_props_.end()) 487ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman return; 497ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 507ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman if (CrosSettingsProvider::TRUSTED == 517ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman settings_.PrepareTrustedValues( 527ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::Bind(&CrosSettingsTest::FetchPref, 537ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman weak_factory_.GetWeakPtr(), pref))) { 547ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman scoped_ptr<base::Value> expected_value( 55b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad expected_props_.find(pref)->second); 56b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad const base::Value* pref_value = settings_.GetPref(pref); 57b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad if (expected_value.get()) { 587ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman ASSERT_TRUE(pref_value); 5957f7dafcb769852a21870148e91535421c45d037Alexey Samsonov ASSERT_TRUE(expected_value->Equals(pref_value)); 609c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin } else { 6157f7dafcb769852a21870148e91535421c45d037Alexey Samsonov ASSERT_FALSE(pref_value); 629c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin } 637ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman expected_props_.erase(pref); 647ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman } 657ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman } 667ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 677ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman void SetPref(const std::string& pref_name, const base::Value* value) { 687ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 697ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman settings_.Set(pref_name, *value); 707ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman } 717ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 727ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman void AddExpectation(const std::string& pref_name, base::Value* value) { 737ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::Value*& entry = expected_props_[pref_name]; 747ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman delete entry; 757ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman entry = value; 767ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman } 777ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 787ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman void PrepareEmptyPolicy(em::PolicyData* policy) { 797ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // Prepare some policy blob. 807ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman em::PolicyFetchResponse response; 817ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman em::ChromeDeviceSettingsProto pol; 827ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman policy->set_policy_type(policy::dm_protocol::kChromeDevicePolicyType); 837ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman policy->set_username("me@owner"); 847ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman policy->set_policy_value(pol.SerializeAsString()); 857ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // Wipe the signed settings store. 867ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman response.set_policy_data(policy->SerializeAsString()); 877ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman response.set_policy_data_signature("false"); 887ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman } 897ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 907ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman MessageLoop message_loop_; 917ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman content::TestBrowserThread ui_thread_; 927ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 937ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman ScopedTestingLocalState local_state_; 947ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman ScopedDeviceSettingsTestHelper device_settings_test_helper_; 957ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman CrosSettings settings_; 967ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 977ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::WeakPtrFactory<CrosSettingsTest> weak_factory_; 987ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 999c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin std::map<std::string, base::Value*> expected_props_; 1009c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin}; 1019c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin 1029c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey YasskinTEST_F(CrosSettingsTest, SetPref) { 1039c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin // Change to something that is not the default. 1049c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin AddExpectation(kAccountsPrefAllowGuest, 10557f7dafcb769852a21870148e91535421c45d037Alexey Samsonov base::Value::CreateBooleanValue(false)); 1069c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin SetPref(kAccountsPrefAllowGuest, expected_props_[kAccountsPrefAllowGuest]); 1079c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin FetchPref(kAccountsPrefAllowGuest); 108354362524a72b3fa43a6c09380b7ae3b2380cbbaJuergen Ributzka ASSERT_TRUE(expected_props_.empty()); 1099c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin} 1109c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin 1119c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey YasskinTEST_F(CrosSettingsTest, GetPref) { 1129c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin // We didn't change the default so look for it. 113955f9387516da03b51337b126bebb43567141173Benjamin Kramer AddExpectation(kAccountsPrefAllowGuest, 1149c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin base::Value::CreateBooleanValue(true)); 1159c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin FetchPref(kAccountsPrefAllowGuest); 1169c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin} 1177ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 1187ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha BrukmanTEST_F(CrosSettingsTest, SetWhitelist) { 1199c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin // Setting the whitelist should also switch the value of 1209c0c3bf1ec2feb861f19867d4091350010b23de6Jeffrey Yasskin // kAccountsPrefAllowNewUser to false. 1217ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::ListValue whitelist; 12257f7dafcb769852a21870148e91535421c45d037Alexey Samsonov whitelist.Append(new base::StringValue("me@owner")); 12357f7dafcb769852a21870148e91535421c45d037Alexey Samsonov AddExpectation(kAccountsPrefAllowNewUser, 12457f7dafcb769852a21870148e91535421c45d037Alexey Samsonov base::Value::CreateBooleanValue(false)); 12557f7dafcb769852a21870148e91535421c45d037Alexey Samsonov AddExpectation(kAccountsPrefUsers, whitelist.DeepCopy()); 12657f7dafcb769852a21870148e91535421c45d037Alexey Samsonov SetPref(kAccountsPrefUsers, &whitelist); 12757f7dafcb769852a21870148e91535421c45d037Alexey Samsonov FetchPref(kAccountsPrefAllowNewUser); 1287ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefUsers); 129b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad} 130b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 131b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay FoadTEST_F(CrosSettingsTest, SetWhitelistWithListOps) { 1327ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::ListValue* whitelist = new base::ListValue(); 1337ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::StringValue hacky_user("h@xxor"); 134b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad whitelist->Append(hacky_user.DeepCopy()); 1357ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefAllowNewUser, 136190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer base::Value::CreateBooleanValue(false)); 1377ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefUsers, whitelist); 1387ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // Add some user to the whitelist. 1397ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman settings_.AppendToList(kAccountsPrefUsers, &hacky_user); 140190f8ee25a6977ac6eb71b816498df42f17ad9a7Benjamin Kramer FetchPref(kAccountsPrefAllowNewUser); 1417ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefUsers); 1427ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman} 143b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 144b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay FoadTEST_F(CrosSettingsTest, SetWhitelistWithListOps2) { 145b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad base::ListValue whitelist; 1467ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::StringValue hacky_user("h@xxor"); 1477ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::StringValue lamy_user("l@mer"); 1487ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman whitelist.Append(hacky_user.DeepCopy()); 1497ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::ListValue* expected_list = whitelist.DeepCopy(); 1507ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman whitelist.Append(lamy_user.DeepCopy()); 1517ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefAllowNewUser, 1527ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::Value::CreateBooleanValue(false)); 1537ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefUsers, whitelist.DeepCopy()); 1547ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman SetPref(kAccountsPrefUsers, &whitelist); 1557ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefAllowNewUser); 1567ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefUsers); 1577ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman ASSERT_TRUE(expected_props_.empty()); 15857240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer // Now try to remove one element from that list. 1597ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefUsers, expected_list); 1607ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman settings_.RemoveFromList(kAccountsPrefUsers, &lamy_user); 1617ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefAllowNewUser); 1627ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefUsers); 1637ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman} 1647ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 1657ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha BrukmanTEST_F(CrosSettingsTest, SetEmptyWhitelist) { 1667ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // Setting the whitelist empty should switch the value of 1677ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // kAccountsPrefAllowNewUser to true. 1687ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::ListValue whitelist; 1697ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefAllowNewUser, 1707ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::Value::CreateBooleanValue(true)); 1717ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman SetPref(kAccountsPrefUsers, &whitelist); 1727ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefAllowNewUser); 1737ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefUsers); 1747ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman} 1757ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 1767ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha BrukmanTEST_F(CrosSettingsTest, SetEmptyWhitelistAndNoNewUsers) { 1777ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // Setting the whitelist empty and disallowing new users should result in no 1787ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // new users allowed. 1797ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::ListValue whitelist; 1807ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::FundamentalValue disallow_new(false); 1817ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefUsers, whitelist.DeepCopy()); 1827ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefAllowNewUser, 1837ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::Value::CreateBooleanValue(false)); 1847ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman SetPref(kAccountsPrefUsers, &whitelist); 18557240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer SetPref(kAccountsPrefAllowNewUser, &disallow_new); 18657240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer FetchPref(kAccountsPrefAllowNewUser); 18757240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer FetchPref(kAccountsPrefUsers); 188b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad} 1897ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 190b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay FoadTEST_F(CrosSettingsTest, SetWhitelistAndNoNewUsers) { 1917ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // Setting the whitelist should allow us to set kAccountsPrefAllowNewUser to 19257240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer // false (which is the implicit value too). 1937ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::ListValue whitelist; 1947ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman whitelist.Append(new base::StringValue("me@owner")); 19557240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer AddExpectation(kAccountsPrefUsers, whitelist.DeepCopy()); 19657240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer AddExpectation(kAccountsPrefAllowNewUser, 1977ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::Value::CreateBooleanValue(false)); 1987ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman SetPref(kAccountsPrefUsers, &whitelist); 19957240ff6e2252f8986f6e47e4010bc52fbae25d1Benjamin Kramer SetPref(kAccountsPrefAllowNewUser, 2007ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman expected_props_[kAccountsPrefAllowNewUser]); 2017ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefAllowNewUser); 2027ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefUsers); 2037ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman} 2047ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 2057ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha BrukmanTEST_F(CrosSettingsTest, SetAllowNewUsers) { 2067ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman // Setting kAccountsPrefAllowNewUser to true with no whitelist should be ok. 2077ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefAllowNewUser, 2087ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::Value::CreateBooleanValue(true)); 2097ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman SetPref(kAccountsPrefAllowNewUser, 2107ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman expected_props_[kAccountsPrefAllowNewUser]); 2117ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefAllowNewUser); 2127ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman} 2137ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 2147ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha BrukmanTEST_F(CrosSettingsTest, SetEphemeralUsersEnabled) { 2157ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::FundamentalValue ephemeral_users_enabled(true); 2167ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman AddExpectation(kAccountsPrefEphemeralUsersEnabled, 2177ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::Value::CreateBooleanValue(true)); 2187ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman SetPref(kAccountsPrefEphemeralUsersEnabled, &ephemeral_users_enabled); 2197ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman FetchPref(kAccountsPrefEphemeralUsersEnabled); 2207ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman} 2217ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman 2227ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha BrukmanTEST_F(CrosSettingsTest, FindEmailInList) { 2237ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman base::ListValue list; 2247ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman list.Append(new base::StringValue("user@example.com")); 2257ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman list.Append(new base::StringValue("nodomain")); 2267ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman list.Append(new base::StringValue("with.dots@gmail.com")); 227b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad list.Append(new base::StringValue("Upper@example.com")); 228b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 229b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad CrosSettings* cs = &settings_; 230b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad cs->Set(kAccountsPrefUsers, list); 231b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 232b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "user@example.com")); 233b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad EXPECT_FALSE(cs->FindEmailInList(kAccountsPrefUsers, "us.er@example.com")); 2347ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "USER@example.com")); 235b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad EXPECT_FALSE(cs->FindEmailInList(kAccountsPrefUsers, "user")); 236b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 2377ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "nodomain")); 238b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "nodomain@gmail.com")); 2397ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "no.domain@gmail.com")); 240b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "NO.DOMAIN")); 241b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 2427ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "with.dots@gmail.com")); 2437ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "withdots@gmail.com")); 2447ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "WITH.DOTS@gmail.com")); 2457ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "WITHDOTS")); 246b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 247b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "Upper@example.com")); 2487ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_FALSE(cs->FindEmailInList(kAccountsPrefUsers, "U.pper@example.com")); 2497ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_FALSE(cs->FindEmailInList(kAccountsPrefUsers, "Upper")); 2507ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman EXPECT_TRUE(cs->FindEmailInList(kAccountsPrefUsers, "upper@example.com")); 251b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad} 252b33f8e3e55932d0e15a686ef0c598da8dbc37acdJay Foad 2537ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman} // namespace chromeos 2547ae6ff442a26212a0cc4c1929b8b0a105dc988e4Misha Brukman