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

Side by Side Diff: chrome/browser/chromeos/login/user_manager_unittest.cc

Issue 17546004: Added policy for disabling locally managed users. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge conflict resolved. Created 7 years, 6 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <cstdlib> 5 #include <cstdlib>
6 #include <cstring> 6 #include <cstring>
7 7
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/prefs/pref_service.h" 10 #include "base/prefs/pref_service.h"
(...skipping 29 matching lines...) Expand all
40 40
41 // Replace the real DeviceSettingsProvider with a stub. 41 // Replace the real DeviceSettingsProvider with a stub.
42 device_settings_provider_ = 42 device_settings_provider_ =
43 cros_settings_->GetProvider(chromeos::kReportDeviceVersionInfo); 43 cros_settings_->GetProvider(chromeos::kReportDeviceVersionInfo);
44 EXPECT_TRUE(device_settings_provider_); 44 EXPECT_TRUE(device_settings_provider_);
45 EXPECT_TRUE( 45 EXPECT_TRUE(
46 cros_settings_->RemoveSettingsProvider(device_settings_provider_)); 46 cros_settings_->RemoveSettingsProvider(device_settings_provider_));
47 cros_settings_->AddSettingsProvider(&stub_settings_provider_); 47 cros_settings_->AddSettingsProvider(&stub_settings_provider_);
48 48
49 // Populate the stub DeviceSettingsProvider with valid values. 49 // Populate the stub DeviceSettingsProvider with valid values.
50 SetDeviceSettings(false, ""); 50 SetDeviceSettings(false, "", false);
51 51
52 // Register an in-memory local settings instance. 52 // Register an in-memory local settings instance.
53 local_state_.reset(new TestingPrefServiceSimple); 53 local_state_.reset(new TestingPrefServiceSimple);
54 reinterpret_cast<TestingBrowserProcess*>(g_browser_process) 54 TestingBrowserProcess::GetGlobal()->SetLocalState(local_state_.get());
55 ->SetLocalState(local_state_.get());
56 UserManager::RegisterPrefs(local_state_->registry()); 55 UserManager::RegisterPrefs(local_state_->registry());
57 // Wallpaper manager and user image managers prefs will be accessed by the 56 // Wallpaper manager and user image managers prefs will be accessed by the
58 // unit-test as well. 57 // unit-test as well.
59 UserImageManager::RegisterPrefs(local_state_->registry()); 58 UserImageManager::RegisterPrefs(local_state_->registry());
60 WallpaperManager::RegisterPrefs(local_state_->registry()); 59 WallpaperManager::RegisterPrefs(local_state_->registry());
61 60
62 ResetUserManager(); 61 ResetUserManager();
63 } 62 }
64 63
65 virtual void TearDown() OVERRIDE { 64 virtual void TearDown() OVERRIDE {
66 // Unregister the in-memory local settings instance. 65 // Unregister the in-memory local settings instance.
67 reinterpret_cast<TestingBrowserProcess*>(g_browser_process) 66 TestingBrowserProcess::GetGlobal()->SetLocalState(0);
68 ->SetLocalState(0);
69 67
70 // Restore the real DeviceSettingsProvider. 68 // Restore the real DeviceSettingsProvider.
71 EXPECT_TRUE( 69 EXPECT_TRUE(
72 cros_settings_->RemoveSettingsProvider(&stub_settings_provider_)); 70 cros_settings_->RemoveSettingsProvider(&stub_settings_provider_));
73 cros_settings_->AddSettingsProvider(device_settings_provider_); 71 cros_settings_->AddSettingsProvider(device_settings_provider_);
74 72
75 // Shut down the DeviceSettingsService. 73 // Shut down the DeviceSettingsService.
76 DeviceSettingsService::Get()->UnsetSessionManager(); 74 DeviceSettingsService::Get()->UnsetSessionManager();
77 75
78 base::RunLoop().RunUntilIdle(); 76 base::RunLoop().RunUntilIdle();
79 } 77 }
80 78
79 UserManagerImpl* GetUserManagerImpl() const {
80 return static_cast<UserManagerImpl*>(UserManager::Get());
81 }
82
81 bool GetUserManagerEphemeralUsersEnabled() const { 83 bool GetUserManagerEphemeralUsersEnabled() const {
82 return reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 84 return GetUserManagerImpl()->ephemeral_users_enabled_;
83 ephemeral_users_enabled_; 85 }
86
87 bool GetUserManagerLocallyManagedUsersEnabledByPolicy() const {
88 return GetUserManagerImpl()->locally_managed_users_enabled_by_policy_;
84 } 89 }
85 90
86 void SetUserManagerEphemeralUsersEnabled(bool ephemeral_users_enabled) { 91 void SetUserManagerEphemeralUsersEnabled(bool ephemeral_users_enabled) {
87 reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 92 GetUserManagerImpl()->ephemeral_users_enabled_ = ephemeral_users_enabled;
88 ephemeral_users_enabled_ = ephemeral_users_enabled;
89 } 93 }
90 94
91 const std::string& GetUserManagerOwnerEmail() const { 95 const std::string& GetUserManagerOwnerEmail() const {
92 return reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 96 return GetUserManagerImpl()-> owner_email_;
93 owner_email_;
94 } 97 }
95 98
96 void SetUserManagerOwnerEmail(const std::string& owner_email) { 99 void SetUserManagerOwnerEmail(const std::string& owner_email) {
97 reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 100 GetUserManagerImpl()->owner_email_ = owner_email;
98 owner_email_ = owner_email;
99 } 101 }
100 102
101 void ResetUserManager() { 103 void ResetUserManager() {
102 // Reset the UserManager singleton. 104 // Reset the UserManager singleton.
103 user_manager_enabler_.reset(); 105 user_manager_enabler_.reset();
104 // Initialize the UserManager singleton to a fresh UserManagerImpl instance. 106 // Initialize the UserManager singleton to a fresh UserManagerImpl instance.
105 user_manager_enabler_.reset( 107 user_manager_enabler_.reset(
106 new ScopedUserManagerEnabler(new UserManagerImpl)); 108 new ScopedUserManagerEnabler(new UserManagerImpl));
107 } 109 }
108 110
109 void SetDeviceSettings(bool ephemeral_users_enabled, 111 void SetDeviceSettings(bool ephemeral_users_enabled,
110 const std::string &owner) { 112 const std::string &owner,
113 bool locally_managed_users_enabled) {
111 base::FundamentalValue 114 base::FundamentalValue
112 ephemeral_users_enabled_value(ephemeral_users_enabled); 115 ephemeral_users_enabled_value(ephemeral_users_enabled);
113 stub_settings_provider_.Set(kAccountsPrefEphemeralUsersEnabled, 116 stub_settings_provider_.Set(kAccountsPrefEphemeralUsersEnabled,
114 ephemeral_users_enabled_value); 117 ephemeral_users_enabled_value);
115 base::StringValue owner_value(owner); 118 base::StringValue owner_value(owner);
116 stub_settings_provider_.Set(kDeviceOwner, owner_value); 119 stub_settings_provider_.Set(kDeviceOwner, owner_value);
120 stub_settings_provider_.Set(kAccountsPrefSupervisedUsersEnabled,
121 base::FundamentalValue(locally_managed_users_enabled));
117 } 122 }
118 123
119 void RetrieveTrustedDevicePolicies() { 124 void RetrieveTrustedDevicePolicies() {
120 reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 125 GetUserManagerImpl()->RetrieveTrustedDevicePolicies();
121 RetrieveTrustedDevicePolicies();
122 } 126 }
123 127
124 protected: 128 protected:
125 base::MessageLoop message_loop_; 129 base::MessageLoop message_loop_;
126 content::TestBrowserThread ui_thread_; 130 content::TestBrowserThread ui_thread_;
127 content::TestBrowserThread file_thread_; 131 content::TestBrowserThread file_thread_;
128 132
129 CrosSettings* cros_settings_; 133 CrosSettings* cros_settings_;
130 CrosSettingsProvider* device_settings_provider_; 134 CrosSettingsProvider* device_settings_provider_;
131 StubCrosSettingsProvider stub_settings_provider_; 135 StubCrosSettingsProvider stub_settings_provider_;
132 scoped_ptr<TestingPrefServiceSimple> local_state_; 136 scoped_ptr<TestingPrefServiceSimple> local_state_;
133 137
134 ScopedTestDeviceSettingsService test_device_settings_service_; 138 ScopedTestDeviceSettingsService test_device_settings_service_;
135 ScopedStubCrosEnabler stub_cros_enabler_; 139 ScopedStubCrosEnabler stub_cros_enabler_;
136 ScopedTestCrosSettings test_cros_settings_; 140 ScopedTestCrosSettings test_cros_settings_;
137 141
138 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; 142 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_;
139 }; 143 };
140 144
141 TEST_F(UserManagerTest, RetrieveTrustedDevicePolicies) { 145 TEST_F(UserManagerTest, RetrieveTrustedDevicePolicies) {
142 SetUserManagerEphemeralUsersEnabled(true); 146 SetUserManagerEphemeralUsersEnabled(true);
143 SetUserManagerOwnerEmail(""); 147 SetUserManagerOwnerEmail("");
144 148
145 SetDeviceSettings(false, "owner@invalid.domain"); 149 SetDeviceSettings(false, "owner@invalid.domain", false);
146 RetrieveTrustedDevicePolicies(); 150 RetrieveTrustedDevicePolicies();
147 151
148 EXPECT_FALSE(GetUserManagerEphemeralUsersEnabled()); 152 EXPECT_FALSE(GetUserManagerEphemeralUsersEnabled());
149 EXPECT_EQ(GetUserManagerOwnerEmail(), "owner@invalid.domain"); 153 EXPECT_EQ(GetUserManagerOwnerEmail(), "owner@invalid.domain");
150 } 154 }
151 155
152 TEST_F(UserManagerTest, RemoveAllExceptOwnerFromList) { 156 TEST_F(UserManagerTest, RemoveAllExceptOwnerFromList) {
153 UserManager::Get()->UserLoggedIn( 157 UserManager::Get()->UserLoggedIn(
154 "owner@invalid.domain", "owner@invalid.domain", false); 158 "owner@invalid.domain", "owner@invalid.domain", false);
155 ResetUserManager(); 159 ResetUserManager();
156 UserManager::Get()->UserLoggedIn( 160 UserManager::Get()->UserLoggedIn(
157 "user0@invalid.domain", "owner@invalid.domain", false); 161 "user0@invalid.domain", "owner@invalid.domain", false);
158 ResetUserManager(); 162 ResetUserManager();
159 UserManager::Get()->UserLoggedIn( 163 UserManager::Get()->UserLoggedIn(
160 "user1@invalid.domain", "owner@invalid.domain", false); 164 "user1@invalid.domain", "owner@invalid.domain", false);
161 ResetUserManager(); 165 ResetUserManager();
162 166
163 const UserList* users = &UserManager::Get()->GetUsers(); 167 const UserList* users = &UserManager::Get()->GetUsers();
164 ASSERT_EQ(3U, users->size()); 168 ASSERT_EQ(3U, users->size());
165 EXPECT_EQ((*users)[0]->email(), "user1@invalid.domain"); 169 EXPECT_EQ((*users)[0]->email(), "user1@invalid.domain");
166 EXPECT_EQ((*users)[1]->email(), "user0@invalid.domain"); 170 EXPECT_EQ((*users)[1]->email(), "user0@invalid.domain");
167 EXPECT_EQ((*users)[2]->email(), "owner@invalid.domain"); 171 EXPECT_EQ((*users)[2]->email(), "owner@invalid.domain");
168 172
169 SetDeviceSettings(true, "owner@invalid.domain"); 173 SetDeviceSettings(true, "owner@invalid.domain", false);
170 RetrieveTrustedDevicePolicies(); 174 RetrieveTrustedDevicePolicies();
171 175
172 users = &UserManager::Get()->GetUsers(); 176 users = &UserManager::Get()->GetUsers();
173 EXPECT_EQ(1U, users->size()); 177 EXPECT_EQ(1U, users->size());
174 EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain"); 178 EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain");
175 } 179 }
176 180
177 TEST_F(UserManagerTest, RegularUserLoggedInAsEphemeral) { 181 TEST_F(UserManagerTest, RegularUserLoggedInAsEphemeral) {
178 SetDeviceSettings(true, "owner@invalid.domain"); 182 SetDeviceSettings(true, "owner@invalid.domain", false);
179 RetrieveTrustedDevicePolicies(); 183 RetrieveTrustedDevicePolicies();
180 184
181 UserManager::Get()->UserLoggedIn( 185 UserManager::Get()->UserLoggedIn(
182 "owner@invalid.domain", "user0@invalid.domain", false); 186 "owner@invalid.domain", "user0@invalid.domain", false);
183 ResetUserManager(); 187 ResetUserManager();
184 UserManager::Get()->UserLoggedIn( 188 UserManager::Get()->UserLoggedIn(
185 "user0@invalid.domain", "user0@invalid.domain", false); 189 "user0@invalid.domain", "user0@invalid.domain", false);
186 ResetUserManager(); 190 ResetUserManager();
187 191
188 const UserList* users = &UserManager::Get()->GetUsers(); 192 const UserList* users = &UserManager::Get()->GetUsers();
189 EXPECT_EQ(1U, users->size()); 193 EXPECT_EQ(1U, users->size());
190 EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain"); 194 EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain");
191 } 195 }
192 196
197 TEST_F(UserManagerTest, DisablingLMUByDeviceSettings) {
198 SetDeviceSettings(false, "owner@invalid.domain", false);
199 RetrieveTrustedDevicePolicies();
200 EXPECT_EQ(GetUserManagerLocallyManagedUsersEnabledByPolicy(), false);
201 SetDeviceSettings(false, "owner@invalid.domain", true);
202 RetrieveTrustedDevicePolicies();
203 EXPECT_EQ(GetUserManagerLocallyManagedUsersEnabledByPolicy(), true);
204 }
205
193 } // namespace chromeos 206 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/user_manager_impl.cc ('k') | chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698