OLD | NEW |
| (Empty) |
1 // Copyright 2007-2010 Google Inc. | |
2 // | |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | |
4 // you may not use this file except in compliance with the License. | |
5 // You may obtain a copy of the License at | |
6 // | |
7 // http://www.apache.org/licenses/LICENSE-2.0 | |
8 // | |
9 // Unless required by applicable law or agreed to in writing, software | |
10 // distributed under the License is distributed on an "AS IS" BASIS, | |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
12 // See the License for the specific language governing permissions and | |
13 // limitations under the License. | |
14 // ======================================================================== | |
15 | |
16 #include <limits.h> | |
17 #include "omaha/base/const_addresses.h" | |
18 #include "omaha/base/constants.h" | |
19 #include "omaha/base/file.h" | |
20 #include "omaha/base/reg_key.h" | |
21 #include "omaha/base/string.h" | |
22 #include "omaha/base/system_info.h" | |
23 #include "omaha/base/time.h" | |
24 #include "omaha/base/utils.h" | |
25 #include "omaha/base/vistautil.h" | |
26 #include "omaha/common/config_manager.h" | |
27 #include "omaha/common/const_goopdate.h" | |
28 #include "omaha/testing/unit_test.h" | |
29 | |
30 namespace omaha { | |
31 | |
32 namespace { | |
33 | |
34 // OMAHA_KEY_REL == "Software\Google\Update" | |
35 #define OMAHA_KEY_REL \ | |
36 _T("Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
37 | |
38 | |
39 #define APP_GUID1 _T("{6762F466-8863-424f-817C-5757931F346E}") | |
40 const TCHAR* const kAppGuid1 = APP_GUID1; | |
41 const TCHAR* const kAppMachineClientStatePath1 = | |
42 _T("HKLM\\") OMAHA_KEY_REL _T("\\ClientState\\") APP_GUID1; | |
43 const TCHAR* const kAppUserClientStatePath1 = | |
44 _T("HKCU\\") OMAHA_KEY_REL _T("\\ClientState\\") APP_GUID1; | |
45 const TCHAR* const kAppMachineClientStateMediumPath1 = | |
46 _T("HKLM\\") OMAHA_KEY_REL _T("\\ClientStateMedium\\") APP_GUID1; | |
47 | |
48 #define APP_GUID2 _T("{8A0FDD16-D4B7-4167-893F-1386F2A2F0FB}") | |
49 const TCHAR* const kAppGuid2 = APP_GUID2; | |
50 const TCHAR* const kAppMachineClientStatePath2 = | |
51 _T("HKLM\\") OMAHA_KEY_REL _T("\\ClientState\\") APP_GUID2; | |
52 const TCHAR* const kAppUserClientStatePath2 = | |
53 _T("HKCU\\") OMAHA_KEY_REL _T("\\ClientState\\") APP_GUID2; | |
54 | |
55 const TCHAR* const kPolicyKey = | |
56 _T("HKLM\\Software\\Policies\\") | |
57 SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME _T("\\"); | |
58 const TCHAR* const kInstallPolicyApp1 = _T("Install") APP_GUID1; | |
59 const TCHAR* const kInstallPolicyApp2 = _T("Install") APP_GUID2; | |
60 const TCHAR* const kUpdatePolicyApp1 = _T("Update") APP_GUID1; | |
61 const TCHAR* const kUpdatePolicyApp2 = _T("Update") APP_GUID2; | |
62 | |
63 // Helper to write policies to the registry. Eliminates ambiguity of which | |
64 // overload of SetValue to use without the need for static_cast. | |
65 HRESULT SetPolicy(const TCHAR* policy_name, DWORD value) { | |
66 return RegKey::SetValue(kPolicyKey, policy_name, value); | |
67 } | |
68 | |
69 // DeleteDirectory can fail with ERROR_PATH_NOT_FOUND if the parent directory | |
70 // does not exist. Consider this a success for testing purposes. | |
71 HRESULT DeleteTestDirectory(const TCHAR* dir) { | |
72 HRESULT hr = DeleteDirectory(dir); | |
73 if (hr == HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND)) { | |
74 return S_OK; | |
75 } | |
76 return hr; | |
77 } | |
78 | |
79 } // namespace | |
80 | |
81 class ConfigManagerNoOverrideTest : public testing::Test { | |
82 protected: | |
83 ConfigManagerNoOverrideTest() | |
84 : cm_(ConfigManager::Instance()) { | |
85 } | |
86 | |
87 bool CanInstallApp(const TCHAR* guid) { | |
88 return cm_->CanInstallApp(StringToGuid(guid)); | |
89 } | |
90 | |
91 bool CanUpdateApp(const TCHAR* guid, bool is_manual) { | |
92 return cm_->CanUpdateApp(StringToGuid(guid), is_manual); | |
93 } | |
94 | |
95 ConfigManager* cm_; | |
96 }; | |
97 | |
98 class ConfigManagerTest : public ConfigManagerNoOverrideTest { | |
99 protected: | |
100 ConfigManagerTest() | |
101 : hive_override_key_name_(kRegistryHiveOverrideRoot) { | |
102 } | |
103 | |
104 virtual void SetUp() { | |
105 RegKey::DeleteKey(hive_override_key_name_, true); | |
106 OverrideRegistryHives(hive_override_key_name_); | |
107 } | |
108 | |
109 virtual void TearDown() { | |
110 RestoreRegistryHives(); | |
111 EXPECT_SUCCEEDED(RegKey::DeleteKey(hive_override_key_name_, true)); | |
112 } | |
113 | |
114 void CanCollectStatsHelper(bool is_machine); | |
115 void CanCollectStatsIgnoresOppositeHiveHelper(bool is_machine); | |
116 HRESULT SetFirstInstallTime(bool is_machine, DWORD time); | |
117 HRESULT DeleteFirstInstallTime(bool is_machine); | |
118 HRESULT SetUpdateTime(bool is_machine, DWORD time); | |
119 HRESULT DeleteUpdateTime(bool is_machine); | |
120 | |
121 CString hive_override_key_name_; | |
122 }; | |
123 | |
124 void ConfigManagerTest::CanCollectStatsHelper(bool is_machine) { | |
125 const TCHAR* app1_state_key_name = is_machine ? kAppMachineClientStatePath1 : | |
126 kAppUserClientStatePath1; | |
127 | |
128 EXPECT_FALSE(cm_->CanCollectStats(is_machine)); | |
129 | |
130 // Test the 'UsageStats' override. | |
131 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
132 kRegValueForceUsageStats, | |
133 _T(""))); | |
134 EXPECT_TRUE(cm_->CanCollectStats(is_machine)); | |
135 EXPECT_SUCCEEDED(RegKey::DeleteValue(MACHINE_REG_UPDATE_DEV, | |
136 kRegValueForceUsageStats)); | |
137 | |
138 DWORD val = 1; | |
139 EXPECT_SUCCEEDED(RegKey::SetValue(app1_state_key_name, | |
140 _T("usagestats"), | |
141 val)); | |
142 EXPECT_TRUE(cm_->CanCollectStats(is_machine)); | |
143 | |
144 val = 2; // invalid value | |
145 EXPECT_SUCCEEDED(RegKey::SetValue(app1_state_key_name, | |
146 _T("usagestats"), | |
147 val)); | |
148 EXPECT_FALSE(cm_->CanCollectStats(is_machine)); | |
149 | |
150 val = 0; | |
151 EXPECT_SUCCEEDED(RegKey::SetValue(app1_state_key_name, | |
152 _T("usagestats"), | |
153 val)); | |
154 EXPECT_FALSE(cm_->CanCollectStats(is_machine)); | |
155 | |
156 // One 0 and one 1 results in true. The alphabetical order of the GUIDs is | |
157 // important assuming GetSubkeyNameAt returns subkeys in alphabetical order. | |
158 const TCHAR* app2_state_key_name = is_machine ? kAppMachineClientStatePath2 : | |
159 kAppUserClientStatePath2; | |
160 val = 1; | |
161 EXPECT_SUCCEEDED(RegKey::SetValue(app2_state_key_name, | |
162 _T("usagestats"), | |
163 val)); | |
164 EXPECT_TRUE(cm_->CanCollectStats(is_machine)); | |
165 } | |
166 | |
167 void ConfigManagerTest::CanCollectStatsIgnoresOppositeHiveHelper( | |
168 bool is_machine) { | |
169 const TCHAR* app1_state_key_name = is_machine ? kAppMachineClientStatePath1 : | |
170 kAppUserClientStatePath1; | |
171 | |
172 EXPECT_FALSE(cm_->CanCollectStats(is_machine)); | |
173 | |
174 DWORD val = 1; | |
175 EXPECT_SUCCEEDED(RegKey::SetValue(app1_state_key_name, | |
176 _T("usagestats"), | |
177 val)); | |
178 EXPECT_TRUE(cm_->CanCollectStats(is_machine)); | |
179 EXPECT_FALSE(cm_->CanCollectStats(!is_machine)); | |
180 } | |
181 | |
182 HRESULT ConfigManagerTest::SetFirstInstallTime(bool is_machine, DWORD time) { | |
183 return RegKey::SetValue(cm_->registry_client_state_goopdate(is_machine), | |
184 kRegValueInstallTimeSec, | |
185 time); | |
186 } | |
187 | |
188 HRESULT ConfigManagerTest::DeleteFirstInstallTime(bool is_machine) { | |
189 if (!RegKey::HasValue(cm_->registry_client_state_goopdate(is_machine), | |
190 kRegValueInstallTimeSec)) { | |
191 return S_OK; | |
192 } | |
193 | |
194 return RegKey::DeleteValue(cm_->registry_client_state_goopdate(is_machine), | |
195 kRegValueInstallTimeSec); | |
196 } | |
197 | |
198 HRESULT ConfigManagerTest::SetUpdateTime(bool is_machine, DWORD time) { | |
199 return RegKey::SetValue(cm_->registry_client_state_goopdate(is_machine), | |
200 kRegValueLastUpdateTimeSec, | |
201 time); | |
202 } | |
203 | |
204 HRESULT ConfigManagerTest::DeleteUpdateTime(bool is_machine) { | |
205 if (!RegKey::HasValue(cm_->registry_client_state_goopdate(is_machine), | |
206 kRegValueLastUpdateTimeSec)) { | |
207 return S_OK; | |
208 } | |
209 | |
210 return RegKey::DeleteValue(cm_->registry_client_state_goopdate(is_machine), | |
211 kRegValueLastUpdateTimeSec); | |
212 } | |
213 | |
214 TEST_F(ConfigManagerNoOverrideTest, RegistryKeys) { | |
215 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\Clients\\"), | |
216 cm_->user_registry_clients()); | |
217 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\Clients\\"), | |
218 cm_->machine_registry_clients()); | |
219 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\Clients\\"), | |
220 cm_->registry_clients(false)); | |
221 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\Clients\\"), | |
222 cm_->registry_clients(true)); | |
223 | |
224 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\Clients\\") GOOPDATE_APP_ID, | |
225 cm_->user_registry_clients_goopdate()); | |
226 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\Clients\\") GOOPDATE_APP_ID, | |
227 cm_->machine_registry_clients_goopdate()); | |
228 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\Clients\\") GOOPDATE_APP_ID, | |
229 cm_->registry_clients_goopdate(false)); | |
230 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\Clients\\") GOOPDATE_APP_ID, | |
231 cm_->registry_clients_goopdate(true)); | |
232 | |
233 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\ClientState\\"), | |
234 cm_->user_registry_client_state()); | |
235 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\ClientState\\"), | |
236 cm_->machine_registry_client_state()); | |
237 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\ClientState\\"), | |
238 cm_->registry_client_state(false)); | |
239 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\ClientState\\"), | |
240 cm_->registry_client_state(true)); | |
241 | |
242 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\ClientState\\") GOOPDATE_APP_ID, | |
243 cm_->user_registry_client_state_goopdate()); | |
244 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\ClientState\\") GOOPDATE_APP_ID, | |
245 cm_->machine_registry_client_state_goopdate()); | |
246 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\ClientState\\") GOOPDATE_APP_ID, | |
247 cm_->registry_client_state_goopdate(false)); | |
248 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\ClientState\\") GOOPDATE_APP_ID, | |
249 cm_->registry_client_state_goopdate(true)); | |
250 | |
251 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\ClientStateMedium\\"), | |
252 cm_->machine_registry_client_state_medium()); | |
253 | |
254 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\"), | |
255 cm_->user_registry_update()); | |
256 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\"), | |
257 cm_->machine_registry_update()); | |
258 EXPECT_STREQ(_T("HKCU\\") OMAHA_KEY_REL _T("\\"), | |
259 cm_->registry_update(false)); | |
260 EXPECT_STREQ(_T("HKLM\\") OMAHA_KEY_REL _T("\\"), | |
261 cm_->registry_update(true)); | |
262 | |
263 EXPECT_STREQ(_T("HKCU\\Software\\") COMPANY_NAME_IDENTIFIER _T("\\"), | |
264 cm_->user_registry_google()); | |
265 EXPECT_STREQ(_T("HKLM\\Software\\") COMPANY_NAME_IDENTIFIER _T("\\"), | |
266 cm_->machine_registry_google()); | |
267 EXPECT_STREQ(_T("HKCU\\Software\\") COMPANY_NAME_IDENTIFIER _T("\\"), | |
268 cm_->registry_google(false)); | |
269 EXPECT_STREQ(_T("HKLM\\Software\\") COMPANY_NAME_IDENTIFIER _T("\\"), | |
270 cm_->registry_google(true)); | |
271 } | |
272 | |
273 TEST_F(ConfigManagerNoOverrideTest, GetUserCrashReportsDir) { | |
274 const CString expected_path = GetGoogleUserPath() + _T("CrashReports"); | |
275 EXPECT_SUCCEEDED(DeleteTestDirectory(expected_path)); | |
276 EXPECT_STREQ(expected_path, cm_->GetUserCrashReportsDir()); | |
277 EXPECT_TRUE(File::Exists(expected_path)); | |
278 } | |
279 | |
280 // Should run before the subdirectory tests to ensure the directory is created. | |
281 TEST_F(ConfigManagerNoOverrideTest, GetUserGoopdateInstallDir) { | |
282 const CString expected_path = GetGoogleUserPath() + _T("Update"); | |
283 EXPECT_STREQ(expected_path, cm_->GetUserGoopdateInstallDir()); | |
284 EXPECT_TRUE(File::Exists(expected_path)); | |
285 } | |
286 | |
287 TEST_F(ConfigManagerNoOverrideTest, GetUserDownloadStorageDir) { | |
288 const CString expected_path = GetGoogleUpdateUserPath() + _T("Download"); | |
289 EXPECT_SUCCEEDED(DeleteTestDirectory(expected_path)); | |
290 EXPECT_STREQ(expected_path, cm_->GetUserDownloadStorageDir()); | |
291 EXPECT_TRUE(File::Exists(expected_path)); | |
292 } | |
293 | |
294 TEST_F(ConfigManagerNoOverrideTest, GetUserInstallWorkingDir) { | |
295 const CString expected_path = GetGoogleUpdateUserPath() + _T("Install"); | |
296 EXPECT_SUCCEEDED(DeleteTestDirectory(expected_path)); | |
297 EXPECT_STREQ(expected_path, cm_->GetUserInstallWorkingDir()); | |
298 EXPECT_TRUE(File::Exists(expected_path)); | |
299 } | |
300 | |
301 TEST_F(ConfigManagerNoOverrideTest, GetUserOfflineStorageDir) { | |
302 const CString expected_path = GetGoogleUpdateUserPath() + _T("Offline"); | |
303 EXPECT_SUCCEEDED(DeleteTestDirectory(expected_path)); | |
304 EXPECT_STREQ(expected_path, cm_->GetUserOfflineStorageDir()); | |
305 EXPECT_TRUE(File::Exists(expected_path)); | |
306 } | |
307 | |
308 TEST_F(ConfigManagerNoOverrideTest, IsRunningFromUserGoopdateInstallDir) { | |
309 EXPECT_FALSE(cm_->IsRunningFromUserGoopdateInstallDir()); | |
310 } | |
311 | |
312 TEST_F(ConfigManagerNoOverrideTest, GetTempDownloadDir) { | |
313 TCHAR expected_path[MAX_PATH] = {0}; | |
314 ASSERT_NE(0, ::GetTempPath(MAX_PATH, expected_path)); | |
315 | |
316 EXPECT_STREQ(expected_path, cm_->GetTempDownloadDir()); | |
317 EXPECT_TRUE(File::Exists(expected_path)); | |
318 } | |
319 | |
320 TEST_F(ConfigManagerNoOverrideTest, GetMachineCrashReportsDir) { | |
321 CString program_files; | |
322 EXPECT_SUCCEEDED(GetFolderPath(CSIDL_PROGRAM_FILES, &program_files)); | |
323 const CString expected_path = | |
324 program_files + _T("\\") + SHORT_COMPANY_NAME + _T("\\CrashReports"); | |
325 EXPECT_SUCCEEDED(DeleteTestDirectory(expected_path)); | |
326 EXPECT_STREQ(expected_path, cm_->GetMachineCrashReportsDir()); | |
327 EXPECT_TRUE(File::Exists(expected_path) || !vista_util::IsUserAdmin()); | |
328 } | |
329 | |
330 // Should run before the subdirectory tests to ensure the directory is created. | |
331 TEST_F(ConfigManagerNoOverrideTest, GetMachineGoopdateInstallDir) { | |
332 CString expected_path = GetGoogleUpdateMachinePath(); | |
333 EXPECT_STREQ(expected_path, cm_->GetMachineGoopdateInstallDir()); | |
334 EXPECT_TRUE(File::Exists(expected_path) || !vista_util::IsUserAdmin()); | |
335 } | |
336 | |
337 TEST_F(ConfigManagerNoOverrideTest, GetMachineSecureDownloadStorageDir) { | |
338 CString expected_path = GetGoogleUpdateMachinePath() + _T("\\Download"); | |
339 EXPECT_SUCCEEDED(DeleteTestDirectory(expected_path)); | |
340 EXPECT_STREQ(expected_path, cm_->GetMachineSecureDownloadStorageDir()); | |
341 EXPECT_TRUE(File::Exists(expected_path) || !vista_util::IsUserAdmin()); | |
342 } | |
343 | |
344 TEST_F(ConfigManagerNoOverrideTest, GetMachineInstallWorkingDir) { | |
345 CString expected_path = GetGoogleUpdateMachinePath() + _T("\\Install"); | |
346 EXPECT_SUCCEEDED(DeleteTestDirectory(expected_path)); | |
347 EXPECT_STREQ(expected_path, cm_->GetMachineInstallWorkingDir()); | |
348 EXPECT_TRUE(File::Exists(expected_path) || !vista_util::IsUserAdmin()); | |
349 } | |
350 | |
351 TEST_F(ConfigManagerNoOverrideTest, GetMachineSecureOfflineStorageDir) { | |
352 CString expected_path = GetGoogleUpdateMachinePath() + _T("\\Offline"); | |
353 EXPECT_SUCCEEDED(DeleteTestDirectory(expected_path)); | |
354 EXPECT_STREQ(expected_path, cm_->GetMachineSecureOfflineStorageDir()); | |
355 EXPECT_TRUE(File::Exists(expected_path) || !vista_util::IsUserAdmin()); | |
356 } | |
357 | |
358 TEST_F(ConfigManagerNoOverrideTest, IsRunningFromMachineGoopdateInstallDir) { | |
359 EXPECT_FALSE(cm_->IsRunningFromMachineGoopdateInstallDir()); | |
360 } | |
361 | |
362 // Tests the GetUpdateCheckUrl override. | |
363 TEST_F(ConfigManagerTest, GetUpdateCheckUrl) { | |
364 CString url; | |
365 EXPECT_SUCCEEDED(cm_->GetUpdateCheckUrl(&url)); | |
366 EXPECT_STREQ(url, kUrlUpdateCheck); | |
367 | |
368 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
369 kRegValueNameUrl, | |
370 _T("http://updatecheck/"))); | |
371 url.Empty(); | |
372 EXPECT_SUCCEEDED(cm_->GetUpdateCheckUrl(&url)); | |
373 EXPECT_STREQ(url, _T("http://updatecheck/")); | |
374 } | |
375 | |
376 // Tests the GetPingUrl override. | |
377 TEST_F(ConfigManagerTest, GetPingUrl) { | |
378 CString url; | |
379 EXPECT_SUCCEEDED(cm_->GetPingUrl(&url)); | |
380 EXPECT_STREQ(url, kUrlPing); | |
381 | |
382 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
383 kRegValueNamePingUrl, | |
384 _T("http://ping/"))); | |
385 url.Empty(); | |
386 EXPECT_SUCCEEDED(cm_->GetPingUrl(&url)); | |
387 EXPECT_STREQ(url, _T("http://ping/")); | |
388 } | |
389 | |
390 // Tests the GetCrashReportUrl override. | |
391 TEST_F(ConfigManagerTest, GetCrashReportUrl) { | |
392 CString url; | |
393 EXPECT_SUCCEEDED(cm_->GetCrashReportUrl(&url)); | |
394 EXPECT_STREQ(url, kUrlCrashReport); | |
395 | |
396 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
397 kRegValueNameCrashReportUrl, | |
398 _T("http://crashreport/"))); | |
399 url.Empty(); | |
400 EXPECT_SUCCEEDED(cm_->GetCrashReportUrl(&url)); | |
401 EXPECT_STREQ(url, _T("http://crashreport/")); | |
402 } | |
403 | |
404 // Tests the GetMoreInfoUrl override. | |
405 TEST_F(ConfigManagerTest, GetMoreInfoUrl) { | |
406 CString url; | |
407 EXPECT_SUCCEEDED(cm_->GetMoreInfoUrl(&url)); | |
408 EXPECT_STREQ(url, kUrlMoreInfo); | |
409 | |
410 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
411 kRegValueNameGetMoreInfoUrl, | |
412 _T("http://moreinfo/"))); | |
413 url.Empty(); | |
414 EXPECT_SUCCEEDED(cm_->GetMoreInfoUrl(&url)); | |
415 EXPECT_STREQ(url, _T("http://moreinfo/")); | |
416 } | |
417 | |
418 // Tests the GetUsageStatsReportUrl override. | |
419 TEST_F(ConfigManagerTest, GetUsageStatsReportUrl) { | |
420 CString url; | |
421 EXPECT_SUCCEEDED(cm_->GetUsageStatsReportUrl(&url)); | |
422 EXPECT_STREQ(url, kUrlUsageStatsReport); | |
423 | |
424 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
425 kRegValueNameUsageStatsReportUrl, | |
426 _T("http://usagestatsreport/"))); | |
427 url.Empty(); | |
428 EXPECT_SUCCEEDED(cm_->GetUsageStatsReportUrl(&url)); | |
429 EXPECT_STREQ(url, _T("http://usagestatsreport/")); | |
430 } | |
431 | |
432 // Tests LastCheckPeriodSec override. | |
433 TEST_F(ConfigManagerTest, GetLastCheckPeriodSec_Default) { | |
434 bool is_overridden = true; | |
435 if (cm_->IsInternalUser()) { | |
436 EXPECT_EQ(kLastCheckPeriodInternalUserSec, | |
437 cm_->GetLastCheckPeriodSec(&is_overridden)); | |
438 } else { | |
439 EXPECT_EQ(kLastCheckPeriodSec, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
440 } | |
441 EXPECT_FALSE(is_overridden); | |
442 } | |
443 | |
444 TEST_F(ConfigManagerTest, GetLastCheckPeriodSec_UpdateDevOverride) { | |
445 // Zero is a special value meaning disabled. | |
446 DWORD val = 0; | |
447 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
448 kRegValueLastCheckPeriodSec, | |
449 val)); | |
450 bool is_overridden = false; | |
451 EXPECT_EQ(0, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
452 EXPECT_TRUE(is_overridden); | |
453 | |
454 val = kMinLastCheckPeriodSec - 1; | |
455 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
456 kRegValueLastCheckPeriodSec, | |
457 val)); | |
458 is_overridden = false; | |
459 EXPECT_EQ(kMinLastCheckPeriodSec, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
460 EXPECT_TRUE(is_overridden); | |
461 | |
462 val = INT_MAX + static_cast<uint32>(1); | |
463 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
464 kRegValueLastCheckPeriodSec, | |
465 val)); | |
466 is_overridden = false; | |
467 EXPECT_EQ(INT_MAX, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
468 EXPECT_TRUE(is_overridden); | |
469 | |
470 val = 1000; | |
471 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
472 kRegValueLastCheckPeriodSec, | |
473 val)); | |
474 is_overridden = false; | |
475 EXPECT_EQ(1000, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
476 EXPECT_TRUE(is_overridden); | |
477 | |
478 EXPECT_SUCCEEDED(RegKey::DeleteValue(MACHINE_REG_UPDATE_DEV, | |
479 kRegValueLastCheckPeriodSec)); | |
480 is_overridden = true; | |
481 if (cm_->IsInternalUser()) { | |
482 EXPECT_EQ(kLastCheckPeriodInternalUserSec, | |
483 cm_->GetLastCheckPeriodSec(&is_overridden)); | |
484 } else { | |
485 EXPECT_EQ(kLastCheckPeriodSec, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
486 } | |
487 EXPECT_FALSE(is_overridden); | |
488 } | |
489 | |
490 TEST_F(ConfigManagerTest, GetLastCheckPeriodSec_GroupPolicyOverride) { | |
491 const DWORD kOverrideMinutes = 16000; | |
492 const DWORD kExpectedSeconds = kOverrideMinutes * 60; | |
493 EXPECT_SUCCEEDED(SetPolicy(_T("AutoUpdateCheckPeriodMinutes"), | |
494 kOverrideMinutes)); | |
495 bool is_overridden = false; | |
496 EXPECT_EQ(kExpectedSeconds, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
497 EXPECT_TRUE(is_overridden); | |
498 } | |
499 | |
500 TEST_F(ConfigManagerTest, GetLastCheckPeriodSec_GroupPolicyOverride_TooLow) { | |
501 const DWORD kOverrideMinutes = 1; | |
502 EXPECT_SUCCEEDED(SetPolicy(_T("AutoUpdateCheckPeriodMinutes"), | |
503 kOverrideMinutes)); | |
504 bool is_overridden = false; | |
505 EXPECT_EQ(kMinLastCheckPeriodSec, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
506 EXPECT_TRUE(is_overridden); | |
507 } | |
508 | |
509 TEST_F(ConfigManagerTest, GetLastCheckPeriodSec_GroupPolicyOverride_Zero) { | |
510 const DWORD kOverrideMinutes = 0; | |
511 EXPECT_SUCCEEDED(SetPolicy(_T("AutoUpdateCheckPeriodMinutes"), | |
512 kOverrideMinutes)); | |
513 bool is_overridden = false; | |
514 EXPECT_EQ(0, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
515 EXPECT_TRUE(is_overridden); | |
516 } | |
517 | |
518 TEST_F(ConfigManagerTest, | |
519 GetLastCheckPeriodSec_GroupPolicyOverride_Overflow_SecondsConversion) { | |
520 const DWORD kOverrideMinutes = UINT_MAX; | |
521 EXPECT_SUCCEEDED(SetPolicy(_T("AutoUpdateCheckPeriodMinutes"), | |
522 kOverrideMinutes)); | |
523 bool is_overridden = false; | |
524 EXPECT_EQ(INT_MAX, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
525 EXPECT_TRUE(is_overridden); | |
526 | |
527 const DWORD kOverrideMinutes2 = INT_MAX + static_cast<uint32>(1); | |
528 EXPECT_SUCCEEDED(SetPolicy(_T("AutoUpdateCheckPeriodMinutes"), | |
529 kOverrideMinutes2)); | |
530 is_overridden = false; | |
531 EXPECT_EQ(INT_MAX, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
532 EXPECT_TRUE(is_overridden); | |
533 | |
534 const DWORD kOverrideMinutes3 = 0xf0000000; | |
535 EXPECT_SUCCEEDED(SetPolicy(_T("AutoUpdateCheckPeriodMinutes"), | |
536 kOverrideMinutes3)); | |
537 is_overridden = false; | |
538 EXPECT_EQ(INT_MAX, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
539 EXPECT_TRUE(is_overridden); | |
540 } | |
541 | |
542 // Overflow the integer but not the minutes to seconds conversion. | |
543 TEST_F(ConfigManagerTest, | |
544 GetLastCheckPeriodSec_GroupPolicyOverride_Overflow_Int) { | |
545 const DWORD kOverrideMinutes = UINT_MAX / 60; | |
546 EXPECT_GT(UINT_MAX, kOverrideMinutes); | |
547 | |
548 EXPECT_SUCCEEDED(SetPolicy(_T("AutoUpdateCheckPeriodMinutes"), | |
549 kOverrideMinutes)); | |
550 bool is_overridden = false; | |
551 EXPECT_EQ(INT_MAX, cm_->GetLastCheckPeriodSec(&is_overridden)); | |
552 EXPECT_TRUE(is_overridden); | |
553 } | |
554 | |
555 // UpdateDev takes precedence over the Group Policy override. | |
556 TEST_F(ConfigManagerTest, | |
557 GetLastCheckPeriodSec_GroupPolicyAndUpdateDevOverrides) { | |
558 const DWORD kGroupPolicyOverrideMinutes = 100; | |
559 EXPECT_SUCCEEDED(SetPolicy(_T("AutoUpdateCheckPeriodMinutes"), | |
560 kGroupPolicyOverrideMinutes)); | |
561 const DWORD kUpdateDevOverrideSeconds = 70; | |
562 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
563 kRegValueLastCheckPeriodSec, | |
564 kUpdateDevOverrideSeconds)); | |
565 | |
566 bool is_overridden = false; | |
567 EXPECT_EQ(kUpdateDevOverrideSeconds, | |
568 cm_->GetLastCheckPeriodSec(&is_overridden)); | |
569 EXPECT_TRUE(is_overridden); | |
570 } | |
571 | |
572 TEST_F(ConfigManagerTest, CanCollectStats_LegacyLocationNewName) { | |
573 DWORD val = 1; | |
574 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
575 _T("usagestats"), | |
576 val)); | |
577 EXPECT_FALSE(cm_->CanCollectStats(true)); | |
578 } | |
579 | |
580 TEST_F(ConfigManagerTest, CanCollectStats_MachineOnly) { | |
581 CanCollectStatsHelper(true); | |
582 } | |
583 | |
584 TEST_F(ConfigManagerTest, CanCollectStats_UserOnly) { | |
585 CanCollectStatsHelper(false); | |
586 } | |
587 | |
588 // This tests that the legacy conversion is honored. | |
589 TEST_F(ConfigManagerTest, CanCollectStats_GoopdateGuidIsChecked) { | |
590 EXPECT_FALSE(cm_->CanCollectStats(true)); | |
591 | |
592 DWORD val = 1; | |
593 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, | |
594 _T("usagestats"), | |
595 val)); | |
596 EXPECT_TRUE(cm_->CanCollectStats(true)); | |
597 } | |
598 | |
599 TEST_F(ConfigManagerTest, CanCollectStats_MachineIgnoresUser) { | |
600 CanCollectStatsIgnoresOppositeHiveHelper(true); | |
601 } | |
602 | |
603 TEST_F(ConfigManagerTest, CanCollectStats_UserIgnoresMachine) { | |
604 CanCollectStatsIgnoresOppositeHiveHelper(false); | |
605 } | |
606 // Unfortunately, the app's ClientStateMedium key is not checked if there is no | |
607 // corresponding ClientState key. | |
608 TEST_F(ConfigManagerTest, | |
609 CanCollectStats_Machine_ClientStateMediumOnly_AppClientStateKeyMissing) { | |
610 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath1, | |
611 _T("usagestats"), | |
612 static_cast<DWORD>(1))); | |
613 EXPECT_FALSE(cm_->CanCollectStats(true)); | |
614 } | |
615 | |
616 TEST_F(ConfigManagerTest, | |
617 CanCollectStats_Machine_ClientStateMediumOnly_AppClientStateKeyExists) { | |
618 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath1)); | |
619 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath1, | |
620 _T("usagestats"), | |
621 static_cast<DWORD>(1))); | |
622 EXPECT_TRUE(cm_->CanCollectStats(true)); | |
623 } | |
624 | |
625 TEST_F(ConfigManagerTest, | |
626 CanCollectStats_Machine_ClientStateMediumInvalid) { | |
627 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath1)); | |
628 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath1, | |
629 _T("usagestats"), | |
630 static_cast<DWORD>(2))); | |
631 EXPECT_FALSE(cm_->CanCollectStats(true)); | |
632 } | |
633 | |
634 TEST_F(ConfigManagerTest, CanCollectStats_User_ClientStateMediumOnly) { | |
635 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStatePath1)); | |
636 EXPECT_SUCCEEDED(RegKey::SetValue( | |
637 _T("HKCU\\") OMAHA_KEY_REL _T("\\ClientStateMedium\\") APP_GUID1, | |
638 _T("usagestats"), | |
639 static_cast<DWORD>(1))); | |
640 EXPECT_FALSE(cm_->CanCollectStats(false)); | |
641 } | |
642 | |
643 TEST_F(ConfigManagerTest, | |
644 CanCollectStats_Machine_ClientStateZeroClientStateMediumOne) { | |
645 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath1, | |
646 _T("usagestats"), | |
647 static_cast<DWORD>(0))); | |
648 EXPECT_FALSE(cm_->CanCollectStats(true)); | |
649 | |
650 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath1, | |
651 _T("usagestats"), | |
652 static_cast<DWORD>(1))); | |
653 EXPECT_TRUE(cm_->CanCollectStats(true)); | |
654 } | |
655 | |
656 TEST_F(ConfigManagerTest, | |
657 CanCollectStats_Machine_ClientStateOneClientStateMediumZero) { | |
658 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath1, | |
659 _T("usagestats"), | |
660 static_cast<DWORD>(1))); | |
661 EXPECT_TRUE(cm_->CanCollectStats(true)); | |
662 | |
663 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath1, | |
664 _T("usagestats"), | |
665 static_cast<DWORD>(0))); | |
666 EXPECT_FALSE(cm_->CanCollectStats(true)); | |
667 } | |
668 | |
669 // Tests OverInstall override. | |
670 TEST_F(ConfigManagerTest, CanOverInstall) { | |
671 EXPECT_EQ(cm_->CanOverInstall(), !OFFICIAL_BUILD); | |
672 | |
673 DWORD val = 1; | |
674 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
675 kRegValueNameOverInstall, | |
676 val)); | |
677 #ifdef DEBUG | |
678 EXPECT_TRUE(cm_->CanOverInstall()); | |
679 #else | |
680 EXPECT_EQ(!OFFICIAL_BUILD, cm_->CanOverInstall()); | |
681 #endif | |
682 | |
683 val = 0; | |
684 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
685 kRegValueNameOverInstall, | |
686 val)); | |
687 #ifdef DEBUG | |
688 EXPECT_FALSE(cm_->CanOverInstall()); | |
689 #else | |
690 EXPECT_EQ(!OFFICIAL_BUILD, cm_->CanOverInstall()); | |
691 #endif | |
692 } | |
693 | |
694 // Tests AuCheckPeriodMs override. | |
695 TEST_F(ConfigManagerTest, GetAutoUpdateTimerIntervalMs) { | |
696 EXPECT_EQ(cm_->IsInternalUser() ? kAUCheckPeriodInternalUserMs : | |
697 kAUCheckPeriodMs, | |
698 cm_->GetAutoUpdateTimerIntervalMs()); | |
699 | |
700 DWORD val = 0; | |
701 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
702 kRegValueAuCheckPeriodMs, | |
703 val)); | |
704 EXPECT_EQ(kMinAUCheckPeriodMs, cm_->GetAutoUpdateTimerIntervalMs()); | |
705 | |
706 val = kMinAUCheckPeriodMs - 1; | |
707 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
708 kRegValueAuCheckPeriodMs, | |
709 val)); | |
710 EXPECT_EQ(kMinAUCheckPeriodMs, cm_->GetAutoUpdateTimerIntervalMs()); | |
711 | |
712 val = 30000; | |
713 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
714 kRegValueAuCheckPeriodMs, | |
715 val)); | |
716 EXPECT_EQ(val, cm_->GetAutoUpdateTimerIntervalMs()); | |
717 | |
718 val = INT_MAX; | |
719 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
720 kRegValueAuCheckPeriodMs, | |
721 val)); | |
722 EXPECT_EQ(val, cm_->GetAutoUpdateTimerIntervalMs()); | |
723 | |
724 // Tests overflow with large positive numbers. | |
725 val = INT_MAX; | |
726 ++val; | |
727 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
728 kRegValueAuCheckPeriodMs, | |
729 val)); | |
730 EXPECT_EQ(INT_MAX, cm_->GetAutoUpdateTimerIntervalMs()); | |
731 | |
732 val = UINT_MAX; | |
733 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
734 kRegValueAuCheckPeriodMs, | |
735 val)); | |
736 EXPECT_EQ(INT_MAX, cm_->GetAutoUpdateTimerIntervalMs()); | |
737 } | |
738 | |
739 // Tests CrCheckPeriodMs override. | |
740 TEST_F(ConfigManagerTest, GetCodeRedTimerIntervalMs) { | |
741 EXPECT_EQ(kCodeRedCheckPeriodMs, cm_->GetCodeRedTimerIntervalMs()); | |
742 | |
743 DWORD val = 0; | |
744 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
745 kRegValueCrCheckPeriodMs, | |
746 val)); | |
747 EXPECT_EQ(kMinCodeRedCheckPeriodMs, cm_->GetCodeRedTimerIntervalMs()); | |
748 | |
749 val = kMinCodeRedCheckPeriodMs - 1; | |
750 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
751 kRegValueCrCheckPeriodMs, | |
752 val)); | |
753 EXPECT_EQ(kMinCodeRedCheckPeriodMs, cm_->GetCodeRedTimerIntervalMs()); | |
754 | |
755 val = 60000; | |
756 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
757 kRegValueCrCheckPeriodMs, | |
758 val)); | |
759 EXPECT_EQ(val, cm_->GetCodeRedTimerIntervalMs()); | |
760 | |
761 val = INT_MAX; | |
762 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
763 kRegValueCrCheckPeriodMs, | |
764 val)); | |
765 EXPECT_EQ(val, cm_->GetCodeRedTimerIntervalMs()); | |
766 | |
767 // Tests overflow with large positive numbers. | |
768 val = INT_MAX; | |
769 ++val; | |
770 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
771 kRegValueCrCheckPeriodMs, | |
772 val)); | |
773 EXPECT_EQ(INT_MAX, cm_->GetCodeRedTimerIntervalMs()); | |
774 | |
775 val = UINT_MAX; | |
776 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
777 kRegValueCrCheckPeriodMs, | |
778 val)); | |
779 EXPECT_EQ(INT_MAX, cm_->GetCodeRedTimerIntervalMs()); | |
780 } | |
781 | |
782 // Tests CanLogEvents override. | |
783 TEST_F(ConfigManagerTest, CanLogEvents_WithOutOverride) { | |
784 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_SUCCESS)); | |
785 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_ERROR_TYPE)); | |
786 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_WARNING_TYPE)); | |
787 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_INFORMATION_TYPE)); | |
788 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_AUDIT_SUCCESS)); | |
789 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_AUDIT_FAILURE)); | |
790 } | |
791 | |
792 TEST_F(ConfigManagerTest, CanLogEvents) { | |
793 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_INFORMATION_TYPE)); | |
794 | |
795 DWORD val = LOG_EVENT_LEVEL_ALL; | |
796 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
797 kRegValueEventLogLevel, | |
798 val)); | |
799 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_SUCCESS)); | |
800 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_ERROR_TYPE)); | |
801 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_WARNING_TYPE)); | |
802 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_INFORMATION_TYPE)); | |
803 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_AUDIT_SUCCESS)); | |
804 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_AUDIT_FAILURE)); | |
805 | |
806 val = LOG_EVENT_LEVEL_WARN_AND_ERROR; | |
807 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
808 kRegValueEventLogLevel, | |
809 val)); | |
810 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_SUCCESS)); | |
811 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_ERROR_TYPE)); | |
812 EXPECT_TRUE(cm_->CanLogEvents(EVENTLOG_WARNING_TYPE)); | |
813 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_INFORMATION_TYPE)); | |
814 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_AUDIT_SUCCESS)); | |
815 EXPECT_FALSE(cm_->CanLogEvents(EVENTLOG_AUDIT_FAILURE)); | |
816 } | |
817 | |
818 // Tests GetTestSource override. | |
819 TEST_F(ConfigManagerTest, GetTestSource_Dev) { | |
820 CString expected_value; | |
821 #if DEBUG || !OFFICIAL_BUILD | |
822 expected_value = kRegValueTestSourceAuto; | |
823 #endif | |
824 | |
825 CString test_source = cm_->GetTestSource(); | |
826 EXPECT_STREQ(expected_value, test_source); | |
827 ASSERT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
828 kRegValueTestSource, | |
829 _T("dev"))); | |
830 test_source = cm_->GetTestSource(); | |
831 EXPECT_STREQ(_T("dev"), test_source); | |
832 } | |
833 | |
834 TEST_F(ConfigManagerTest, GetTestSource_EmptyRegKey) { | |
835 CString expected_value; | |
836 | |
837 #if DEBUG || !OFFICIAL_BUILD | |
838 expected_value = kRegValueTestSourceAuto; | |
839 #endif | |
840 | |
841 CString test_source = cm_->GetTestSource(); | |
842 EXPECT_STREQ(expected_value, test_source); | |
843 ASSERT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
844 kRegValueTestSource, | |
845 _T(""))); | |
846 test_source = cm_->GetTestSource(); | |
847 EXPECT_STREQ(kRegValueTestSourceAuto, test_source); | |
848 } | |
849 | |
850 // | |
851 // CanUseNetwork tests. | |
852 // | |
853 | |
854 // Covers UpdateEulaAccepted case. | |
855 TEST_F(ConfigManagerTest, CanUseNetwork_Machine_Normal) { | |
856 EXPECT_TRUE(cm_->CanUseNetwork(true)); | |
857 } | |
858 | |
859 // Covers UpdateEulaAccepted case. | |
860 TEST_F(ConfigManagerTest, CanUseNetwork_User_Normal) { | |
861 EXPECT_TRUE(cm_->CanUseNetwork(false)); | |
862 } | |
863 | |
864 // These cover the not OEM install mode cases. | |
865 TEST_F(ConfigManagerTest, CanUseNetwork_Machine_UpdateEulaNotAccepted) { | |
866 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
867 _T("eulaaccepted"), | |
868 static_cast<DWORD>(0))); | |
869 EXPECT_FALSE(cm_->CanUseNetwork(true)); | |
870 } | |
871 | |
872 TEST_F(ConfigManagerTest, | |
873 CanUseNetwork_Machine_UpdateEulaNotAccepted_AppEulaAccepted) { | |
874 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
875 _T("eulaaccepted"), | |
876 static_cast<DWORD>(0))); | |
877 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath1, | |
878 _T("eulaaccepted"), | |
879 static_cast<DWORD>(1))); | |
880 EXPECT_FALSE(cm_->CanUseNetwork(true)); | |
881 } | |
882 | |
883 TEST_F(ConfigManagerTest, CanUseNetwork_Machine_AppEulaNotAccepted) { | |
884 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath1, | |
885 _T("eulaaccepted"), | |
886 static_cast<DWORD>(0))); | |
887 EXPECT_TRUE(cm_->CanUseNetwork(true)); | |
888 } | |
889 | |
890 TEST_F(ConfigManagerTest, CanUseNetwork_Machine_AppEulaAccepted) { | |
891 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath1, | |
892 _T("eulaaccepted"), | |
893 static_cast<DWORD>(1))); | |
894 EXPECT_TRUE(cm_->CanUseNetwork(true)); | |
895 } | |
896 | |
897 TEST_F(ConfigManagerTest, CanUseNetwork_Machine_UserUpdateEulaNotAccepted) { | |
898 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
899 _T("eulaaccepted"), | |
900 static_cast<DWORD>(0))); | |
901 EXPECT_TRUE(cm_->CanUseNetwork(true)); | |
902 } | |
903 | |
904 TEST_F(ConfigManagerTest, CanUseNetwork_User_UpdateEulaNotAccepted) { | |
905 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
906 _T("eulaaccepted"), | |
907 static_cast<DWORD>(0))); | |
908 EXPECT_FALSE(cm_->CanUseNetwork(false)); | |
909 } | |
910 | |
911 TEST_F(ConfigManagerTest, | |
912 CanUseNetwork_User_UpdateEulaNotAccepted_AppEulaAccepted) { | |
913 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
914 _T("eulaaccepted"), | |
915 static_cast<DWORD>(0))); | |
916 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath1, | |
917 _T("eulaaccepted"), | |
918 static_cast<DWORD>(1))); | |
919 EXPECT_FALSE(cm_->CanUseNetwork(false)); | |
920 } | |
921 | |
922 TEST_F(ConfigManagerTest, CanUseNetwork_User_AppEulaNotAccepted) { | |
923 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath1, | |
924 _T("eulaaccepted"), | |
925 static_cast<DWORD>(0))); | |
926 EXPECT_TRUE(cm_->CanUseNetwork(false)); | |
927 } | |
928 | |
929 TEST_F(ConfigManagerTest, CanUseNetwork_User_AppEulaAccepted) { | |
930 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath1, | |
931 _T("eulaaccepted"), | |
932 static_cast<DWORD>(1))); | |
933 EXPECT_TRUE(cm_->CanUseNetwork(false)); | |
934 } | |
935 | |
936 TEST_F(ConfigManagerTest, CanUseNetwork_User_MachineUpdateEulaNotAccepted) { | |
937 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
938 _T("eulaaccepted"), | |
939 static_cast<DWORD>(0))); | |
940 EXPECT_TRUE(cm_->CanUseNetwork(false)); | |
941 } | |
942 | |
943 // TODO(omaha): Figure out a way to test the result. | |
944 TEST_F(ConfigManagerTest, IsInternalUser) { | |
945 cm_->IsInternalUser(); | |
946 } | |
947 | |
948 TEST_F(ConfigManagerTest, IsWindowsInstalling_Normal) { | |
949 EXPECT_FALSE(cm_->IsWindowsInstalling()); | |
950 } | |
951 | |
952 // While this test passes, the return value of IsWindowsInstalling() is not | |
953 // fully tested because the account is not Administrator. | |
954 TEST_F(ConfigManagerTest, IsWindowsInstalling_Installing_Vista_InvalidValues) { | |
955 if (!vista_util::IsVistaOrLater()) { | |
956 return; | |
957 } | |
958 | |
959 EXPECT_SUCCEEDED(RegKey::SetValue( | |
960 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
961 _T("ImageState"), | |
962 _T(""))); | |
963 EXPECT_FALSE(cm_->IsWindowsInstalling()); | |
964 | |
965 EXPECT_SUCCEEDED(RegKey::SetValue( | |
966 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
967 _T("ImageState"), | |
968 _T("foo"))); | |
969 EXPECT_FALSE(cm_->IsWindowsInstalling()); | |
970 | |
971 EXPECT_SUCCEEDED(RegKey::SetValue( | |
972 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
973 _T("ImageState"), | |
974 static_cast<DWORD>(1))); | |
975 ExpectAsserts expect_asserts; // RegKey asserts because value type is wrong. | |
976 EXPECT_FALSE(cm_->IsWindowsInstalling()); | |
977 } | |
978 | |
979 // TODO(omaha): This test fails because the account is not Administrator. Maybe | |
980 // just delete them if this is the final implementation of Audit Mode detection. | |
981 TEST_F(ConfigManagerTest, IsWindowsInstalling_Installing_Vista_ValidStates) { | |
982 if (!vista_util::IsVistaOrLater()) { | |
983 return; | |
984 } | |
985 | |
986 // These states return false in the original implementation. | |
987 EXPECT_SUCCEEDED(RegKey::SetValue( | |
988 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
989 _T("ImageState"), | |
990 _T("IMAGE_STATE_COMPLETE"))); | |
991 EXPECT_FALSE(cm_->IsWindowsInstalling()); | |
992 | |
993 EXPECT_SUCCEEDED(RegKey::SetValue( | |
994 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
995 _T("ImageState"), | |
996 _T("IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE"))); | |
997 EXPECT_FALSE(cm_->IsWindowsInstalling()); | |
998 | |
999 EXPECT_SUCCEEDED(RegKey::SetValue( | |
1000 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
1001 _T("ImageState"), | |
1002 _T("IMAGE_STATE_SPECIALIZE_RESEAL_TO_OOBE"))); | |
1003 EXPECT_FALSE(cm_->IsWindowsInstalling()); | |
1004 | |
1005 // These states are specified in the original implementation. | |
1006 EXPECT_SUCCEEDED(RegKey::SetValue( | |
1007 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
1008 _T("ImageState"), | |
1009 _T("IMAGE_STATE_UNDEPLOYABLE"))); | |
1010 EXPECT_TRUE(cm_->IsWindowsInstalling()); | |
1011 | |
1012 EXPECT_SUCCEEDED(RegKey::SetValue( | |
1013 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
1014 _T("ImageState"), | |
1015 _T("IMAGE_STATE_GENERALIZE_RESEAL_TO_AUDIT"))); | |
1016 EXPECT_TRUE(cm_->IsWindowsInstalling()); | |
1017 | |
1018 EXPECT_SUCCEEDED(RegKey::SetValue( | |
1019 _T("HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Setup\\State"), | |
1020 _T("ImageState"), | |
1021 _T("IMAGE_STATE_SPECIALIZE_RESEAL_TO_AUDIT"))); | |
1022 EXPECT_TRUE(cm_->IsWindowsInstalling()); | |
1023 } | |
1024 | |
1025 TEST_F(ConfigManagerTest, CanInstallApp_NoGroupPolicy) { | |
1026 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1027 } | |
1028 | |
1029 TEST_F(ConfigManagerTest, CanInstallApp_DifferentAppDisabled) { | |
1030 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp2, 0)); | |
1031 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1032 } | |
1033 | |
1034 TEST_F(ConfigManagerTest, CanInstallApp_NoDefaultValue_AppDisabled) { | |
1035 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 0)); | |
1036 EXPECT_FALSE(CanInstallApp(kAppGuid1)); | |
1037 } | |
1038 | |
1039 TEST_F(ConfigManagerTest, CanInstallApp_NoDefaultValue_AppEnabled) { | |
1040 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 1)); | |
1041 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1042 } | |
1043 | |
1044 TEST_F(ConfigManagerTest, CanInstallApp_NoDefaultValue_AppInvalid) { | |
1045 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 2)); | |
1046 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1047 } | |
1048 | |
1049 TEST_F(ConfigManagerTest, CanInstallApp_DefaultDisabled_NoAppValue) { | |
1050 EXPECT_SUCCEEDED(SetPolicy(_T("InstallDefault"), 0)); | |
1051 EXPECT_FALSE(CanInstallApp(kAppGuid1)); | |
1052 } | |
1053 | |
1054 TEST_F(ConfigManagerTest, CanInstallApp_DefaultDisabled_AppDisabled) { | |
1055 EXPECT_SUCCEEDED(SetPolicy(_T("InstallDefault"), 0)); | |
1056 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 0)); | |
1057 EXPECT_FALSE(CanInstallApp(kAppGuid1)); | |
1058 } | |
1059 | |
1060 TEST_F(ConfigManagerTest, CanInstallApp_DefaultDisabled_AppEnabled) { | |
1061 EXPECT_SUCCEEDED(SetPolicy(_T("InstallDefault"), 0)); | |
1062 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 1)); | |
1063 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1064 } | |
1065 | |
1066 // Invalid value defaulting to true overrides the InstallDefault disable. | |
1067 TEST_F(ConfigManagerTest, CanInstallApp_DefaultDisabled_AppInvalid) { | |
1068 EXPECT_SUCCEEDED(SetPolicy(_T("InstallDefault"), 0)); | |
1069 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 2)); | |
1070 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1071 } | |
1072 | |
1073 TEST_F(ConfigManagerTest, CanInstallApp_DefaultEnabled_NoAppValue) { | |
1074 EXPECT_SUCCEEDED(SetPolicy(_T("InstallDefault"), 1)); | |
1075 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1076 } | |
1077 | |
1078 TEST_F(ConfigManagerTest, CanInstallApp_DefaultEnabled_AppDisabled) { | |
1079 EXPECT_SUCCEEDED(SetPolicy(_T("InstallDefault"), 1)); | |
1080 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 0)); | |
1081 EXPECT_FALSE(CanInstallApp(kAppGuid1)); | |
1082 } | |
1083 | |
1084 TEST_F(ConfigManagerTest, CanInstallApp_DefaultEnabled_AppEnabled) { | |
1085 EXPECT_SUCCEEDED(SetPolicy(_T("InstallDefault"), 1)); | |
1086 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 1)); | |
1087 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1088 } | |
1089 | |
1090 TEST_F(ConfigManagerTest, CanInstallApp_DefaultEnabled_AppInvalid) { | |
1091 EXPECT_SUCCEEDED(SetPolicy(_T("InstallDefault"), 1)); | |
1092 EXPECT_SUCCEEDED(SetPolicy(kInstallPolicyApp1, 2)); | |
1093 EXPECT_TRUE(CanInstallApp(kAppGuid1)); | |
1094 } | |
1095 | |
1096 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_NoGroupPolicy) { | |
1097 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1098 } | |
1099 | |
1100 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DifferentAppDisabled) { | |
1101 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp2, 0)); | |
1102 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1103 } | |
1104 | |
1105 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DifferentAppManualOnly) { | |
1106 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp2, 2)); | |
1107 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1108 } | |
1109 | |
1110 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_NoDefaultValue_AppDisabled) { | |
1111 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 0)); | |
1112 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1113 } | |
1114 | |
1115 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_NoDefaultValue_AppEnabled) { | |
1116 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 1)); | |
1117 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1118 } | |
1119 | |
1120 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_NoDefaultValue_AppManualOnly) { | |
1121 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 2)); | |
1122 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1123 } | |
1124 | |
1125 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultDisabled_NoAppValue) { | |
1126 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1127 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1128 } | |
1129 | |
1130 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultDisabled_AppDisabled) { | |
1131 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1132 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 0)); | |
1133 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1134 } | |
1135 | |
1136 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultDisabled_AppEnabled) { | |
1137 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1138 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 1)); | |
1139 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1140 } | |
1141 | |
1142 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultDisabled_AppManualOnly) { | |
1143 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1144 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 2)); | |
1145 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1146 } | |
1147 | |
1148 // Invalid value defaulting to true overrides the UpdateDefault disable. | |
1149 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultDisabled_AppInvalid) { | |
1150 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1151 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 3)); | |
1152 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1153 } | |
1154 | |
1155 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultEnabled_NoAppValue) { | |
1156 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1157 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1158 } | |
1159 | |
1160 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultEnabled_AppDisabled) { | |
1161 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1162 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 0)); | |
1163 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1164 } | |
1165 | |
1166 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultEnabled_AppEnabled) { | |
1167 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1168 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 1)); | |
1169 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1170 } | |
1171 | |
1172 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultEnabled_AppManualOnly) { | |
1173 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1174 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 2)); | |
1175 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1176 } | |
1177 | |
1178 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultEnabled_AppInvalid) { | |
1179 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1180 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 3)); | |
1181 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1182 } | |
1183 | |
1184 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultManualOnly_NoAppValue) { | |
1185 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1186 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1187 } | |
1188 | |
1189 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultManualOnly_AppDisabled) { | |
1190 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1191 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 0)); | |
1192 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1193 } | |
1194 | |
1195 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultManualOnly_AppEnabled) { | |
1196 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1197 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 1)); | |
1198 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1199 } | |
1200 | |
1201 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultManualOnly_AppManualOnly) { | |
1202 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1203 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 2)); | |
1204 EXPECT_FALSE(CanUpdateApp(kAppGuid1, false)); | |
1205 } | |
1206 | |
1207 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultManualOnly_AppInvalid) { | |
1208 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1209 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 3)); | |
1210 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1211 } | |
1212 | |
1213 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_DefaultInvalid_NoAppValue) { | |
1214 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 3)); | |
1215 EXPECT_TRUE(CanUpdateApp(kAppGuid1, false)); | |
1216 } | |
1217 | |
1218 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_Omaha_DefaultDisabled) { | |
1219 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1220 EXPECT_TRUE(CanUpdateApp(kGoogleUpdateAppId, false)); | |
1221 } | |
1222 | |
1223 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_Omaha_DefaultManualOnly) { | |
1224 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1225 EXPECT_TRUE(CanUpdateApp(kGoogleUpdateAppId, false)); | |
1226 } | |
1227 | |
1228 TEST_F(ConfigManagerTest, CanUpdateApp_Auto_Omaha_AppDisabled) { | |
1229 EXPECT_SUCCEEDED(SetPolicy(_T("Update") GOOPDATE_APP_ID, 0)); | |
1230 EXPECT_TRUE(CanUpdateApp(kGoogleUpdateAppId, false)); | |
1231 } | |
1232 | |
1233 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_NoGroupPolicy) { | |
1234 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1235 } | |
1236 | |
1237 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DifferentAppDisabled) { | |
1238 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp2, 0)); | |
1239 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1240 } | |
1241 | |
1242 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DifferentAppManualOnly) { | |
1243 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp2, 2)); | |
1244 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1245 } | |
1246 | |
1247 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_NoDefaultValue_AppDisabled) { | |
1248 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 0)); | |
1249 EXPECT_FALSE(CanUpdateApp(kAppGuid1, true)); | |
1250 } | |
1251 | |
1252 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_NoDefaultValue_AppEnabled) { | |
1253 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 1)); | |
1254 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1255 } | |
1256 | |
1257 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_NoDefaultValue_AppManualOnly) { | |
1258 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 2)); | |
1259 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1260 } | |
1261 | |
1262 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultDisabled_NoAppValue) { | |
1263 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1264 EXPECT_FALSE(CanUpdateApp(kAppGuid1, true)); | |
1265 } | |
1266 | |
1267 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultDisabled_AppDisabled) { | |
1268 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1269 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 0)); | |
1270 EXPECT_FALSE(CanUpdateApp(kAppGuid1, true)); | |
1271 } | |
1272 | |
1273 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultDisabled_AppEnabled) { | |
1274 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1275 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 1)); | |
1276 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1277 } | |
1278 | |
1279 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultDisabled_AppManualOnly) { | |
1280 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1281 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 2)); | |
1282 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1283 } | |
1284 | |
1285 // Invalid value defaulting to true overrides the UpdateDefault disable. | |
1286 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultDisabled_AppInvalid) { | |
1287 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1288 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 3)); | |
1289 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1290 } | |
1291 | |
1292 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultEnabled_NoAppValue) { | |
1293 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1294 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1295 } | |
1296 | |
1297 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultEnabled_AppDisabled) { | |
1298 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1299 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 0)); | |
1300 EXPECT_FALSE(CanUpdateApp(kAppGuid1, true)); | |
1301 } | |
1302 | |
1303 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultEnabled_AppEnabled) { | |
1304 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1305 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 1)); | |
1306 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1307 } | |
1308 | |
1309 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultEnabled_AppManualOnly) { | |
1310 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1311 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 2)); | |
1312 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1313 } | |
1314 | |
1315 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultEnabled_AppInvalid) { | |
1316 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 1)); | |
1317 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 3)); | |
1318 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1319 } | |
1320 | |
1321 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultManualOnly_NoAppValue) { | |
1322 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1323 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1324 } | |
1325 | |
1326 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultManualOnly_AppDisabled) { | |
1327 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1328 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 0)); | |
1329 EXPECT_FALSE(CanUpdateApp(kAppGuid1, true)); | |
1330 } | |
1331 | |
1332 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultManualOnly_AppEnabled) { | |
1333 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1334 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 1)); | |
1335 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1336 } | |
1337 | |
1338 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultManualOnly_AppManualOnly) { | |
1339 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1340 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 2)); | |
1341 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1342 } | |
1343 | |
1344 TEST_F(ConfigManagerTest, CanUpdateApp_Maual_DefaultManualOnly_AppInvalid) { | |
1345 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1346 EXPECT_SUCCEEDED(SetPolicy(kUpdatePolicyApp1, 3)); | |
1347 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1348 } | |
1349 | |
1350 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_DefaultInvalid_NoAppValue) { | |
1351 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 3)); | |
1352 EXPECT_TRUE(CanUpdateApp(kAppGuid1, true)); | |
1353 } | |
1354 | |
1355 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_Omaha_DefaultDisabled) { | |
1356 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 0)); | |
1357 EXPECT_TRUE(CanUpdateApp(kGoogleUpdateAppId, true)); | |
1358 } | |
1359 | |
1360 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_Omaha_DefaultManualOnly) { | |
1361 EXPECT_SUCCEEDED(SetPolicy(_T("UpdateDefault"), 2)); | |
1362 EXPECT_TRUE(CanUpdateApp(kGoogleUpdateAppId, true)); | |
1363 } | |
1364 | |
1365 TEST_F(ConfigManagerTest, CanUpdateApp_Manual_Omaha_AppDisabled) { | |
1366 EXPECT_SUCCEEDED(SetPolicy(_T("Update") GOOPDATE_APP_ID, 0)); | |
1367 EXPECT_TRUE(CanUpdateApp(kGoogleUpdateAppId, true)); | |
1368 } | |
1369 | |
1370 TEST_F(ConfigManagerTest, GetPackageCacheSizeLimitMBytes_Default) { | |
1371 EXPECT_EQ(500, cm_->GetPackageCacheSizeLimitMBytes()); | |
1372 } | |
1373 | |
1374 TEST_F(ConfigManagerTest, GetPackageCacheSizeLimitMBytes_Override_TooBig) { | |
1375 EXPECT_SUCCEEDED(SetPolicy(kRegValueCacheSizeLimitMBytes, 8192)); | |
1376 EXPECT_EQ(500, cm_->GetPackageCacheSizeLimitMBytes()); | |
1377 } | |
1378 | |
1379 TEST_F(ConfigManagerTest, GetPackageCacheSizeLimitMBytes_Override_TooSmall) { | |
1380 EXPECT_SUCCEEDED(SetPolicy(kRegValueCacheSizeLimitMBytes, 0)); | |
1381 EXPECT_EQ(500, cm_->GetPackageCacheSizeLimitMBytes()); | |
1382 } | |
1383 | |
1384 TEST_F(ConfigManagerTest, GetPackageCacheSizeLimitMBytes_Override_Valid) { | |
1385 EXPECT_SUCCEEDED(SetPolicy(kRegValueCacheSizeLimitMBytes, 250)); | |
1386 EXPECT_EQ(250, cm_->GetPackageCacheSizeLimitMBytes()); | |
1387 } | |
1388 | |
1389 TEST_F(ConfigManagerTest, GetPackageCacheExpirationTimeDays_Default) { | |
1390 EXPECT_EQ(180, cm_->GetPackageCacheExpirationTimeDays()); | |
1391 } | |
1392 | |
1393 TEST_F(ConfigManagerTest, GetPackageCacheExpirationTimeDays_Override_TooBig) { | |
1394 EXPECT_SUCCEEDED(SetPolicy(kRegValueCacheLifeLimitDays, 3600)); | |
1395 EXPECT_EQ(180, cm_->GetPackageCacheExpirationTimeDays()); | |
1396 } | |
1397 | |
1398 TEST_F(ConfigManagerTest, GetPackageCacheExpirationTimeDays_Override_TooSmall) { | |
1399 EXPECT_SUCCEEDED(SetPolicy(kRegValueCacheLifeLimitDays, 0)); | |
1400 EXPECT_EQ(180, cm_->GetPackageCacheExpirationTimeDays()); | |
1401 } | |
1402 | |
1403 TEST_F(ConfigManagerTest, GetPackageCacheExpirationTimeDays_Override_Valid) { | |
1404 EXPECT_SUCCEEDED(SetPolicy(kRegValueCacheLifeLimitDays, 60)); | |
1405 EXPECT_EQ(60, cm_->GetPackageCacheExpirationTimeDays()); | |
1406 } | |
1407 | |
1408 TEST_F(ConfigManagerTest, LastCheckedTime) { | |
1409 DWORD time = 500; | |
1410 EXPECT_SUCCEEDED(cm_->SetLastCheckedTime(true, time)); | |
1411 EXPECT_EQ(time, cm_->GetLastCheckedTime(true)); | |
1412 | |
1413 time = 77003; | |
1414 EXPECT_SUCCEEDED(cm_->SetLastCheckedTime(false, time)); | |
1415 EXPECT_EQ(time, cm_->GetLastCheckedTime(false)); | |
1416 } | |
1417 | |
1418 // Tests GetDir indirectly. | |
1419 TEST_F(ConfigManagerTest, GetDir) { | |
1420 RestoreRegistryHives(); | |
1421 | |
1422 CString user_install_dir = cm_->GetUserGoopdateInstallDir(); | |
1423 CString user_profile; | |
1424 ASSERT_NE(0, ::GetEnvironmentVariable(_T("USERPROFILE"), | |
1425 CStrBuf(user_profile, MAX_PATH), | |
1426 MAX_PATH)); | |
1427 ASSERT_TRUE(String_StartsWith(user_install_dir, user_profile, true)); | |
1428 } | |
1429 | |
1430 TEST_F(ConfigManagerTest, GetUpdateWorkerStartUpDelayMs_Repeated) { | |
1431 if (!SystemInfo::IsRunningOnXPOrLater()) { | |
1432 std::wcout << _T("\tTest did not run because GenRandom breaks on Windows ") | |
1433 << _T("2000 if the registry keys are overridden.") << std::endl; | |
1434 return; | |
1435 } | |
1436 | |
1437 // Test the UpdateDelay multiple times. | |
1438 for (int i = 0; i < 10; ++i) { | |
1439 int random = cm_->GetUpdateWorkerStartUpDelayMs(); | |
1440 EXPECT_GE(random, kUpdateTimerStartupDelayMinMs); | |
1441 EXPECT_LE(random, kUpdateTimerStartupDelayMaxMs); | |
1442 } | |
1443 } | |
1444 | |
1445 TEST_F(ConfigManagerTest, GetUpdateWorkerStartUpDelayMs) { | |
1446 if (!SystemInfo::IsRunningOnXPOrLater()) { | |
1447 std::wcout << _T("\tTest did not run because GenRandom breaks on Windows ") | |
1448 << _T("2000 if the registry keys are overridden.") << std::endl; | |
1449 return; | |
1450 } | |
1451 | |
1452 int random = cm_->GetUpdateWorkerStartUpDelayMs(); | |
1453 EXPECT_GE(random, kUpdateTimerStartupDelayMinMs); | |
1454 EXPECT_LE(random, kUpdateTimerStartupDelayMaxMs); | |
1455 | |
1456 int num_times_to_try_for_diff_number = 3; | |
1457 // We run the method num_times_to_try_for_diff_number times to make | |
1458 // sure that at least one of these returns a number that is different | |
1459 // from the one that is returned above. This is needed, since the | |
1460 // method returns a number between kUpdateTimerStartupDelayMinMs and | |
1461 // kUpdateTimerStartupDelayMaxMs. | |
1462 // If this fails a lot we should disable the if check below. | |
1463 bool found_one_not_equal = false; | |
1464 for (int i = 0; i < num_times_to_try_for_diff_number; ++i) { | |
1465 int random_compare = cm_->GetUpdateWorkerStartUpDelayMs(); | |
1466 | |
1467 EXPECT_GE(random_compare, kUpdateTimerStartupDelayMinMs); | |
1468 EXPECT_LE(random_compare, kUpdateTimerStartupDelayMaxMs); | |
1469 | |
1470 if (random_compare != random) { | |
1471 found_one_not_equal = true; | |
1472 break; | |
1473 } | |
1474 } | |
1475 | |
1476 EXPECT_TRUE(found_one_not_equal); | |
1477 } | |
1478 | |
1479 TEST_F(ConfigManagerTest, GetUpdateWorkerStartUpDelayMs_Override) { | |
1480 // Test that the initial delay time to launch a worker can be overriden. | |
1481 DWORD val = 3320; | |
1482 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
1483 kRegValueAuCheckPeriodMs, | |
1484 val)); | |
1485 | |
1486 int random = cm_->GetUpdateWorkerStartUpDelayMs(); | |
1487 EXPECT_EQ(val, random); | |
1488 } | |
1489 | |
1490 TEST_F(ConfigManagerTest, GetTimeSinceLastCheckedSec_User) { | |
1491 // First, there is no value present in the registry. | |
1492 uint32 now_sec = Time64ToInt32(GetCurrent100NSTime()); | |
1493 int time_since_last_checked_sec = cm_->GetTimeSinceLastCheckedSec(false); | |
1494 EXPECT_EQ(now_sec, time_since_last_checked_sec); | |
1495 | |
1496 // Second, write the 'now' time. | |
1497 EXPECT_HRESULT_SUCCEEDED(cm_->SetLastCheckedTime(false, now_sec)); | |
1498 time_since_last_checked_sec = cm_->GetTimeSinceLastCheckedSec(false); | |
1499 EXPECT_EQ(0, time_since_last_checked_sec); | |
1500 } | |
1501 | |
1502 TEST_F(ConfigManagerTest, GetTimeSinceLastCheckedSec_Machine) { | |
1503 uint32 now_sec = Time64ToInt32(GetCurrent100NSTime()); | |
1504 int time_since_last_checked_sec = cm_->GetTimeSinceLastCheckedSec(true); | |
1505 EXPECT_EQ(now_sec, time_since_last_checked_sec); | |
1506 | |
1507 EXPECT_HRESULT_SUCCEEDED(cm_->SetLastCheckedTime(true, now_sec)); | |
1508 time_since_last_checked_sec = cm_->GetTimeSinceLastCheckedSec(true); | |
1509 EXPECT_EQ(0, time_since_last_checked_sec); | |
1510 } | |
1511 | |
1512 TEST_F(ConfigManagerTest, GetNetConfig) { | |
1513 CString actual_value; | |
1514 EXPECT_HRESULT_FAILED(cm_->GetNetConfig(&actual_value)); | |
1515 | |
1516 const CString expected_value = _T("proxy:8080"); | |
1517 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
1518 kRegValueNetConfig, | |
1519 expected_value)); | |
1520 | |
1521 EXPECT_HRESULT_SUCCEEDED(cm_->GetNetConfig(&actual_value)); | |
1522 EXPECT_STREQ(expected_value, actual_value); | |
1523 } | |
1524 | |
1525 TEST_F(ConfigManagerTest, GetInstallTime) { | |
1526 EXPECT_SUCCEEDED(DeleteUpdateTime(false)); | |
1527 EXPECT_SUCCEEDED(DeleteFirstInstallTime(false)); | |
1528 EXPECT_EQ(0, ConfigManager::GetInstallTime(false)); | |
1529 | |
1530 DWORD time = 500; | |
1531 EXPECT_SUCCEEDED(SetFirstInstallTime(false, time)); | |
1532 EXPECT_EQ(time, ConfigManager::GetInstallTime(false)); | |
1533 | |
1534 time = 1000; | |
1535 EXPECT_SUCCEEDED(SetUpdateTime(false, time)); | |
1536 EXPECT_EQ(time, ConfigManager::GetInstallTime(false)); | |
1537 | |
1538 EXPECT_SUCCEEDED(DeleteFirstInstallTime(false)); | |
1539 EXPECT_EQ(time, ConfigManager::GetInstallTime(false)); | |
1540 } | |
1541 | |
1542 TEST_F(ConfigManagerTest, Is24HoursSinceInstall) { | |
1543 const uint32 now = Time64ToInt32(GetCurrent100NSTime()); | |
1544 const int k12HourPeriodSec = 12 * 60 * 60; | |
1545 const int k48HourPeriodSec = 48 * 60 * 60; | |
1546 | |
1547 const uint32 first_install_12 = now - k12HourPeriodSec; | |
1548 const uint32 first_install_48 = now - k48HourPeriodSec; | |
1549 | |
1550 EXPECT_SUCCEEDED(SetFirstInstallTime(false, first_install_12)); | |
1551 EXPECT_FALSE(ConfigManager::Is24HoursSinceInstall(false)); | |
1552 | |
1553 EXPECT_SUCCEEDED(SetFirstInstallTime(false, first_install_48)); | |
1554 EXPECT_TRUE(ConfigManager::Is24HoursSinceInstall(false)); | |
1555 | |
1556 EXPECT_SUCCEEDED(SetUpdateTime(false, first_install_12)); | |
1557 EXPECT_FALSE(ConfigManager::Is24HoursSinceInstall(false)); | |
1558 | |
1559 EXPECT_SUCCEEDED(SetUpdateTime(false, first_install_48)); | |
1560 EXPECT_TRUE(ConfigManager::Is24HoursSinceInstall(false)); | |
1561 } | |
1562 | |
1563 TEST_F(ConfigManagerTest, AlwaysAllowCrashUploads) { | |
1564 EXPECT_FALSE(cm_->AlwaysAllowCrashUploads()); | |
1565 | |
1566 DWORD value = 1; | |
1567 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
1568 kRegValueAlwaysAllowCrashUploads, | |
1569 value)); | |
1570 | |
1571 EXPECT_TRUE(cm_->AlwaysAllowCrashUploads()); | |
1572 | |
1573 value = 0; | |
1574 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE_DEV, | |
1575 kRegValueAlwaysAllowCrashUploads, | |
1576 value)); | |
1577 | |
1578 EXPECT_FALSE(cm_->AlwaysAllowCrashUploads()); | |
1579 } | |
1580 | |
1581 } // namespace omaha | |
OLD | NEW |