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

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: Little fix. 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 reinterpret_cast<TestingBrowserProcess*>(g_browser_process)
55 ->SetLocalState(local_state_.get()); 55 ->SetLocalState(local_state_.get());
56 UserManager::RegisterPrefs(local_state_->registry()); 56 UserManager::RegisterPrefs(local_state_->registry());
57 // Wallpaper manager and user image managers prefs will be accessed by the 57 // Wallpaper manager and user image managers prefs will be accessed by the
58 // unit-test as well. 58 // unit-test as well.
59 UserImageManager::RegisterPrefs(local_state_->registry()); 59 UserImageManager::RegisterPrefs(local_state_->registry());
60 WallpaperManager::RegisterPrefs(local_state_->registry()); 60 WallpaperManager::RegisterPrefs(local_state_->registry());
(...skipping 15 matching lines...) Expand all
76 DeviceSettingsService::Get()->UnsetSessionManager(); 76 DeviceSettingsService::Get()->UnsetSessionManager();
77 77
78 base::RunLoop().RunUntilIdle(); 78 base::RunLoop().RunUntilIdle();
79 } 79 }
80 80
81 bool GetUserManagerEphemeralUsersEnabled() const { 81 bool GetUserManagerEphemeralUsersEnabled() const {
82 return reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 82 return reinterpret_cast<UserManagerImpl*>(UserManager::Get())->
83 ephemeral_users_enabled_; 83 ephemeral_users_enabled_;
84 } 84 }
85 85
86 bool GetUserManagerLocallyManagedUsersEnabledByPolicy() const {
87 return reinterpret_cast<UserManagerImpl*>(UserManager::Get())->
Bernhard Bauer 2013/06/21 11:59:25 I know this is copy-and-pasted from other code her
dzhioev (left Google) 2013/06/21 13:42:29 Yes, reinterpret_cast is unnecessary here. Removed
88 locally_managed_users_enabled_by_policy_;
89 }
90
86 void SetUserManagerEphemeralUsersEnabled(bool ephemeral_users_enabled) { 91 void SetUserManagerEphemeralUsersEnabled(bool ephemeral_users_enabled) {
87 reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 92 reinterpret_cast<UserManagerImpl*>(UserManager::Get())->
88 ephemeral_users_enabled_ = ephemeral_users_enabled; 93 ephemeral_users_enabled_ = ephemeral_users_enabled;
89 } 94 }
90 95
91 const std::string& GetUserManagerOwnerEmail() const { 96 const std::string& GetUserManagerOwnerEmail() const {
92 return reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 97 return reinterpret_cast<UserManagerImpl*>(UserManager::Get())->
93 owner_email_; 98 owner_email_;
94 } 99 }
95 100
96 void SetUserManagerOwnerEmail(const std::string& owner_email) { 101 void SetUserManagerOwnerEmail(const std::string& owner_email) {
97 reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 102 reinterpret_cast<UserManagerImpl*>(UserManager::Get())->
98 owner_email_ = owner_email; 103 owner_email_ = owner_email;
99 } 104 }
100 105
101 void ResetUserManager() { 106 void ResetUserManager() {
102 // Reset the UserManager singleton. 107 // Reset the UserManager singleton.
103 user_manager_enabler_.reset(); 108 user_manager_enabler_.reset();
104 // Initialize the UserManager singleton to a fresh UserManagerImpl instance. 109 // Initialize the UserManager singleton to a fresh UserManagerImpl instance.
105 user_manager_enabler_.reset( 110 user_manager_enabler_.reset(
106 new ScopedUserManagerEnabler(new UserManagerImpl)); 111 new ScopedUserManagerEnabler(new UserManagerImpl));
107 } 112 }
108 113
109 void SetDeviceSettings(bool ephemeral_users_enabled, 114 void SetDeviceSettings(bool ephemeral_users_enabled,
110 const std::string &owner) { 115 const std::string &owner,
116 bool locally_managed_users_enabled) {
111 base::FundamentalValue 117 base::FundamentalValue
112 ephemeral_users_enabled_value(ephemeral_users_enabled); 118 ephemeral_users_enabled_value(ephemeral_users_enabled);
113 stub_settings_provider_.Set(kAccountsPrefEphemeralUsersEnabled, 119 stub_settings_provider_.Set(kAccountsPrefEphemeralUsersEnabled,
114 ephemeral_users_enabled_value); 120 ephemeral_users_enabled_value);
115 base::StringValue owner_value(owner); 121 base::StringValue owner_value(owner);
116 stub_settings_provider_.Set(kDeviceOwner, owner_value); 122 stub_settings_provider_.Set(kDeviceOwner, owner_value);
123 stub_settings_provider_.Set(kAccountsPrefLocallyManagedUsersEnabled,
124 base::FundamentalValue(locally_managed_users_enabled));
117 } 125 }
118 126
119 void RetrieveTrustedDevicePolicies() { 127 void RetrieveTrustedDevicePolicies() {
120 reinterpret_cast<UserManagerImpl*>(UserManager::Get())-> 128 reinterpret_cast<UserManagerImpl*>(UserManager::Get())->
121 RetrieveTrustedDevicePolicies(); 129 RetrieveTrustedDevicePolicies();
122 } 130 }
123 131
124 protected: 132 protected:
125 base::MessageLoop message_loop_; 133 base::MessageLoop message_loop_;
126 content::TestBrowserThread ui_thread_; 134 content::TestBrowserThread ui_thread_;
127 content::TestBrowserThread file_thread_; 135 content::TestBrowserThread file_thread_;
128 136
129 CrosSettings* cros_settings_; 137 CrosSettings* cros_settings_;
130 CrosSettingsProvider* device_settings_provider_; 138 CrosSettingsProvider* device_settings_provider_;
131 StubCrosSettingsProvider stub_settings_provider_; 139 StubCrosSettingsProvider stub_settings_provider_;
132 scoped_ptr<TestingPrefServiceSimple> local_state_; 140 scoped_ptr<TestingPrefServiceSimple> local_state_;
133 141
134 ScopedTestDeviceSettingsService test_device_settings_service_; 142 ScopedTestDeviceSettingsService test_device_settings_service_;
135 ScopedStubCrosEnabler stub_cros_enabler_; 143 ScopedStubCrosEnabler stub_cros_enabler_;
136 ScopedTestCrosSettings test_cros_settings_; 144 ScopedTestCrosSettings test_cros_settings_;
137 145
138 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_; 146 scoped_ptr<ScopedUserManagerEnabler> user_manager_enabler_;
139 }; 147 };
140 148
141 TEST_F(UserManagerTest, RetrieveTrustedDevicePolicies) { 149 TEST_F(UserManagerTest, RetrieveTrustedDevicePolicies) {
142 SetUserManagerEphemeralUsersEnabled(true); 150 SetUserManagerEphemeralUsersEnabled(true);
143 SetUserManagerOwnerEmail(""); 151 SetUserManagerOwnerEmail("");
144 152
145 SetDeviceSettings(false, "owner@invalid.domain"); 153 SetDeviceSettings(false, "owner@invalid.domain", false);
146 RetrieveTrustedDevicePolicies(); 154 RetrieveTrustedDevicePolicies();
147 155
148 EXPECT_FALSE(GetUserManagerEphemeralUsersEnabled()); 156 EXPECT_FALSE(GetUserManagerEphemeralUsersEnabled());
149 EXPECT_EQ(GetUserManagerOwnerEmail(), "owner@invalid.domain"); 157 EXPECT_EQ(GetUserManagerOwnerEmail(), "owner@invalid.domain");
150 } 158 }
151 159
152 TEST_F(UserManagerTest, RemoveAllExceptOwnerFromList) { 160 TEST_F(UserManagerTest, RemoveAllExceptOwnerFromList) {
153 UserManager::Get()->UserLoggedIn( 161 UserManager::Get()->UserLoggedIn(
154 "owner@invalid.domain", "owner@invalid.domain", false); 162 "owner@invalid.domain", "owner@invalid.domain", false);
155 ResetUserManager(); 163 ResetUserManager();
156 UserManager::Get()->UserLoggedIn( 164 UserManager::Get()->UserLoggedIn(
157 "user0@invalid.domain", "owner@invalid.domain", false); 165 "user0@invalid.domain", "owner@invalid.domain", false);
158 ResetUserManager(); 166 ResetUserManager();
159 UserManager::Get()->UserLoggedIn( 167 UserManager::Get()->UserLoggedIn(
160 "user1@invalid.domain", "owner@invalid.domain", false); 168 "user1@invalid.domain", "owner@invalid.domain", false);
161 ResetUserManager(); 169 ResetUserManager();
162 170
163 const UserList* users = &UserManager::Get()->GetUsers(); 171 const UserList* users = &UserManager::Get()->GetUsers();
164 ASSERT_EQ(3U, users->size()); 172 ASSERT_EQ(3U, users->size());
165 EXPECT_EQ((*users)[0]->email(), "user1@invalid.domain"); 173 EXPECT_EQ((*users)[0]->email(), "user1@invalid.domain");
166 EXPECT_EQ((*users)[1]->email(), "user0@invalid.domain"); 174 EXPECT_EQ((*users)[1]->email(), "user0@invalid.domain");
167 EXPECT_EQ((*users)[2]->email(), "owner@invalid.domain"); 175 EXPECT_EQ((*users)[2]->email(), "owner@invalid.domain");
168 176
169 SetDeviceSettings(true, "owner@invalid.domain"); 177 SetDeviceSettings(true, "owner@invalid.domain", false);
170 RetrieveTrustedDevicePolicies(); 178 RetrieveTrustedDevicePolicies();
171 179
172 users = &UserManager::Get()->GetUsers(); 180 users = &UserManager::Get()->GetUsers();
173 EXPECT_EQ(1U, users->size()); 181 EXPECT_EQ(1U, users->size());
174 EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain"); 182 EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain");
175 } 183 }
176 184
177 TEST_F(UserManagerTest, RegularUserLoggedInAsEphemeral) { 185 TEST_F(UserManagerTest, RegularUserLoggedInAsEphemeral) {
178 SetDeviceSettings(true, "owner@invalid.domain"); 186 SetDeviceSettings(true, "owner@invalid.domain", false);
179 RetrieveTrustedDevicePolicies(); 187 RetrieveTrustedDevicePolicies();
180 188
181 UserManager::Get()->UserLoggedIn( 189 UserManager::Get()->UserLoggedIn(
182 "owner@invalid.domain", "user0@invalid.domain", false); 190 "owner@invalid.domain", "user0@invalid.domain", false);
183 ResetUserManager(); 191 ResetUserManager();
184 UserManager::Get()->UserLoggedIn( 192 UserManager::Get()->UserLoggedIn(
185 "user0@invalid.domain", "user0@invalid.domain", false); 193 "user0@invalid.domain", "user0@invalid.domain", false);
186 ResetUserManager(); 194 ResetUserManager();
187 195
188 const UserList* users = &UserManager::Get()->GetUsers(); 196 const UserList* users = &UserManager::Get()->GetUsers();
189 EXPECT_EQ(1U, users->size()); 197 EXPECT_EQ(1U, users->size());
190 EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain"); 198 EXPECT_EQ((*users)[0]->email(), "owner@invalid.domain");
191 } 199 }
192 200
201 TEST_F(UserManagerTest, DisablingLMUByDeviceSettings) {
202 SetDeviceSettings(false, "owner@invalid.domain", false);
203 RetrieveTrustedDevicePolicies();
204 EXPECT_EQ(GetUserManagerLocallyManagedUsersEnabledByPolicy(), false);
205 SetDeviceSettings(false, "owner@invalid.domain", true);
206 RetrieveTrustedDevicePolicies();
207 EXPECT_EQ(GetUserManagerLocallyManagedUsersEnabledByPolicy(), true);
208
209 }
210
193 } // namespace chromeos 211 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698