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

Side by Side Diff: common/config_manager_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 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
« no previous file with comments | « common/config_manager.cc ('k') | common/const_cmd_line.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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
OLDNEW
« no previous file with comments | « common/config_manager.cc ('k') | common/const_cmd_line.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698