1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 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 <cstdlib> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cstring> 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/command_line.h" 9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/files/scoped_temp_dir.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_service.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/run_loop.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/chrome_user_manager_impl.h" 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/settings/cros_settings.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/settings/device_settings_service.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/chromeos/settings/stub_cros_settings_provider.h" 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "chrome/test/base/scoped_testing_local_state.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_browser_process.h" 23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chromeos/chromeos_switches.h" 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chromeos/settings/cros_settings_names.h" 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chromeos/settings/cros_settings_provider.h" 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/user_manager/user.h" 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/user_manager/user_manager.h" 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "content/public/common/content_switches.h" 31a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "content/public/test/test_browser_thread_bundle.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class UnittestProfileManager : public ::ProfileManagerWithoutInit { 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public: 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) explicit UnittestProfileManager(const base::FilePath& user_data_dir) 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) : ::ProfileManagerWithoutInit(user_data_dir) {} 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) protected: 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual Profile* CreateProfileHelper( 43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::FilePath& file_path) OVERRIDE { 44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (!base::PathExists(file_path)) { 45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) if (!base::CreateDirectory(file_path)) 46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return NULL; 47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return new TestingProfile(file_path, NULL); 49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) } 50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class UserManagerTest : public testing::Test { 54a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch protected: 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() OVERRIDE { 56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CommandLine& command_line = *CommandLine::ForCurrentProcess(); 57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) command_line.AppendSwitch(::switches::kTestType); 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) command_line.AppendSwitch( 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chromeos::switches::kIgnoreUserProfileMappingForTests); 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cros_settings_ = CrosSettings::Get(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Replace the real DeviceSettingsProvider with a stub. 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) device_settings_provider_ = 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cros_settings_->GetProvider(chromeos::kReportDeviceVersionInfo); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(device_settings_provider_); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE( 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cros_settings_->RemoveSettingsProvider(device_settings_provider_)); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cros_settings_->AddSettingsProvider(&stub_settings_provider_); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Populate the stub DeviceSettingsProvider with valid values. 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetDeviceSettings(false, "", false); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Register an in-memory local settings instance. 7568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) local_state_.reset( 7668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) new ScopedTestingLocalState(TestingBrowserProcess::GetGlobal())); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TestingBrowserProcess::GetGlobal()->SetProfileManager( 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) new UnittestProfileManager(temp_dir_.path())); 81cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chromeos::DBusThreadManager::Initialize(); 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetUserManager(); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void TearDown() OVERRIDE { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Unregister the in-memory local settings instance. 8968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) local_state_.reset(); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Restore the real DeviceSettingsProvider. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE( 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cros_settings_->RemoveSettingsProvider(&stub_settings_provider_)); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cros_settings_->AddSettingsProvider(device_settings_provider_); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Shut down the DeviceSettingsService. 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DeviceSettingsService::Get()->UnsetSessionManager(); 98cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TestingBrowserProcess::GetGlobal()->SetProfileManager(NULL); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::RunLoop().RunUntilIdle(); 101cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) chromeos::DBusThreadManager::Shutdown(); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1046e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ChromeUserManagerImpl* GetChromeUserManager() const { 1056e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return static_cast<ChromeUserManagerImpl*>( 1066e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()); 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool GetUserManagerEphemeralUsersEnabled() const { 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return GetChromeUserManager()->GetEphemeralUsersEnabled(); 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUserManagerEphemeralUsersEnabled(bool ephemeral_users_enabled) { 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetChromeUserManager()->SetEphemeralUsersEnabled(ephemeral_users_enabled); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& GetUserManagerOwnerEmail() const { 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return GetChromeUserManager()->GetOwnerEmail(); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetUserManagerOwnerEmail(const std::string& owner_email) { 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetChromeUserManager()->SetOwnerEmail(owner_email); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ResetUserManager() { 126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Reset the UserManager singleton. 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_manager_enabler_.reset(); 1286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Initialize the UserManager singleton to a fresh ChromeUserManagerImpl 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // instance. 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) user_manager_enabler_.reset( 1316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) new ScopedUserManagerEnabler(new ChromeUserManagerImpl)); 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // ChromeUserManagerImpl ctor posts a task to reload policies. 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::RunLoop().RunUntilIdle(); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetDeviceSettings(bool ephemeral_users_enabled, 138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string &owner, 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) bool supervised_users_enabled) { 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FundamentalValue 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ephemeral_users_enabled_value(ephemeral_users_enabled); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stub_settings_provider_.Set(kAccountsPrefEphemeralUsersEnabled, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ephemeral_users_enabled_value); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::StringValue owner_value(owner); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) stub_settings_provider_.Set(kDeviceOwner, owner_value); 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch stub_settings_provider_.Set(kAccountsPrefSupervisedUsersEnabled, 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::FundamentalValue(supervised_users_enabled)); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RetrieveTrustedDevicePolicies() { 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetChromeUserManager()->RetrieveTrustedDevicePolicies(); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 155a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch content::TestBrowserThreadBundle thread_bundle_; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CrosSettings* cros_settings_; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CrosSettingsProvider* device_settings_provider_; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StubCrosSettingsProvider stub_settings_provider_; 16068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) scoped_ptr<ScopedTestingLocalState> local_state_; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedTestDeviceSettingsService test_device_settings_service_; 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ScopedTestCrosSettings test_cros_settings_; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; 166cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::ScopedTempDir temp_dir_; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(UserManagerTest, RetrieveTrustedDevicePolicies) { 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserManagerEphemeralUsersEnabled(true); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetUserManagerOwnerEmail(""); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetDeviceSettings(false, "owner@invalid.domain", false); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RetrieveTrustedDevicePolicies(); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(GetUserManagerEphemeralUsersEnabled()); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(GetUserManagerOwnerEmail(), "owner@invalid.domain"); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(UserManagerTest, RemoveAllExceptOwnerFromList) { 1816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->UserLoggedIn( 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "owner@invalid.domain", "owner@invalid.domain", false); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetUserManager(); 1846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->UserLoggedIn( 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "user0@invalid.domain", "owner@invalid.domain", false); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetUserManager(); 1876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->UserLoggedIn( 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "user1@invalid.domain", "owner@invalid.domain", false); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetUserManager(); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const user_manager::UserList* users = 1926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) &user_manager::UserManager::Get()->GetUsers(); 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(3U, users->size()); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ((*users)[0]->email(), "user1@invalid.domain"); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ((*users)[1]->email(), "user0@invalid.domain"); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ((*users)[2]->email(), "owner@invalid.domain"); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 198eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetDeviceSettings(true, "owner@invalid.domain", false); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RetrieveTrustedDevicePolicies(); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2016e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) users = &user_manager::UserManager::Get()->GetUsers(); 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1U, users->size()); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain"); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(UserManagerTest, RegularUserLoggedInAsEphemeral) { 207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetDeviceSettings(true, "owner@invalid.domain", false); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RetrieveTrustedDevicePolicies(); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->UserLoggedIn( 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "owner@invalid.domain", "user0@invalid.domain", false); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetUserManager(); 2136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->UserLoggedIn( 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "user0@invalid.domain", "user0@invalid.domain", false); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ResetUserManager(); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const user_manager::UserList* users = 2186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) &user_manager::UserManager::Get()->GetUsers(); 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1U, users->size()); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain"); 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 224