OLD | NEW |
| (Empty) |
1 // Copyright 2009 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 "omaha/base/constants.h" | |
17 #include "omaha/base/reg_key.h" | |
18 #include "omaha/common/command_line.h" | |
19 #include "omaha/goopdate/goopdate_internal.h" | |
20 #include "omaha/testing/unit_test.h" | |
21 | |
22 namespace omaha { | |
23 | |
24 namespace { | |
25 | |
26 const TCHAR* const kAppMachineClientStatePath = | |
27 _T("HKLM\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
28 _T("\\ClientState\\{19BE47E4-CF32-48c1-94C4-046507F6A8A6}\\"); | |
29 const TCHAR* const kApp2MachineClientStatePath = | |
30 _T("HKLM\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
31 _T("\\ClientState\\{553B2D8C-E6A7-43ed-ACC9-A8BA5D34395F}\\"); | |
32 const TCHAR* const kAppUserClientStatePath = | |
33 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
34 _T("\\ClientState\\{19BE47E4-CF32-48c1-94C4-046507F6A8A6}\\"); | |
35 const TCHAR* const kApp2UserClientStatePath = | |
36 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
37 _T("\\ClientState\\{553B2D8C-E6A7-43ed-ACC9-A8BA5D34395F}\\"); | |
38 | |
39 const TCHAR* const kAppMachineClientStateMediumPath = | |
40 _T("HKLM\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
41 _T("\\ClientStateMedium\\{19BE47E4-CF32-48c1-94C4-046507F6A8A6}\\"); | |
42 | |
43 // Update this when new modes are added. | |
44 const int kLastMode = COMMANDLINE_MODE_PING; | |
45 | |
46 } // namespace | |
47 | |
48 class GoopdateRegistryProtectedTest : public testing::Test { | |
49 protected: | |
50 GoopdateRegistryProtectedTest() | |
51 : hive_override_key_name_(kRegistryHiveOverrideRoot) { | |
52 } | |
53 | |
54 CString hive_override_key_name_; | |
55 | |
56 virtual void SetUp() { | |
57 RegKey::DeleteKey(hive_override_key_name_, true); | |
58 OverrideRegistryHives(hive_override_key_name_); | |
59 } | |
60 | |
61 virtual void TearDown() { | |
62 RestoreRegistryHives(); | |
63 ASSERT_SUCCEEDED(RegKey::DeleteKey(hive_override_key_name_, true)); | |
64 } | |
65 }; | |
66 | |
67 TEST_F(GoopdateRegistryProtectedTest, | |
68 PromoteAppEulaAccepted_Machine_UpdateKeyDoesNotExist_NoAppKeys) { | |
69 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
70 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
71 } | |
72 | |
73 TEST_F(GoopdateRegistryProtectedTest, | |
74 PromoteAppEulaAccepted_Machine_UpdateValueDoesNotExist_NoAppKeys) { | |
75 EXPECT_SUCCEEDED(RegKey::CreateKey(MACHINE_REG_UPDATE)); | |
76 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
77 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
78 } | |
79 | |
80 TEST_F(GoopdateRegistryProtectedTest, | |
81 PromoteAppEulaAccepted_Machine_UpdateValueDoesNotExist_AppKeyNoValue) { | |
82 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
83 _T("pv"), | |
84 _T("1.2.3.4"))); | |
85 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
86 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
87 } | |
88 | |
89 TEST_F(GoopdateRegistryProtectedTest, | |
90 PromoteAppEulaAccepted_Machine_UpdateValueDoesNotExist_AppValueZero) { | |
91 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
92 _T("eulaaccepted"), | |
93 static_cast<DWORD>(0))); | |
94 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
95 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
96 } | |
97 | |
98 TEST_F(GoopdateRegistryProtectedTest, | |
99 PromoteAppEulaAccepted_Machine_UpdateZero_NoAppKeys) { | |
100 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
101 _T("eulaaccepted"), | |
102 static_cast<DWORD>(0))); | |
103 | |
104 EXPECT_EQ(S_FALSE, internal::PromoteAppEulaAccepted(true)); | |
105 | |
106 DWORD value = UINT_MAX; | |
107 EXPECT_SUCCEEDED( | |
108 RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); | |
109 EXPECT_EQ(0, value); | |
110 } | |
111 | |
112 TEST_F(GoopdateRegistryProtectedTest, | |
113 PromoteAppEulaAccepted_Machine_UpdateZero_AppKeyNoValue) { | |
114 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
115 _T("eulaaccepted"), | |
116 static_cast<DWORD>(0))); | |
117 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
118 _T("pv"), | |
119 _T("1.2.3.4"))); | |
120 | |
121 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
122 | |
123 DWORD value = UINT_MAX; | |
124 EXPECT_SUCCEEDED( | |
125 RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); | |
126 EXPECT_EQ(0, value); | |
127 EXPECT_FALSE( | |
128 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
129 } | |
130 | |
131 TEST_F(GoopdateRegistryProtectedTest, | |
132 PromoteAppEulaAccepted_Machine_UpdateZero_AppValueZero) { | |
133 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
134 _T("eulaaccepted"), | |
135 static_cast<DWORD>(0))); | |
136 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
137 _T("eulaaccepted"), | |
138 static_cast<DWORD>(0))); | |
139 | |
140 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
141 | |
142 DWORD value = UINT_MAX; | |
143 EXPECT_SUCCEEDED( | |
144 RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); | |
145 EXPECT_EQ(0, value); | |
146 value = UINT_MAX; | |
147 EXPECT_SUCCEEDED( | |
148 RegKey::GetValue(kAppMachineClientStatePath, _T("eulaaccepted"), &value)); | |
149 EXPECT_EQ(0, value); | |
150 } | |
151 | |
152 TEST_F(GoopdateRegistryProtectedTest, | |
153 PromoteAppEulaAccepted_Machine_UpdateZero_AppValueOne) { | |
154 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
155 _T("eulaaccepted"), | |
156 static_cast<DWORD>(0))); | |
157 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
158 _T("eulaaccepted"), | |
159 static_cast<DWORD>(1))); | |
160 | |
161 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
162 | |
163 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
164 DWORD value = UINT_MAX; | |
165 EXPECT_SUCCEEDED( | |
166 RegKey::GetValue(kAppMachineClientStatePath, _T("eulaaccepted"), &value)); | |
167 EXPECT_EQ(1, value); | |
168 } | |
169 | |
170 // Unfortunately, the app's ClientStateMedium key is not checked if there is no | |
171 // corresponding ClientState key. | |
172 TEST_F(GoopdateRegistryProtectedTest, | |
173 PromoteAppEulaAccepted_Machine_UpdateZero_OnlyMediumAppValueOne) { | |
174 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
175 _T("eulaaccepted"), | |
176 static_cast<DWORD>(0))); | |
177 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
178 _T("eulaaccepted"), | |
179 static_cast<DWORD>(1))); | |
180 | |
181 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
182 | |
183 // The ClientStateMedium was not checked, so eulaaccepted = 0 still exists. | |
184 EXPECT_TRUE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
185 DWORD value = UINT_MAX; | |
186 EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_UPDATE, | |
187 _T("eulaaccepted"), | |
188 &value)); | |
189 EXPECT_EQ(0, value); | |
190 EXPECT_FALSE( | |
191 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
192 value = UINT_MAX; | |
193 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStateMediumPath, | |
194 _T("eulaaccepted"), | |
195 &value)); | |
196 EXPECT_EQ(1, value); | |
197 } | |
198 | |
199 TEST_F(GoopdateRegistryProtectedTest, | |
200 PromoteAppEulaAccepted_Machine_UpdateZero_MediumAppValueOneAndStateKey) { | |
201 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppMachineClientStatePath)); | |
202 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
203 _T("eulaaccepted"), | |
204 static_cast<DWORD>(0))); | |
205 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
206 _T("eulaaccepted"), | |
207 static_cast<DWORD>(1))); | |
208 | |
209 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
210 | |
211 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
212 DWORD value = UINT_MAX; | |
213 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
214 _T("eulaaccepted"), | |
215 &value)); | |
216 EXPECT_EQ(1, value); | |
217 value = UINT_MAX; | |
218 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStateMediumPath, | |
219 _T("eulaaccepted"), | |
220 &value)); | |
221 EXPECT_EQ(1, value); | |
222 } | |
223 | |
224 // The ClientStateMedium 1 is copied over the ClientState 0. | |
225 TEST_F(GoopdateRegistryProtectedTest, | |
226 PromoteAppEulaAccepted_Machine_UpdateZero_AppZeroAppMediumOne) { | |
227 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
228 _T("eulaaccepted"), | |
229 static_cast<DWORD>(0))); | |
230 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
231 _T("eulaaccepted"), | |
232 static_cast<DWORD>(0))); | |
233 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
234 _T("eulaaccepted"), | |
235 static_cast<DWORD>(1))); | |
236 | |
237 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
238 | |
239 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
240 DWORD value = UINT_MAX; | |
241 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
242 _T("eulaaccepted"), | |
243 &value)); | |
244 EXPECT_EQ(1, value); | |
245 value = UINT_MAX; | |
246 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStateMediumPath, | |
247 _T("eulaaccepted"), | |
248 &value)); | |
249 EXPECT_EQ(1, value); | |
250 } | |
251 | |
252 // The ClientStateMedium 0 is ignored and not copied. | |
253 TEST_F(GoopdateRegistryProtectedTest, | |
254 PromoteAppEulaAccepted_Machine_UpdateZero_AppOneAppMediumZero) { | |
255 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
256 _T("eulaaccepted"), | |
257 static_cast<DWORD>(0))); | |
258 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
259 _T("eulaaccepted"), | |
260 static_cast<DWORD>(1))); | |
261 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStateMediumPath, | |
262 _T("eulaaccepted"), | |
263 static_cast<DWORD>(0))); | |
264 | |
265 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
266 | |
267 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
268 DWORD value = UINT_MAX; | |
269 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStatePath, | |
270 _T("eulaaccepted"), | |
271 &value)); | |
272 EXPECT_EQ(1, value); | |
273 value = UINT_MAX; | |
274 EXPECT_SUCCEEDED(RegKey::GetValue(kAppMachineClientStateMediumPath, | |
275 _T("eulaaccepted"), | |
276 &value)); | |
277 EXPECT_EQ(0, value); | |
278 } | |
279 | |
280 TEST_F(GoopdateRegistryProtectedTest, | |
281 PromoteAppEulaAccepted_Machine_UpdateZero_FirstAppZeroSecondAppOne) { | |
282 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
283 _T("eulaaccepted"), | |
284 static_cast<DWORD>(0))); | |
285 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
286 _T("eulaaccepted"), | |
287 static_cast<DWORD>(0))); | |
288 EXPECT_SUCCEEDED(RegKey::SetValue(kApp2MachineClientStatePath, | |
289 _T("eulaaccepted"), | |
290 static_cast<DWORD>(1))); | |
291 | |
292 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
293 | |
294 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
295 DWORD value = UINT_MAX; | |
296 EXPECT_SUCCEEDED( | |
297 RegKey::GetValue(kAppMachineClientStatePath, _T("eulaaccepted"), &value)); | |
298 EXPECT_EQ(0, value); | |
299 value = UINT_MAX; | |
300 EXPECT_SUCCEEDED(RegKey::GetValue(kApp2MachineClientStatePath, | |
301 _T("eulaaccepted"), | |
302 &value)); | |
303 EXPECT_EQ(1, value); | |
304 } | |
305 | |
306 TEST_F(GoopdateRegistryProtectedTest, | |
307 PromoteAppEulaAccepted_Machine_UpdateZero_FirstAppNoValueSecondAppOne) { | |
308 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
309 _T("eulaaccepted"), | |
310 static_cast<DWORD>(0))); | |
311 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
312 _T("pv"), | |
313 _T("1.2.3.4"))); | |
314 EXPECT_SUCCEEDED(RegKey::SetValue(kApp2MachineClientStatePath, | |
315 _T("eulaaccepted"), | |
316 static_cast<DWORD>(1))); | |
317 | |
318 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
319 | |
320 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
321 EXPECT_FALSE( | |
322 RegKey::HasValue(kAppMachineClientStatePath, _T("eulaaccepted"))); | |
323 DWORD value = UINT_MAX; | |
324 EXPECT_SUCCEEDED(RegKey::GetValue(kApp2MachineClientStatePath, | |
325 _T("eulaaccepted"), | |
326 &value)); | |
327 EXPECT_EQ(1, value); | |
328 } | |
329 | |
330 // Asserts because this is an unexpected case. | |
331 TEST_F(GoopdateRegistryProtectedTest, | |
332 PromoteAppEulaAccepted_Machine_UpdateZero_UpdateClientStateOne) { | |
333 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
334 _T("eulaaccepted"), | |
335 static_cast<DWORD>(0))); | |
336 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, | |
337 _T("eulaaccepted"), | |
338 static_cast<DWORD>(1))); | |
339 | |
340 ExpectAsserts expect_asserts; | |
341 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
342 | |
343 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
344 DWORD value = UINT_MAX; | |
345 EXPECT_SUCCEEDED(RegKey::GetValue(MACHINE_REG_CLIENT_STATE_GOOPDATE, | |
346 _T("eulaaccepted"), | |
347 &value)); | |
348 EXPECT_EQ(1, value); | |
349 } | |
350 | |
351 TEST_F(GoopdateRegistryProtectedTest, | |
352 PromoteAppEulaAccepted_Machine_UpdateZero_UserAppOne) { | |
353 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
354 _T("eulaaccepted"), | |
355 static_cast<DWORD>(0))); | |
356 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
357 _T("eulaaccepted"), | |
358 static_cast<DWORD>(1))); | |
359 | |
360 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
361 | |
362 DWORD value = UINT_MAX; | |
363 EXPECT_SUCCEEDED( | |
364 RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); | |
365 EXPECT_EQ(0, value); | |
366 value = UINT_MAX; | |
367 EXPECT_SUCCEEDED( | |
368 RegKey::GetValue(kAppUserClientStatePath, _T("eulaaccepted"), &value)); | |
369 EXPECT_EQ(1, value); | |
370 } | |
371 | |
372 TEST_F(GoopdateRegistryProtectedTest, | |
373 PromoteAppEulaAccepted_Machine_UpdateOne_AppZero) { | |
374 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
375 _T("eulaaccepted"), | |
376 static_cast<DWORD>(1))); | |
377 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
378 _T("eulaaccepted"), | |
379 static_cast<DWORD>(0))); | |
380 | |
381 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
382 | |
383 DWORD value = UINT_MAX; | |
384 EXPECT_SUCCEEDED( | |
385 RegKey::GetValue(MACHINE_REG_UPDATE, _T("eulaaccepted"), &value)); | |
386 EXPECT_EQ(1, value); | |
387 value = UINT_MAX; | |
388 EXPECT_SUCCEEDED( | |
389 RegKey::GetValue(kAppMachineClientStatePath, _T("eulaaccepted"), &value)); | |
390 EXPECT_EQ(0, value); | |
391 } | |
392 | |
393 // The fact that the value is deleted also tells us that the method continued | |
394 // processing because the value existed even though the value was not zero. | |
395 TEST_F(GoopdateRegistryProtectedTest, | |
396 PromoteAppEulaAccepted_Machine_UpdateOne_AppOne) { | |
397 EXPECT_SUCCEEDED(RegKey::SetValue(MACHINE_REG_UPDATE, | |
398 _T("eulaaccepted"), | |
399 static_cast<DWORD>(1))); | |
400 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
401 _T("eulaaccepted"), | |
402 static_cast<DWORD>(1))); | |
403 | |
404 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(true)); | |
405 | |
406 EXPECT_FALSE(RegKey::HasValue(MACHINE_REG_UPDATE, _T("eulaaccepted"))); | |
407 DWORD value = UINT_MAX; | |
408 EXPECT_SUCCEEDED( | |
409 RegKey::GetValue(kAppMachineClientStatePath, _T("eulaaccepted"), &value)); | |
410 EXPECT_EQ(1, value); | |
411 } | |
412 | |
413 TEST_F(GoopdateRegistryProtectedTest, | |
414 PromoteAppEulaAccepted_User_UpdateKeyDoesNotExist_NoAppKeys) { | |
415 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
416 EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); | |
417 } | |
418 | |
419 TEST_F(GoopdateRegistryProtectedTest, | |
420 PromoteAppEulaAccepted_User_UpdateValueDoesNotExist_NoAppKeys) { | |
421 EXPECT_SUCCEEDED(RegKey::CreateKey(USER_REG_UPDATE)); | |
422 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
423 EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); | |
424 } | |
425 | |
426 TEST_F(GoopdateRegistryProtectedTest, | |
427 PromoteAppEulaAccepted_User_UpdateValueDoesNotExist_AppKeyNoValue) { | |
428 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
429 _T("pv"), | |
430 _T("1.2.3.4"))); | |
431 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
432 EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); | |
433 } | |
434 | |
435 TEST_F(GoopdateRegistryProtectedTest, | |
436 PromoteAppEulaAccepted_User_UpdateValueDoesNotExist_AppValueZero) { | |
437 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
438 _T("eulaaccepted"), | |
439 static_cast<DWORD>(0))); | |
440 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
441 EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); | |
442 } | |
443 | |
444 TEST_F(GoopdateRegistryProtectedTest, | |
445 PromoteAppEulaAccepted_User_UpdateZero_NoAppKeys) { | |
446 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
447 _T("eulaaccepted"), | |
448 static_cast<DWORD>(0))); | |
449 | |
450 EXPECT_EQ(S_FALSE, internal::PromoteAppEulaAccepted(false)); | |
451 | |
452 DWORD value = UINT_MAX; | |
453 EXPECT_SUCCEEDED( | |
454 RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); | |
455 EXPECT_EQ(0, value); | |
456 } | |
457 | |
458 TEST_F(GoopdateRegistryProtectedTest, | |
459 PromoteAppEulaAccepted_User_UpdateZero_AppKeyNoValue) { | |
460 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
461 _T("eulaaccepted"), | |
462 static_cast<DWORD>(0))); | |
463 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
464 _T("pv"), | |
465 _T("1.2.3.4"))); | |
466 | |
467 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
468 | |
469 DWORD value = UINT_MAX; | |
470 EXPECT_SUCCEEDED( | |
471 RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); | |
472 EXPECT_EQ(0, value); | |
473 EXPECT_FALSE( | |
474 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
475 } | |
476 | |
477 TEST_F(GoopdateRegistryProtectedTest, | |
478 PromoteAppEulaAccepted_User_UpdateZero_AppValueZero) { | |
479 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
480 _T("eulaaccepted"), | |
481 static_cast<DWORD>(0))); | |
482 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
483 _T("eulaaccepted"), | |
484 static_cast<DWORD>(0))); | |
485 | |
486 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
487 | |
488 DWORD value = UINT_MAX; | |
489 EXPECT_SUCCEEDED( | |
490 RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); | |
491 EXPECT_EQ(0, value); | |
492 value = UINT_MAX; | |
493 EXPECT_SUCCEEDED( | |
494 RegKey::GetValue(kAppUserClientStatePath, _T("eulaaccepted"), &value)); | |
495 EXPECT_EQ(0, value); | |
496 } | |
497 | |
498 TEST_F(GoopdateRegistryProtectedTest, | |
499 PromoteAppEulaAccepted_User_UpdateZero_FirstAppZeroSecondAppOne) { | |
500 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
501 _T("eulaaccepted"), | |
502 static_cast<DWORD>(0))); | |
503 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
504 _T("eulaaccepted"), | |
505 static_cast<DWORD>(0))); | |
506 EXPECT_SUCCEEDED(RegKey::SetValue(kApp2UserClientStatePath, | |
507 _T("eulaaccepted"), | |
508 static_cast<DWORD>(1))); | |
509 | |
510 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
511 | |
512 EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); | |
513 DWORD value = UINT_MAX; | |
514 EXPECT_SUCCEEDED( | |
515 RegKey::GetValue(kAppUserClientStatePath, _T("eulaaccepted"), &value)); | |
516 EXPECT_EQ(0, value); | |
517 value = UINT_MAX; | |
518 EXPECT_SUCCEEDED( | |
519 RegKey::GetValue(kApp2UserClientStatePath, _T("eulaaccepted"), &value)); | |
520 EXPECT_EQ(1, value); | |
521 } | |
522 | |
523 TEST_F(GoopdateRegistryProtectedTest, | |
524 PromoteAppEulaAccepted_User_UpdateZero_FirstAppNoValueSecondAppOne) { | |
525 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
526 _T("eulaaccepted"), | |
527 static_cast<DWORD>(0))); | |
528 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
529 _T("pv"), | |
530 _T("1.2.3.4"))); | |
531 EXPECT_SUCCEEDED(RegKey::SetValue(kApp2UserClientStatePath, | |
532 _T("eulaaccepted"), | |
533 static_cast<DWORD>(1))); | |
534 | |
535 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
536 | |
537 EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); | |
538 EXPECT_FALSE( | |
539 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
540 DWORD value = UINT_MAX; | |
541 EXPECT_SUCCEEDED( | |
542 RegKey::GetValue(kApp2UserClientStatePath, _T("eulaaccepted"), &value)); | |
543 EXPECT_EQ(1, value); | |
544 } | |
545 | |
546 // Asserts because this is an unexpected case. | |
547 TEST_F(GoopdateRegistryProtectedTest, | |
548 PromoteAppEulaAccepted_User_UpdateZero_UpdateClientStateOne) { | |
549 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
550 _T("eulaaccepted"), | |
551 static_cast<DWORD>(0))); | |
552 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_CLIENT_STATE_GOOPDATE, | |
553 _T("eulaaccepted"), | |
554 static_cast<DWORD>(1))); | |
555 | |
556 ExpectAsserts expect_asserts; | |
557 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
558 | |
559 EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); | |
560 DWORD value = UINT_MAX; | |
561 EXPECT_SUCCEEDED(RegKey::GetValue(USER_REG_CLIENT_STATE_GOOPDATE, | |
562 _T("eulaaccepted"), | |
563 &value)); | |
564 EXPECT_EQ(1, value); | |
565 } | |
566 | |
567 TEST_F(GoopdateRegistryProtectedTest, | |
568 PromoteAppEulaAccepted_User_UpdateOne_AppZero) { | |
569 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
570 _T("eulaaccepted"), | |
571 static_cast<DWORD>(1))); | |
572 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
573 _T("eulaaccepted"), | |
574 static_cast<DWORD>(0))); | |
575 | |
576 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
577 | |
578 DWORD value = UINT_MAX; | |
579 EXPECT_SUCCEEDED( | |
580 RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); | |
581 EXPECT_EQ(1, value); | |
582 value = UINT_MAX; | |
583 EXPECT_SUCCEEDED( | |
584 RegKey::GetValue(kAppUserClientStatePath, _T("eulaaccepted"), &value)); | |
585 EXPECT_EQ(0, value); | |
586 } | |
587 | |
588 // The fact that the value is deleted also tells us that the method continued | |
589 // processing because the value existed even though the value was not zero. | |
590 TEST_F(GoopdateRegistryProtectedTest, | |
591 PromoteAppEulaAccepted_User_UpdateOne_AppOne) { | |
592 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
593 _T("eulaaccepted"), | |
594 static_cast<DWORD>(1))); | |
595 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStatePath, | |
596 _T("eulaaccepted"), | |
597 static_cast<DWORD>(1))); | |
598 | |
599 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
600 | |
601 EXPECT_FALSE(RegKey::HasValue(USER_REG_UPDATE, _T("eulaaccepted"))); | |
602 DWORD value = UINT_MAX; | |
603 EXPECT_SUCCEEDED( | |
604 RegKey::GetValue(kAppUserClientStatePath, _T("eulaaccepted"), &value)); | |
605 EXPECT_EQ(1, value); | |
606 } | |
607 | |
608 TEST_F(GoopdateRegistryProtectedTest, | |
609 PromoteAppEulaAccepted_User_UpdateZero_MachineAppOne) { | |
610 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
611 _T("eulaaccepted"), | |
612 static_cast<DWORD>(0))); | |
613 EXPECT_SUCCEEDED(RegKey::SetValue(kAppMachineClientStatePath, | |
614 _T("eulaaccepted"), | |
615 static_cast<DWORD>(1))); | |
616 | |
617 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
618 | |
619 DWORD value = UINT_MAX; | |
620 EXPECT_SUCCEEDED( | |
621 RegKey::GetValue(USER_REG_UPDATE, _T("eulaaccepted"), &value)); | |
622 EXPECT_EQ(0, value); | |
623 value = UINT_MAX; | |
624 EXPECT_SUCCEEDED( | |
625 RegKey::GetValue(kAppMachineClientStatePath, _T("eulaaccepted"), &value)); | |
626 EXPECT_EQ(1, value); | |
627 } | |
628 | |
629 // ClientStateMedium is not used. | |
630 TEST_F(GoopdateRegistryProtectedTest, | |
631 PromoteAppEulaAccepted_User_UpdateZero_MediumAppValueOneAndStateKey) { | |
632 const TCHAR* const kAppUserClientStateMediumPath = | |
633 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") PRODUCT_NAME | |
634 _T("\\ClientStateMedium\\{19BE47E4-CF32-48c1-94C4-046507F6A8A6}\\"); | |
635 | |
636 EXPECT_SUCCEEDED(RegKey::CreateKey(kAppUserClientStatePath)); | |
637 EXPECT_SUCCEEDED(RegKey::SetValue(USER_REG_UPDATE, | |
638 _T("eulaaccepted"), | |
639 static_cast<DWORD>(0))); | |
640 EXPECT_SUCCEEDED(RegKey::SetValue(kAppUserClientStateMediumPath, | |
641 _T("eulaaccepted"), | |
642 static_cast<DWORD>(1))); | |
643 | |
644 EXPECT_SUCCEEDED(internal::PromoteAppEulaAccepted(false)); | |
645 | |
646 DWORD value = UINT_MAX; | |
647 EXPECT_SUCCEEDED(RegKey::GetValue(USER_REG_UPDATE, | |
648 _T("eulaaccepted"), | |
649 &value)); | |
650 EXPECT_EQ(0, value); | |
651 EXPECT_FALSE( | |
652 RegKey::HasValue(kAppUserClientStatePath, _T("eulaaccepted"))); | |
653 value = UINT_MAX; | |
654 EXPECT_SUCCEEDED(RegKey::GetValue(kAppUserClientStateMediumPath, | |
655 _T("eulaaccepted"), | |
656 &value)); | |
657 EXPECT_EQ(1, value); | |
658 } | |
659 | |
660 // | |
661 // IsMachineProcess tests. | |
662 // | |
663 | |
664 class GoopdateIsMachineProcessTest : public testing::Test { | |
665 protected: | |
666 bool FromMachineDirHelper(CommandLineMode mode) { | |
667 return internal::IsMachineProcess(mode, | |
668 true, | |
669 false, | |
670 false, | |
671 TRISTATE_NONE); | |
672 } | |
673 | |
674 bool IsLocalSystemHelper(CommandLineMode mode) { | |
675 return internal::IsMachineProcess(mode, | |
676 false, | |
677 true, | |
678 false, | |
679 TRISTATE_NONE); | |
680 } | |
681 | |
682 bool MachineOverrideHelper(CommandLineMode mode) { | |
683 return internal::IsMachineProcess(mode, | |
684 false, | |
685 false, | |
686 true, | |
687 TRISTATE_NONE); | |
688 } | |
689 | |
690 bool NeedsAdminFalseHelper(CommandLineMode mode) { | |
691 return internal::IsMachineProcess(mode, | |
692 false, | |
693 false, | |
694 false, | |
695 TRISTATE_FALSE); | |
696 } | |
697 | |
698 bool NeedsAdminTrueHelper(CommandLineMode mode) { | |
699 return internal::IsMachineProcess(mode, | |
700 false, | |
701 false, | |
702 false, | |
703 TRISTATE_TRUE); | |
704 } | |
705 }; | |
706 | |
707 // Unused function. Its sole purpose is to make sure that the unit tests below | |
708 // were correctly updated when new modes were added. | |
709 #pragma warning(push) | |
710 // enumerator 'identifier' in switch of enum 'enumeration' is not explicitly | |
711 // handled by a case label. | |
712 // enumerator 'identifier' in switch of enum 'enumeration' is not handled. | |
713 #pragma warning(1: 4061 4062) | |
714 static void EnsureUnitTestUpdatedWithNewModes() { | |
715 CommandLineMode unused_mode; | |
716 switch (unused_mode) { | |
717 case COMMANDLINE_MODE_UNKNOWN: | |
718 case COMMANDLINE_MODE_NOARGS: | |
719 case COMMANDLINE_MODE_CORE: | |
720 case COMMANDLINE_MODE_SERVICE: | |
721 case COMMANDLINE_MODE_REGSERVER: | |
722 case COMMANDLINE_MODE_UNREGSERVER: | |
723 case COMMANDLINE_MODE_NETDIAGS: | |
724 case COMMANDLINE_MODE_CRASH: | |
725 case COMMANDLINE_MODE_REPORTCRASH: | |
726 case COMMANDLINE_MODE_INSTALL: | |
727 case COMMANDLINE_MODE_UPDATE: | |
728 case COMMANDLINE_MODE_HANDOFF_INSTALL: | |
729 case COMMANDLINE_MODE_UA: | |
730 case COMMANDLINE_MODE_RECOVER: | |
731 case COMMANDLINE_MODE_WEBPLUGIN: | |
732 case COMMANDLINE_MODE_CODE_RED_CHECK: | |
733 case COMMANDLINE_MODE_COMSERVER: | |
734 case COMMANDLINE_MODE_REGISTER_PRODUCT: | |
735 case COMMANDLINE_MODE_UNREGISTER_PRODUCT: | |
736 case COMMANDLINE_MODE_SERVICE_REGISTER: | |
737 case COMMANDLINE_MODE_SERVICE_UNREGISTER: | |
738 case COMMANDLINE_MODE_CRASH_HANDLER: | |
739 case COMMANDLINE_MODE_COMBROKER: | |
740 case COMMANDLINE_MODE_ONDEMAND: | |
741 case COMMANDLINE_MODE_MEDIUM_SERVICE: | |
742 case COMMANDLINE_MODE_UNINSTALL: | |
743 case COMMANDLINE_MODE_PING: | |
744 // | |
745 // When adding a new mode, be sure to update kLastMode too. | |
746 // | |
747 break; | |
748 } | |
749 } | |
750 #pragma warning(pop) | |
751 | |
752 TEST_F(GoopdateIsMachineProcessTest, IsMachineProcess_MachineDirOnly) { | |
753 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_UNKNOWN)); | |
754 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_NOARGS)); | |
755 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_CORE)); | |
756 { | |
757 ExpectAsserts expect_asserts; | |
758 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_SERVICE)); | |
759 } | |
760 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_REGSERVER)); | |
761 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_UNREGSERVER)); | |
762 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_NETDIAGS)); | |
763 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_CRASH)); | |
764 // TODO(omaha): Change to machine. | |
765 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_REPORTCRASH)); | |
766 { | |
767 ExpectAsserts expect_asserts; | |
768 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_INSTALL)); | |
769 } | |
770 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_UPDATE)); | |
771 { | |
772 ExpectAsserts expect_asserts; | |
773 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_HANDOFF_INSTALL)); | |
774 } | |
775 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_UA)); | |
776 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_RECOVER)); | |
777 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_WEBPLUGIN)); | |
778 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_CODE_RED_CHECK)); | |
779 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_COMSERVER)); | |
780 { | |
781 ExpectAsserts expect_asserts; | |
782 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_REGISTER_PRODUCT)); | |
783 } | |
784 { | |
785 ExpectAsserts expect_asserts; | |
786 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_UNREGISTER_PRODUCT)); | |
787 } | |
788 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_SERVICE_REGISTER)); | |
789 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_SERVICE_UNREGISTER)); | |
790 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_CRASH_HANDLER)); | |
791 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_COMBROKER)); | |
792 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_ONDEMAND)); | |
793 { | |
794 ExpectAsserts expect_asserts; | |
795 EXPECT_FALSE(FromMachineDirHelper(COMMANDLINE_MODE_MEDIUM_SERVICE)); | |
796 } | |
797 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_UNINSTALL)); | |
798 EXPECT_TRUE(FromMachineDirHelper(COMMANDLINE_MODE_PING)); | |
799 EXPECT_TRUE(FromMachineDirHelper( | |
800 static_cast<CommandLineMode>(kLastMode + 1))); | |
801 } | |
802 | |
803 TEST_F(GoopdateIsMachineProcessTest, IsMachineProcess_IsLocalSystemOnly) { | |
804 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_UNKNOWN)); | |
805 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_NOARGS)); | |
806 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_CORE)); | |
807 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_SERVICE)); | |
808 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_REGSERVER)); | |
809 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_UNREGSERVER)); | |
810 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_NETDIAGS)); | |
811 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_CRASH)); | |
812 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_REPORTCRASH)); | |
813 { | |
814 ExpectAsserts expect_asserts; | |
815 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_INSTALL)); | |
816 } | |
817 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_UPDATE)); | |
818 { | |
819 ExpectAsserts expect_asserts; | |
820 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_HANDOFF_INSTALL)); | |
821 } | |
822 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_UA)); | |
823 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_RECOVER)); | |
824 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_WEBPLUGIN)); | |
825 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_CODE_RED_CHECK)); | |
826 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_COMSERVER)); | |
827 { | |
828 ExpectAsserts expect_asserts; | |
829 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_REGISTER_PRODUCT)); | |
830 } | |
831 { | |
832 ExpectAsserts expect_asserts; | |
833 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_UNREGISTER_PRODUCT)); | |
834 } | |
835 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_SERVICE_REGISTER)); | |
836 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_SERVICE_UNREGISTER)); | |
837 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_CRASH_HANDLER)); | |
838 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_COMBROKER)); | |
839 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_ONDEMAND)); | |
840 EXPECT_TRUE(IsLocalSystemHelper(COMMANDLINE_MODE_MEDIUM_SERVICE)); | |
841 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_UNINSTALL)); | |
842 EXPECT_FALSE(IsLocalSystemHelper(COMMANDLINE_MODE_PING)); | |
843 EXPECT_FALSE(IsLocalSystemHelper( | |
844 static_cast<CommandLineMode>(kLastMode + 1))); | |
845 } | |
846 | |
847 TEST_F(GoopdateIsMachineProcessTest, IsMachineProcess_MachineOverrideOnly) { | |
848 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_UNKNOWN)); | |
849 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_NOARGS)); | |
850 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_CORE)); | |
851 { | |
852 ExpectAsserts expect_asserts; | |
853 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_SERVICE)); | |
854 } | |
855 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_REGSERVER)); | |
856 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_UNREGSERVER)); | |
857 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_NETDIAGS)); | |
858 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_CRASH)); | |
859 EXPECT_TRUE(MachineOverrideHelper(COMMANDLINE_MODE_REPORTCRASH)); | |
860 { | |
861 ExpectAsserts expect_asserts; | |
862 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_INSTALL)); | |
863 } | |
864 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_UPDATE)); | |
865 { | |
866 ExpectAsserts expect_asserts; | |
867 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_HANDOFF_INSTALL)); | |
868 } | |
869 EXPECT_TRUE(MachineOverrideHelper(COMMANDLINE_MODE_UA)); | |
870 EXPECT_TRUE(MachineOverrideHelper(COMMANDLINE_MODE_RECOVER)); | |
871 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_WEBPLUGIN)); | |
872 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_CODE_RED_CHECK)); | |
873 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_COMSERVER)); | |
874 { | |
875 ExpectAsserts expect_asserts; | |
876 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_REGISTER_PRODUCT)); | |
877 } | |
878 { | |
879 ExpectAsserts expect_asserts; | |
880 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_UNREGISTER_PRODUCT)); | |
881 } | |
882 EXPECT_TRUE(MachineOverrideHelper(COMMANDLINE_MODE_SERVICE_REGISTER)); | |
883 EXPECT_TRUE(MachineOverrideHelper(COMMANDLINE_MODE_SERVICE_UNREGISTER)); | |
884 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_CRASH_HANDLER)); | |
885 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_COMBROKER)); | |
886 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_ONDEMAND)); | |
887 { | |
888 ExpectAsserts expect_asserts; | |
889 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_MEDIUM_SERVICE)); | |
890 } | |
891 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_UNINSTALL)); | |
892 EXPECT_FALSE(MachineOverrideHelper(COMMANDLINE_MODE_PING)); | |
893 EXPECT_FALSE(MachineOverrideHelper( | |
894 static_cast<CommandLineMode>(kLastMode + 1))); | |
895 } | |
896 | |
897 TEST_F(GoopdateIsMachineProcessTest, IsMachineProcess_NeedsAdminFalseOnly) { | |
898 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_UNKNOWN)); | |
899 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_NOARGS)); | |
900 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_CORE)); | |
901 { | |
902 ExpectAsserts expect_asserts; | |
903 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_SERVICE)); | |
904 } | |
905 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_REGSERVER)); | |
906 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_UNREGSERVER)); | |
907 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_NETDIAGS)); | |
908 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_CRASH)); | |
909 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_REPORTCRASH)); | |
910 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_INSTALL)); | |
911 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_UPDATE)); | |
912 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_HANDOFF_INSTALL)); | |
913 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_UA)); | |
914 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_RECOVER)); | |
915 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_WEBPLUGIN)); | |
916 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_CODE_RED_CHECK)); | |
917 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_COMSERVER)); | |
918 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_REGISTER_PRODUCT)); | |
919 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_UNREGISTER_PRODUCT)); | |
920 EXPECT_TRUE(NeedsAdminFalseHelper(COMMANDLINE_MODE_SERVICE_REGISTER)); | |
921 EXPECT_TRUE(NeedsAdminFalseHelper(COMMANDLINE_MODE_SERVICE_UNREGISTER)); | |
922 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_CRASH_HANDLER)); | |
923 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_COMBROKER)); | |
924 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_ONDEMAND)); | |
925 { | |
926 ExpectAsserts expect_asserts; | |
927 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_MEDIUM_SERVICE)); | |
928 } | |
929 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_UNINSTALL)); | |
930 EXPECT_FALSE(NeedsAdminFalseHelper(COMMANDLINE_MODE_PING)); | |
931 EXPECT_FALSE(NeedsAdminFalseHelper( | |
932 static_cast<CommandLineMode>(kLastMode + 1))); | |
933 } | |
934 | |
935 TEST_F(GoopdateIsMachineProcessTest, IsMachineProcess_NeedsAdminTrueOnly) { | |
936 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_UNKNOWN)); | |
937 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_NOARGS)); | |
938 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_CORE)); | |
939 { | |
940 ExpectAsserts expect_asserts; | |
941 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_SERVICE)); | |
942 } | |
943 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_REGSERVER)); | |
944 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_UNREGSERVER)); | |
945 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_NETDIAGS)); | |
946 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_CRASH)); | |
947 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_REPORTCRASH)); | |
948 EXPECT_TRUE(NeedsAdminTrueHelper(COMMANDLINE_MODE_INSTALL)); | |
949 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_UPDATE)); | |
950 EXPECT_TRUE(NeedsAdminTrueHelper(COMMANDLINE_MODE_HANDOFF_INSTALL)); | |
951 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_UA)); | |
952 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_RECOVER)); | |
953 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_WEBPLUGIN)); | |
954 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_CODE_RED_CHECK)); | |
955 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_COMSERVER)); | |
956 EXPECT_TRUE(NeedsAdminTrueHelper(COMMANDLINE_MODE_REGISTER_PRODUCT)); | |
957 EXPECT_TRUE(NeedsAdminTrueHelper(COMMANDLINE_MODE_UNREGISTER_PRODUCT)); | |
958 EXPECT_TRUE(NeedsAdminTrueHelper(COMMANDLINE_MODE_SERVICE_REGISTER)); | |
959 EXPECT_TRUE(NeedsAdminTrueHelper(COMMANDLINE_MODE_SERVICE_UNREGISTER)); | |
960 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_CRASH_HANDLER)); | |
961 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_COMBROKER)); | |
962 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_ONDEMAND)); | |
963 { | |
964 ExpectAsserts expect_asserts; | |
965 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_MEDIUM_SERVICE)); | |
966 } | |
967 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_UNINSTALL)); | |
968 EXPECT_FALSE(NeedsAdminTrueHelper(COMMANDLINE_MODE_PING)); | |
969 EXPECT_FALSE(NeedsAdminTrueHelper( | |
970 static_cast<CommandLineMode>(kLastMode + 1))); | |
971 } | |
972 | |
973 // Tests all modes plus an undefined one. | |
974 TEST(GoopdateTest, CanDisplayUi_NotSilent) { | |
975 for (int mode = 0; mode <= kLastMode + 1; ++mode) { | |
976 const bool kExpected = mode == COMMANDLINE_MODE_UNKNOWN || | |
977 mode == COMMANDLINE_MODE_INSTALL || | |
978 mode == COMMANDLINE_MODE_HANDOFF_INSTALL || | |
979 mode == COMMANDLINE_MODE_UA; | |
980 | |
981 EXPECT_EQ(kExpected, | |
982 internal::CanDisplayUi(static_cast<CommandLineMode>(mode), | |
983 false)); | |
984 } | |
985 } | |
986 | |
987 TEST(GoopdateTest, CanDisplayUi_Silent) { | |
988 int mode = 0; | |
989 // These two modes always return true. | |
990 for (; mode <= COMMANDLINE_MODE_UNKNOWN; ++mode) { | |
991 EXPECT_TRUE(internal::CanDisplayUi(static_cast<CommandLineMode>(mode), | |
992 true)); | |
993 } | |
994 | |
995 // Tests the remaining modes plus an undefined one. | |
996 for (; mode <= kLastMode + 1; ++mode) { | |
997 EXPECT_FALSE(internal::CanDisplayUi(static_cast<CommandLineMode>(mode), | |
998 true)); | |
999 } | |
1000 } | |
1001 | |
1002 } // namespace omaha | |
OLD | NEW |