OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |