OLD | NEW |
| (Empty) |
1 // Copyright 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 <atlbase.h> | |
17 #include <atlcom.h> | |
18 #include "omaha/base/error.h" | |
19 #include "omaha/common/const_goopdate.h" | |
20 #include "omaha/common/const_group_policy.h" | |
21 #include "omaha/common/update_request.h" | |
22 #include "omaha/common/update_response.h" | |
23 #include "omaha/goopdate/app_state_checking_for_update.h" | |
24 #include "omaha/goopdate/app_state_update_available.h" | |
25 #include "omaha/goopdate/app_state_waiting_to_check_for_update.h" | |
26 #include "omaha/goopdate/app_unittest_base.h" | |
27 #include "omaha/testing/unit_test.h" | |
28 | |
29 using ::testing::_; | |
30 | |
31 namespace omaha { | |
32 | |
33 namespace { | |
34 | |
35 #define APP_ID1 _T("{D9F05AEA-BEDA-4f91-B216-BE45DAE330CB}"); | |
36 const TCHAR* const kAppId1 = APP_ID1 | |
37 const TCHAR* const kInstallPolicyApp1 = _T("Install") APP_ID1; | |
38 const TCHAR* const kUpdatePolicyApp1 = _T("Update") APP_ID1; | |
39 const TCHAR* const kAppId1ClientsKeyPathUser = | |
40 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") | |
41 PRODUCT_NAME _T("\\Clients\\") APP_ID1; | |
42 const TCHAR* const kGuid1ClientStateKeyPathUser = | |
43 _T("HKCU\\Software\\") SHORT_COMPANY_NAME _T("\\") | |
44 PRODUCT_NAME _T("\\ClientState\\") APP_ID1; | |
45 | |
46 #define APP_ID2 _T("{EF3CACD4-89EB-46b7-B9BF-B16B15F08584}"); | |
47 const TCHAR* const kInstallPolicyApp2 = _T("Install") APP_ID2; | |
48 const TCHAR* const kUpdatePolicyApp2 = _T("Update") APP_ID2; | |
49 | |
50 void SetPolicy(const CString& policy, DWORD value) { | |
51 EXPECT_SUCCEEDED(RegKey::SetValue(kRegKeyGoopdateGroupPolicy, | |
52 policy, | |
53 value)); | |
54 } | |
55 | |
56 } // namespace | |
57 | |
58 class AppTest : public AppTestBaseWithRegistryOverride { | |
59 protected: | |
60 explicit AppTest(bool use_strict_mock) | |
61 : AppTestBaseWithRegistryOverride(false, // Always as user for now. | |
62 use_strict_mock), | |
63 app_(NULL) {} | |
64 | |
65 virtual void SetUp() { | |
66 AppTestBaseWithRegistryOverride::SetUp(); | |
67 | |
68 update_response_.reset(xml::UpdateResponse::Create()); | |
69 } | |
70 | |
71 void AddAppResponse(const CString& status) { | |
72 xml::response::App app; | |
73 app.status = kResponseStatusOkValue; | |
74 app.appid = kAppId1; | |
75 app.update_check.status = status; | |
76 | |
77 xml::response::Response response; | |
78 response.apps.push_back(app); | |
79 | |
80 SetResponseForUnitTest(update_response_.get(), response); | |
81 } | |
82 | |
83 App* app_; | |
84 scoped_ptr<xml::UpdateResponse> update_response_; | |
85 | |
86 private: | |
87 DISALLOW_COPY_AND_ASSIGN(AppTest); | |
88 }; | |
89 | |
90 class AppInstallTest : public AppTest { | |
91 protected: | |
92 AppInstallTest() : AppTest(true) {} | |
93 | |
94 virtual void SetUp() { | |
95 AppTest::SetUp(); | |
96 EXPECT_SUCCEEDED( | |
97 app_bundle_->createApp(CComBSTR(kAppId1), &app_)); | |
98 ASSERT_TRUE(app_); | |
99 } | |
100 }; | |
101 | |
102 class AppManualUpdateTest : public AppTest { | |
103 protected: | |
104 AppManualUpdateTest() : AppTest(true) {} | |
105 explicit AppManualUpdateTest(bool use_strict_mock) | |
106 : AppTest(use_strict_mock) {} | |
107 | |
108 // Calling checkForUpdate() should leave AppBundle::is_auto_update as false. | |
109 virtual void SetUp() { | |
110 AppTest::SetUp(); | |
111 EXPECT_SUCCEEDED(RegKey::SetValue(kAppId1ClientsKeyPathUser, | |
112 kRegValueProductVersion, | |
113 _T("1.2.3.4"))); | |
114 EXPECT_SUCCEEDED(RegKey::SetValue(kAppId1ClientsKeyPathUser, | |
115 kRegValueAppName, | |
116 _T("Unit Test App"))); | |
117 EXPECT_SUCCEEDED(app_bundle_->createInstalledApp( | |
118 CComBSTR(kAppId1), &app_)); | |
119 ASSERT_TRUE(app_); | |
120 | |
121 EXPECT_CALL(*mock_worker_, CheckForUpdateAsync(_)).Times(1); | |
122 EXPECT_SUCCEEDED(app_bundle_->checkForUpdate()); | |
123 EXPECT_FALSE(app_bundle_->is_auto_update()); | |
124 } | |
125 }; | |
126 | |
127 class AppAutoUpdateTest : public AppManualUpdateTest { | |
128 protected: | |
129 AppAutoUpdateTest() : AppManualUpdateTest(false) {} | |
130 | |
131 // Calling UpdateAllAppsAsync() sets AppBundle::is_auto_update. | |
132 virtual void SetUp() { | |
133 AppTest::SetUp(); | |
134 EXPECT_SUCCEEDED(RegKey::SetValue(kAppId1ClientsKeyPathUser, | |
135 kRegValueProductVersion, | |
136 _T("1.2.3.4"))); | |
137 EXPECT_SUCCEEDED(RegKey::SetValue(kGuid1ClientStateKeyPathUser, | |
138 kRegValueProductVersion, | |
139 _T("1.2.3.4"))); | |
140 EXPECT_SUCCEEDED(RegKey::SetValue(kAppId1ClientsKeyPathUser, | |
141 kRegValueAppName, | |
142 _T("Unit Test App"))); | |
143 | |
144 EXPECT_CALL(*mock_worker_, UpdateAllAppsAsync(_)).Times(1); | |
145 EXPECT_SUCCEEDED(app_bundle_->updateAllApps()); | |
146 EXPECT_TRUE(app_bundle_->is_auto_update()); | |
147 | |
148 app_= app_bundle_->GetApp(0); | |
149 ASSERT_TRUE(app_); | |
150 } | |
151 }; | |
152 | |
153 // | |
154 // CheckGroupPolicy Tests. | |
155 // | |
156 | |
157 TEST_F(AppInstallTest, CheckGroupPolicy_NoPolicy) { | |
158 EXPECT_SUCCEEDED(app_->CheckGroupPolicy()); | |
159 } | |
160 | |
161 TEST_F(AppManualUpdateTest, CheckGroupPolicy_NoPolicy) { | |
162 EXPECT_SUCCEEDED(app_->CheckGroupPolicy()); | |
163 } | |
164 | |
165 TEST_F(AppAutoUpdateTest, CheckGroupPolicy_NoPolicy) { | |
166 EXPECT_SUCCEEDED(app_->CheckGroupPolicy()); | |
167 } | |
168 | |
169 TEST_F(AppInstallTest, CheckGroupPolicy_InstallDisabled) { | |
170 SetPolicy(kInstallPolicyApp1, kPolicyDisabled); | |
171 EXPECT_EQ(GOOPDATE_E_APP_INSTALL_DISABLED_BY_POLICY, | |
172 app_->CheckGroupPolicy()); | |
173 } | |
174 | |
175 TEST_F(AppManualUpdateTest, CheckGroupPolicy_InstallDisabled) { | |
176 SetPolicy(kInstallPolicyApp1, kPolicyDisabled); | |
177 EXPECT_SUCCEEDED(app_->CheckGroupPolicy()); | |
178 } | |
179 | |
180 TEST_F(AppAutoUpdateTest, CheckGroupPolicy_InstallDisabled) { | |
181 SetPolicy(kInstallPolicyApp1, kPolicyDisabled); | |
182 EXPECT_SUCCEEDED(app_->CheckGroupPolicy()); | |
183 } | |
184 | |
185 TEST_F(AppInstallTest, CheckGroupPolicy_AllUpdatesDisabled) { | |
186 SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); | |
187 EXPECT_SUCCEEDED(app_->CheckGroupPolicy()); | |
188 } | |
189 | |
190 TEST_F(AppManualUpdateTest, CheckGroupPolicy_AllUpdatesDisabled) { | |
191 SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); | |
192 EXPECT_EQ(GOOPDATE_E_APP_UPDATE_DISABLED_BY_POLICY, app_->CheckGroupPolicy()); | |
193 } | |
194 | |
195 TEST_F(AppAutoUpdateTest, CheckGroupPolicy_AllUpdatesDisabled) { | |
196 SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); | |
197 EXPECT_EQ(GOOPDATE_E_APP_UPDATE_DISABLED_BY_POLICY, app_->CheckGroupPolicy()); | |
198 } | |
199 | |
200 TEST_F(AppInstallTest, CheckGroupPolicy_AutoUpdatesDisabled) { | |
201 SetPolicy(kUpdatePolicyApp1, kPolicyManualUpdatesOnly); | |
202 EXPECT_SUCCEEDED(app_->CheckGroupPolicy()); | |
203 } | |
204 | |
205 TEST_F(AppManualUpdateTest, CheckGroupPolicy_AutoUpdatesDisabled) { | |
206 SetPolicy(kUpdatePolicyApp1, kPolicyManualUpdatesOnly); | |
207 EXPECT_SUCCEEDED(app_->CheckGroupPolicy()); | |
208 } | |
209 | |
210 TEST_F(AppAutoUpdateTest, CheckGroupPolicy_AutoUpdatesDisabled) { | |
211 SetPolicy(kUpdatePolicyApp1, kPolicyManualUpdatesOnly); | |
212 EXPECT_EQ(GOOPDATE_E_APP_UPDATE_DISABLED_BY_POLICY, app_->CheckGroupPolicy()); | |
213 } | |
214 | |
215 // | |
216 // PostUpdateCheck Tests. | |
217 // | |
218 | |
219 TEST_F(AppInstallTest, PostUpdateCheck_NoUpdate) { | |
220 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
221 AddAppResponse(kResponseStatusNoUpdate); | |
222 | |
223 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
224 EXPECT_EQ(STATE_ERROR, app_->state()); | |
225 EXPECT_EQ(GOOPDATE_E_NO_UPDATE_RESPONSE, app_->error_code()); | |
226 } | |
227 | |
228 TEST_F(AppInstallTest, PostUpdateCheck_UpdateAvailable) { | |
229 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
230 AddAppResponse(kResponseStatusOkValue); | |
231 | |
232 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
233 EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); | |
234 EXPECT_EQ(S_OK, app_->error_code()); | |
235 } | |
236 | |
237 // Policy is not checked by this function. | |
238 TEST_F(AppInstallTest, PostUpdateCheck_UpdateAvailable_InstallDisabled) { | |
239 SetPolicy(kInstallPolicyApp1, kPolicyDisabled); | |
240 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
241 AddAppResponse(kResponseStatusOkValue); | |
242 | |
243 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
244 EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); | |
245 EXPECT_EQ(S_OK, app_->error_code()); | |
246 } | |
247 | |
248 TEST_F(AppManualUpdateTest, PostUpdateCheck_NoUpdate) { | |
249 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
250 AddAppResponse(kResponseStatusNoUpdate); | |
251 | |
252 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
253 EXPECT_EQ(STATE_NO_UPDATE, app_->state()); | |
254 EXPECT_EQ(0, app_->error_code()); | |
255 } | |
256 | |
257 TEST_F(AppManualUpdateTest, PostUpdateCheck_UpdateAvailable) { | |
258 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
259 AddAppResponse(kResponseStatusOkValue); | |
260 | |
261 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
262 EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); | |
263 EXPECT_EQ(S_OK, app_->error_code()); | |
264 } | |
265 | |
266 // Policy is not checked by this function. | |
267 TEST_F(AppManualUpdateTest, | |
268 PostUpdateCheck_UpdateAvailable_AllUpdatesDisabled) { | |
269 SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); | |
270 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
271 AddAppResponse(kResponseStatusOkValue); | |
272 | |
273 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
274 EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); | |
275 EXPECT_EQ(S_OK, app_->error_code()); | |
276 } | |
277 | |
278 TEST_F(AppAutoUpdateTest, PostUpdateCheck_NoUpdate) { | |
279 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
280 AddAppResponse(kResponseStatusNoUpdate); | |
281 | |
282 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
283 EXPECT_EQ(STATE_NO_UPDATE, app_->state()); | |
284 EXPECT_EQ(0, app_->error_code()); | |
285 } | |
286 | |
287 TEST_F(AppAutoUpdateTest, PostUpdateCheck_UpdateAvailable) { | |
288 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
289 AddAppResponse(kResponseStatusOkValue); | |
290 | |
291 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
292 EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); | |
293 EXPECT_EQ(S_OK, app_->error_code()); | |
294 } | |
295 | |
296 // Policy is not checked by this function. | |
297 TEST_F(AppAutoUpdateTest, PostUpdateCheck_UpdateAvailable_AllUpdatesDisabled) { | |
298 SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); | |
299 SetAppStateForUnitTest(app_, new fsm::AppStateCheckingForUpdate); | |
300 AddAppResponse(kResponseStatusOkValue); | |
301 | |
302 app_->PostUpdateCheck(S_OK, update_response_.get()); | |
303 EXPECT_EQ(STATE_UPDATE_AVAILABLE, app_->state()); | |
304 EXPECT_EQ(S_OK, app_->error_code()); | |
305 } | |
306 | |
307 // | |
308 // QueueDownload Tests. | |
309 // | |
310 | |
311 TEST_F(AppInstallTest, QueueDownload_NoPolicy) { | |
312 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
313 | |
314 app_->QueueDownload(); | |
315 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
316 EXPECT_EQ(S_OK, app_->error_code()); | |
317 } | |
318 | |
319 TEST_F(AppInstallTest, QueueDownload_InstallDisabled) { | |
320 SetPolicy(kInstallPolicyApp1, kPolicyDisabled); | |
321 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
322 | |
323 app_->QueueDownload(); | |
324 EXPECT_EQ(STATE_ERROR, app_->state()); | |
325 EXPECT_EQ(GOOPDATE_E_APP_INSTALL_DISABLED_BY_POLICY, app_->error_code()); | |
326 } | |
327 | |
328 TEST_F(AppInstallTest, | |
329 QueueDownload_InstallDisabledForDifferentApp) { | |
330 SetPolicy(kInstallPolicyApp2, kPolicyDisabled); | |
331 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
332 | |
333 app_->QueueDownload(); | |
334 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
335 EXPECT_EQ(S_OK, app_->error_code()); | |
336 } | |
337 | |
338 TEST_F(AppInstallTest, QueueDownload_AllUpdatesDisabled) { | |
339 SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); | |
340 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
341 | |
342 app_->QueueDownload(); | |
343 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
344 EXPECT_EQ(S_OK, app_->error_code()); | |
345 } | |
346 | |
347 TEST_F(AppManualUpdateTest, QueueDownload_NoPolicy) { | |
348 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
349 | |
350 app_->QueueDownload(); | |
351 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
352 EXPECT_EQ(S_OK, app_->error_code()); | |
353 } | |
354 | |
355 TEST_F(AppManualUpdateTest, QueueDownload_AllUpdatesDisabled) { | |
356 SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); | |
357 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
358 | |
359 app_->QueueDownload(); | |
360 EXPECT_EQ(STATE_ERROR, app_->state()); | |
361 EXPECT_EQ(GOOPDATE_E_APP_UPDATE_DISABLED_BY_POLICY, app_->error_code()); | |
362 } | |
363 | |
364 TEST_F(AppManualUpdateTest, | |
365 QueueDownload_AllUpdatesDisabledForDifferentApp) { | |
366 SetPolicy(kUpdatePolicyApp2, kPolicyDisabled); | |
367 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
368 | |
369 app_->QueueDownload(); | |
370 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
371 EXPECT_EQ(S_OK, app_->error_code()); | |
372 } | |
373 | |
374 TEST_F(AppManualUpdateTest, QueueDownload_AutoUpdatesDisabled) { | |
375 SetPolicy(kUpdatePolicyApp1, kPolicyManualUpdatesOnly); | |
376 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
377 | |
378 app_->QueueDownload(); | |
379 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
380 EXPECT_EQ(S_OK, app_->error_code()); | |
381 } | |
382 | |
383 TEST_F(AppManualUpdateTest, QueueDownload_InstallDisabled) { | |
384 SetPolicy(kInstallPolicyApp1, kPolicyDisabled); | |
385 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
386 | |
387 app_->QueueDownload(); | |
388 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
389 EXPECT_EQ(S_OK, app_->error_code()); | |
390 } | |
391 | |
392 TEST_F(AppAutoUpdateTest, QueueDownload_AllUpdatesDisabled_NoPolicy) { | |
393 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
394 | |
395 app_->QueueDownload(); | |
396 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
397 EXPECT_EQ(S_OK, app_->error_code()); | |
398 } | |
399 | |
400 TEST_F(AppAutoUpdateTest, QueueDownload_AllUpdatesDisabled) { | |
401 SetPolicy(kUpdatePolicyApp1, kPolicyDisabled); | |
402 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
403 | |
404 app_->QueueDownload(); | |
405 EXPECT_EQ(STATE_ERROR, app_->state()); | |
406 EXPECT_EQ(GOOPDATE_E_APP_UPDATE_DISABLED_BY_POLICY, app_->error_code()); | |
407 } | |
408 | |
409 TEST_F(AppAutoUpdateTest, QueueDownload_AllUpdatesDisabledForDifferentApp) { | |
410 SetPolicy(kUpdatePolicyApp2, kPolicyDisabled); | |
411 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
412 | |
413 app_->QueueDownload(); | |
414 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
415 EXPECT_EQ(S_OK, app_->error_code()); | |
416 } | |
417 | |
418 TEST_F(AppAutoUpdateTest, QueueDownload_AutoUpdatesDisabled) { | |
419 SetPolicy(kUpdatePolicyApp1, kPolicyManualUpdatesOnly); | |
420 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
421 | |
422 app_->QueueDownload(); | |
423 EXPECT_EQ(STATE_ERROR, app_->state()); | |
424 EXPECT_EQ(GOOPDATE_E_APP_UPDATE_DISABLED_BY_POLICY, app_->error_code()); | |
425 } | |
426 | |
427 TEST_F(AppAutoUpdateTest, QueueDownload_InstallDisabled) { | |
428 SetPolicy(kInstallPolicyApp1, kPolicyDisabled); | |
429 SetAppStateForUnitTest(app_, new fsm::AppStateUpdateAvailable); | |
430 | |
431 app_->QueueDownload(); | |
432 EXPECT_EQ(STATE_WAITING_TO_DOWNLOAD, app_->state()); | |
433 EXPECT_EQ(S_OK, app_->error_code()); | |
434 } | |
435 | |
436 // | |
437 // PreUpdateCheck Tests. | |
438 // | |
439 | |
440 TEST_F(AppInstallTest, PreUpdateCheck_EulaAccepted) { | |
441 SetAppStateForUnitTest(app_, new fsm::AppStateWaitingToCheckForUpdate); | |
442 EXPECT_SUCCEEDED(app_->put_isEulaAccepted(VARIANT_TRUE)); | |
443 | |
444 scoped_ptr<xml::UpdateRequest> update_request; | |
445 update_request.reset(xml::UpdateRequest::Create(is_machine_, | |
446 _T("unittest_sessionid"), | |
447 _T("unittest_instsource"), | |
448 CString())); | |
449 EXPECT_TRUE(update_request->IsEmpty()); | |
450 | |
451 app_->PreUpdateCheck(update_request.get()); | |
452 EXPECT_EQ(STATE_CHECKING_FOR_UPDATE, app_->state()); | |
453 EXPECT_EQ(S_OK, app_->error_code()); | |
454 EXPECT_FALSE(update_request->IsEmpty()); | |
455 } | |
456 | |
457 TEST_F(AppAutoUpdateTest, PreUpdateCheck_EulaAccepted) { | |
458 SetAppStateForUnitTest(app_, new fsm::AppStateWaitingToCheckForUpdate); | |
459 EXPECT_SUCCEEDED(app_->put_isEulaAccepted(VARIANT_TRUE)); | |
460 | |
461 scoped_ptr<xml::UpdateRequest> update_request; | |
462 update_request.reset(xml::UpdateRequest::Create(is_machine_, | |
463 _T("unittest_sessionid"), | |
464 _T("unittest_instsource"), | |
465 CString())); | |
466 EXPECT_TRUE(update_request->IsEmpty()); | |
467 | |
468 app_->PreUpdateCheck(update_request.get()); | |
469 EXPECT_EQ(STATE_CHECKING_FOR_UPDATE, app_->state()); | |
470 EXPECT_EQ(S_OK, app_->error_code()); | |
471 EXPECT_FALSE(update_request->IsEmpty()); | |
472 } | |
473 | |
474 TEST_F(AppInstallTest, PreUpdateCheck_EulaNotAccepted_Online) { | |
475 SetAppStateForUnitTest(app_, new fsm::AppStateWaitingToCheckForUpdate); | |
476 EXPECT_SUCCEEDED(app_->put_isEulaAccepted(VARIANT_FALSE)); | |
477 | |
478 scoped_ptr<xml::UpdateRequest> update_request; | |
479 update_request.reset(xml::UpdateRequest::Create(is_machine_, | |
480 _T("unittest_sessionid"), | |
481 _T("unittest_instsource"), | |
482 CString())); | |
483 | |
484 ExpectAsserts expect_asserts; // Asserts because not is_update. | |
485 | |
486 app_->PreUpdateCheck(update_request.get()); | |
487 EXPECT_EQ(STATE_ERROR, app_->state()); | |
488 EXPECT_EQ(GOOPDATE_E_APP_UPDATE_DISABLED_EULA_NOT_ACCEPTED, | |
489 app_->error_code()); | |
490 EXPECT_TRUE(update_request->IsEmpty()) << _T("Should not add request."); | |
491 } | |
492 | |
493 TEST_F(AppInstallTest, PreUpdateCheck_EulaNotAccepted_Offline) { | |
494 SetAppStateForUnitTest(app_, new fsm::AppStateWaitingToCheckForUpdate); | |
495 EXPECT_SUCCEEDED(app_->put_isEulaAccepted(VARIANT_FALSE)); | |
496 EXPECT_SUCCEEDED(app_bundle_->put_offlineDirectory(CComBSTR(_T("foo")))); | |
497 | |
498 scoped_ptr<xml::UpdateRequest> update_request; | |
499 update_request.reset(xml::UpdateRequest::Create(is_machine_, | |
500 _T("unittest_sessionid"), | |
501 _T("unittest_instsource"), | |
502 CString())); | |
503 | |
504 app_->PreUpdateCheck(update_request.get()); | |
505 EXPECT_EQ(STATE_CHECKING_FOR_UPDATE, app_->state()); | |
506 EXPECT_EQ(S_OK, app_->error_code()); | |
507 EXPECT_TRUE(update_request->IsEmpty()) << _T("Should not add request."); | |
508 } | |
509 | |
510 TEST_F(AppAutoUpdateTest, PreUpdateCheck_EulaNotAccepted) { | |
511 SetAppStateForUnitTest(app_, new fsm::AppStateWaitingToCheckForUpdate); | |
512 EXPECT_SUCCEEDED(app_->put_isEulaAccepted(VARIANT_FALSE)); | |
513 | |
514 scoped_ptr<xml::UpdateRequest> update_request; | |
515 update_request.reset(xml::UpdateRequest::Create(is_machine_, | |
516 _T("unittest_sessionid"), | |
517 _T("unittest_instsource"), | |
518 CString())); | |
519 | |
520 app_->PreUpdateCheck(update_request.get()); | |
521 EXPECT_EQ(STATE_ERROR, app_->state()); | |
522 EXPECT_EQ(GOOPDATE_E_APP_UPDATE_DISABLED_EULA_NOT_ACCEPTED, | |
523 app_->error_code()); | |
524 EXPECT_TRUE(update_request->IsEmpty()) << _T("Should not add request."); | |
525 } | |
526 | |
527 } // namespace omaha | |
OLD | NEW |