OLD | NEW |
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include <glib.h> | 8 #include <glib.h> |
9 | 9 |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 // Debugging/logging | 138 // Debugging/logging |
139 static std::string StaticType() { | 139 static std::string StaticType() { |
140 return "OutputObjectCollectorAction"; | 140 return "OutputObjectCollectorAction"; |
141 } | 141 } |
142 std::string Type() const { return StaticType(); } | 142 std::string Type() const { return StaticType(); } |
143 bool has_input_object_; | 143 bool has_input_object_; |
144 OmahaResponse omaha_response_; | 144 OmahaResponse omaha_response_; |
145 }; | 145 }; |
146 | 146 |
147 // Returns true iff an output response was obtained from the | 147 // Returns true iff an output response was obtained from the |
148 // OmahaRequestAction. |prefs| may be NULL, in which case a local | 148 // OmahaRequestAction. |prefs| may be NULL, in which case a local PrefsMock is |
149 // PrefsMock is used. out_response may be NULL. out_post_data may be | 149 // used. out_response may be NULL. If |fail_http_response_code| is |
150 // null; if non-null, the post-data received by the mock HttpFetcher | 150 // non-negative, the transfer will fail with that code. out_post_data may be |
151 // is returned. | 151 // null; if non-null, the post-data received by the mock HttpFetcher is |
| 152 // returned. |
152 bool TestUpdateCheck(PrefsInterface* prefs, | 153 bool TestUpdateCheck(PrefsInterface* prefs, |
153 const OmahaRequestParams& params, | 154 const OmahaRequestParams& params, |
154 const string& http_response, | 155 const string& http_response, |
| 156 int fail_http_response_code, |
155 ActionExitCode expected_code, | 157 ActionExitCode expected_code, |
156 OmahaResponse* out_response, | 158 OmahaResponse* out_response, |
157 vector<char>* out_post_data) { | 159 vector<char>* out_post_data) { |
158 GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE); | 160 GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE); |
159 MockHttpFetcher* fetcher = new MockHttpFetcher(http_response.data(), | 161 MockHttpFetcher* fetcher = new MockHttpFetcher(http_response.data(), |
160 http_response.size()); | 162 http_response.size()); |
| 163 if (fail_http_response_code >= 0) { |
| 164 fetcher->FailTransfer(fail_http_response_code); |
| 165 } |
161 PrefsMock local_prefs; | 166 PrefsMock local_prefs; |
162 OmahaRequestAction action(prefs ? prefs : &local_prefs, | 167 OmahaRequestAction action(prefs ? prefs : &local_prefs, |
163 params, | 168 params, |
164 NULL, | 169 NULL, |
165 fetcher); | 170 fetcher); |
166 OmahaRequestActionTestProcessorDelegate delegate; | 171 OmahaRequestActionTestProcessorDelegate delegate; |
167 delegate.loop_ = loop; | 172 delegate.loop_ = loop; |
168 delegate.expected_code_ = expected_code; | 173 delegate.expected_code_ = expected_code; |
169 | 174 |
170 ActionProcessor processor; | 175 ActionProcessor processor; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 if (out_post_data) | 214 if (out_post_data) |
210 *out_post_data = fetcher->post_data(); | 215 *out_post_data = fetcher->post_data(); |
211 } | 216 } |
212 | 217 |
213 TEST(OmahaRequestActionTest, NoUpdateTest) { | 218 TEST(OmahaRequestActionTest, NoUpdateTest) { |
214 OmahaResponse response; | 219 OmahaResponse response; |
215 ASSERT_TRUE( | 220 ASSERT_TRUE( |
216 TestUpdateCheck(NULL, // prefs | 221 TestUpdateCheck(NULL, // prefs |
217 kDefaultTestParams, | 222 kDefaultTestParams, |
218 GetNoUpdateResponse(OmahaRequestParams::kAppId), | 223 GetNoUpdateResponse(OmahaRequestParams::kAppId), |
| 224 -1, |
219 kActionCodeSuccess, | 225 kActionCodeSuccess, |
220 &response, | 226 &response, |
221 NULL)); | 227 NULL)); |
222 EXPECT_FALSE(response.update_exists); | 228 EXPECT_FALSE(response.update_exists); |
223 } | 229 } |
224 | 230 |
225 TEST(OmahaRequestActionTest, ValidUpdateTest) { | 231 TEST(OmahaRequestActionTest, ValidUpdateTest) { |
226 OmahaResponse response; | 232 OmahaResponse response; |
227 ASSERT_TRUE( | 233 ASSERT_TRUE( |
228 TestUpdateCheck(NULL, // prefs | 234 TestUpdateCheck(NULL, // prefs |
229 kDefaultTestParams, | 235 kDefaultTestParams, |
230 GetUpdateResponse(OmahaRequestParams::kAppId, | 236 GetUpdateResponse(OmahaRequestParams::kAppId, |
231 "1.2.3.4", // version | 237 "1.2.3.4", // version |
232 "http://more/info", | 238 "http://more/info", |
233 "true", // prompt | 239 "true", // prompt |
234 "http://code/base", // dl url | 240 "http://code/base", // dl url |
235 "HASH1234=", // checksum | 241 "HASH1234=", // checksum |
236 "false", // needs admin | 242 "false", // needs admin |
237 "123", // size | 243 "123", // size |
238 "20101020"), // deadline | 244 "20101020"), // deadline |
| 245 -1, |
239 kActionCodeSuccess, | 246 kActionCodeSuccess, |
240 &response, | 247 &response, |
241 NULL)); | 248 NULL)); |
242 EXPECT_TRUE(response.update_exists); | 249 EXPECT_TRUE(response.update_exists); |
243 EXPECT_EQ("1.2.3.4", response.display_version); | 250 EXPECT_EQ("1.2.3.4", response.display_version); |
244 EXPECT_EQ("http://code/base", response.codebase); | 251 EXPECT_EQ("http://code/base", response.codebase); |
245 EXPECT_EQ("http://more/info", response.more_info_url); | 252 EXPECT_EQ("http://more/info", response.more_info_url); |
246 EXPECT_TRUE(response.is_delta); | 253 EXPECT_TRUE(response.is_delta); |
247 EXPECT_EQ("HASH1234=", response.hash); | 254 EXPECT_EQ("HASH1234=", response.hash); |
248 EXPECT_EQ(123, response.size); | 255 EXPECT_EQ(123, response.size); |
(...skipping 22 matching lines...) Expand all Loading... |
271 g_main_loop_unref(loop); | 278 g_main_loop_unref(loop); |
272 EXPECT_FALSE(processor.IsRunning()); | 279 EXPECT_FALSE(processor.IsRunning()); |
273 } | 280 } |
274 | 281 |
275 TEST(OmahaRequestActionTest, InvalidXmlTest) { | 282 TEST(OmahaRequestActionTest, InvalidXmlTest) { |
276 OmahaResponse response; | 283 OmahaResponse response; |
277 ASSERT_FALSE( | 284 ASSERT_FALSE( |
278 TestUpdateCheck(NULL, // prefs | 285 TestUpdateCheck(NULL, // prefs |
279 kDefaultTestParams, | 286 kDefaultTestParams, |
280 "invalid xml>", | 287 "invalid xml>", |
281 kActionCodeError, | 288 -1, |
| 289 kActionCodeOmahaRequestXMLParseError, |
282 &response, | 290 &response, |
283 NULL)); | 291 NULL)); |
284 EXPECT_FALSE(response.update_exists); | 292 EXPECT_FALSE(response.update_exists); |
| 293 } |
| 294 |
| 295 TEST(OmahaRequestActionTest, EmptyResponseTest) { |
| 296 OmahaResponse response; |
| 297 ASSERT_FALSE( |
| 298 TestUpdateCheck(NULL, // prefs |
| 299 kDefaultTestParams, |
| 300 "", |
| 301 -1, |
| 302 kActionCodeOmahaRequestEmptyResponseError, |
| 303 &response, |
| 304 NULL)); |
| 305 EXPECT_FALSE(response.update_exists); |
285 } | 306 } |
286 | 307 |
287 TEST(OmahaRequestActionTest, MissingStatusTest) { | 308 TEST(OmahaRequestActionTest, MissingStatusTest) { |
288 OmahaResponse response; | 309 OmahaResponse response; |
289 ASSERT_FALSE(TestUpdateCheck( | 310 ASSERT_FALSE(TestUpdateCheck( |
290 NULL, // prefs | 311 NULL, // prefs |
291 kDefaultTestParams, | 312 kDefaultTestParams, |
292 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " | 313 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
293 "xmlns=\"http://www.google.com/update2/response\" protocol=\"2.0\"><app " | 314 "xmlns=\"http://www.google.com/update2/response\" protocol=\"2.0\"><app " |
294 "appid=\"foo\" status=\"ok\"><ping " | 315 "appid=\"foo\" status=\"ok\"><ping " |
295 "status=\"ok\"/><updatecheck/></app></gupdate>", | 316 "status=\"ok\"/><updatecheck/></app></gupdate>", |
296 kActionCodeError, | 317 -1, |
| 318 kActionCodeOmahaRequestNoUpdateCheckStatus, |
297 &response, | 319 &response, |
298 NULL)); | 320 NULL)); |
299 EXPECT_FALSE(response.update_exists); | 321 EXPECT_FALSE(response.update_exists); |
300 } | 322 } |
301 | 323 |
302 TEST(OmahaRequestActionTest, InvalidStatusTest) { | 324 TEST(OmahaRequestActionTest, InvalidStatusTest) { |
303 OmahaResponse response; | 325 OmahaResponse response; |
304 ASSERT_FALSE(TestUpdateCheck( | 326 ASSERT_FALSE(TestUpdateCheck( |
305 NULL, // prefs | 327 NULL, // prefs |
306 kDefaultTestParams, | 328 kDefaultTestParams, |
307 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " | 329 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
308 "xmlns=\"http://www.google.com/update2/response\" protocol=\"2.0\"><app " | 330 "xmlns=\"http://www.google.com/update2/response\" protocol=\"2.0\"><app " |
309 "appid=\"foo\" status=\"ok\"><ping " | 331 "appid=\"foo\" status=\"ok\"><ping " |
310 "status=\"ok\"/><updatecheck status=\"foo\"/></app></gupdate>", | 332 "status=\"ok\"/><updatecheck status=\"foo\"/></app></gupdate>", |
311 kActionCodeError, | 333 -1, |
| 334 kActionCodeOmahaRequestBadUpdateCheckStatus, |
312 &response, | 335 &response, |
313 NULL)); | 336 NULL)); |
314 EXPECT_FALSE(response.update_exists); | 337 EXPECT_FALSE(response.update_exists); |
315 } | 338 } |
316 | 339 |
317 TEST(OmahaRequestActionTest, MissingNodesetTest) { | 340 TEST(OmahaRequestActionTest, MissingNodesetTest) { |
318 OmahaResponse response; | 341 OmahaResponse response; |
319 ASSERT_FALSE(TestUpdateCheck( | 342 ASSERT_FALSE(TestUpdateCheck( |
320 NULL, // prefs | 343 NULL, // prefs |
321 kDefaultTestParams, | 344 kDefaultTestParams, |
322 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " | 345 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
323 "xmlns=\"http://www.google.com/update2/response\" protocol=\"2.0\"><app " | 346 "xmlns=\"http://www.google.com/update2/response\" protocol=\"2.0\"><app " |
324 "appid=\"foo\" status=\"ok\"><ping " | 347 "appid=\"foo\" status=\"ok\"><ping " |
325 "status=\"ok\"/></app></gupdate>", | 348 "status=\"ok\"/></app></gupdate>", |
326 kActionCodeError, | 349 -1, |
| 350 kActionCodeOmahaRequestNoUpdateCheckNode, |
327 &response, | 351 &response, |
328 NULL)); | 352 NULL)); |
329 EXPECT_FALSE(response.update_exists); | 353 EXPECT_FALSE(response.update_exists); |
330 } | 354 } |
331 | 355 |
332 TEST(OmahaRequestActionTest, MissingFieldTest) { | 356 TEST(OmahaRequestActionTest, MissingFieldTest) { |
333 OmahaResponse response; | 357 OmahaResponse response; |
334 ASSERT_TRUE(TestUpdateCheck(NULL, // prefs | 358 ASSERT_TRUE(TestUpdateCheck(NULL, // prefs |
335 kDefaultTestParams, | 359 kDefaultTestParams, |
336 string("<?xml version=\"1.0\" " | 360 string("<?xml version=\"1.0\" " |
337 "encoding=\"UTF-8\"?><gupdate " | 361 "encoding=\"UTF-8\"?><gupdate " |
338 "xmlns=\"http://www.google.com/" | 362 "xmlns=\"http://www.google.com/" |
339 "update2/response\" " | 363 "update2/response\" " |
340 "protocol=\"2.0\"><app appid=\"") + | 364 "protocol=\"2.0\"><app appid=\"") + |
341 OmahaRequestParams::kAppId | 365 OmahaRequestParams::kAppId |
342 + "\" status=\"ok\"><ping " | 366 + "\" status=\"ok\"><ping " |
343 "status=\"ok\"/><updatecheck " | 367 "status=\"ok\"/><updatecheck " |
344 "DisplayVersion=\"1.2.3.4\" " | 368 "DisplayVersion=\"1.2.3.4\" " |
345 "Prompt=\"false\" " | 369 "Prompt=\"false\" " |
346 "codebase=\"http://code/base\" hash=\"foo\" " | 370 "codebase=\"http://code/base\" hash=\"foo\" " |
347 "sha256=\"HASH1234=\" needsadmin=\"true\" " | 371 "sha256=\"HASH1234=\" needsadmin=\"true\" " |
348 "size=\"123\" " | 372 "size=\"123\" " |
349 "status=\"ok\"/></app></gupdate>", | 373 "status=\"ok\"/></app></gupdate>", |
| 374 -1, |
350 kActionCodeSuccess, | 375 kActionCodeSuccess, |
351 &response, | 376 &response, |
352 NULL)); | 377 NULL)); |
353 EXPECT_TRUE(response.update_exists); | 378 EXPECT_TRUE(response.update_exists); |
354 EXPECT_EQ("1.2.3.4", response.display_version); | 379 EXPECT_EQ("1.2.3.4", response.display_version); |
355 EXPECT_EQ("http://code/base", response.codebase); | 380 EXPECT_EQ("http://code/base", response.codebase); |
356 EXPECT_EQ("", response.more_info_url); | 381 EXPECT_EQ("", response.more_info_url); |
357 EXPECT_FALSE(response.is_delta); | 382 EXPECT_FALSE(response.is_delta); |
358 EXPECT_EQ("HASH1234=", response.hash); | 383 EXPECT_EQ("HASH1234=", response.hash); |
359 EXPECT_EQ(123, response.size); | 384 EXPECT_EQ(123, response.size); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 "en-US", | 444 "en-US", |
420 "unittest_track<", | 445 "unittest_track<", |
421 "<OEM MODEL>", | 446 "<OEM MODEL>", |
422 false, // delta okay | 447 false, // delta okay |
423 "http://url"); | 448 "http://url"); |
424 OmahaResponse response; | 449 OmahaResponse response; |
425 ASSERT_FALSE( | 450 ASSERT_FALSE( |
426 TestUpdateCheck(NULL, // prefs | 451 TestUpdateCheck(NULL, // prefs |
427 params, | 452 params, |
428 "invalid xml>", | 453 "invalid xml>", |
429 kActionCodeError, | 454 -1, |
| 455 kActionCodeOmahaRequestXMLParseError, |
430 &response, | 456 &response, |
431 &post_data)); | 457 &post_data)); |
432 // convert post_data to string | 458 // convert post_data to string |
433 string post_str(&post_data[0], post_data.size()); | 459 string post_str(&post_data[0], post_data.size()); |
434 EXPECT_NE(post_str.find("testtheservice_pack>"), string::npos); | 460 EXPECT_NE(post_str.find("testtheservice_pack>"), string::npos); |
435 EXPECT_EQ(post_str.find("testtheservice_pack>"), string::npos); | 461 EXPECT_EQ(post_str.find("testtheservice_pack>"), string::npos); |
436 EXPECT_NE(post_str.find("x86 generic<id"), string::npos); | 462 EXPECT_NE(post_str.find("x86 generic<id"), string::npos); |
437 EXPECT_EQ(post_str.find("x86 generic<id"), string::npos); | 463 EXPECT_EQ(post_str.find("x86 generic<id"), string::npos); |
438 EXPECT_NE(post_str.find("unittest_track&lt;"), string::npos); | 464 EXPECT_NE(post_str.find("unittest_track&lt;"), string::npos); |
439 EXPECT_EQ(post_str.find("unittest_track<"), string::npos); | 465 EXPECT_EQ(post_str.find("unittest_track<"), string::npos); |
440 EXPECT_NE(post_str.find("<OEM MODEL>"), string::npos); | 466 EXPECT_NE(post_str.find("<OEM MODEL>"), string::npos); |
441 EXPECT_EQ(post_str.find("<OEM MODEL>"), string::npos); | 467 EXPECT_EQ(post_str.find("<OEM MODEL>"), string::npos); |
442 } | 468 } |
443 | 469 |
444 TEST(OmahaRequestActionTest, XmlDecodeTest) { | 470 TEST(OmahaRequestActionTest, XmlDecodeTest) { |
445 OmahaResponse response; | 471 OmahaResponse response; |
446 ASSERT_TRUE( | 472 ASSERT_TRUE( |
447 TestUpdateCheck(NULL, // prefs | 473 TestUpdateCheck(NULL, // prefs |
448 kDefaultTestParams, | 474 kDefaultTestParams, |
449 GetUpdateResponse(OmahaRequestParams::kAppId, | 475 GetUpdateResponse(OmahaRequestParams::kAppId, |
450 "1.2.3.4", // version | 476 "1.2.3.4", // version |
451 "testthe<url", // more info | 477 "testthe<url", // more info |
452 "true", // prompt | 478 "true", // prompt |
453 "testthe&codebase", // dl url | 479 "testthe&codebase", // dl url |
454 "HASH1234=", // checksum | 480 "HASH1234=", // checksum |
455 "false", // needs admin | 481 "false", // needs admin |
456 "123", // size | 482 "123", // size |
457 "<20110101"), // deadline | 483 "<20110101"), // deadline |
| 484 -1, |
458 kActionCodeSuccess, | 485 kActionCodeSuccess, |
459 &response, | 486 &response, |
460 NULL)); | 487 NULL)); |
461 | 488 |
462 EXPECT_EQ(response.more_info_url, "testthe<url"); | 489 EXPECT_EQ(response.more_info_url, "testthe<url"); |
463 EXPECT_EQ(response.codebase, "testthe&codebase"); | 490 EXPECT_EQ(response.codebase, "testthe&codebase"); |
464 EXPECT_EQ(response.deadline, "<20110101"); | 491 EXPECT_EQ(response.deadline, "<20110101"); |
465 } | 492 } |
466 | 493 |
467 TEST(OmahaRequestActionTest, ParseIntTest) { | 494 TEST(OmahaRequestActionTest, ParseIntTest) { |
468 OmahaResponse response; | 495 OmahaResponse response; |
469 ASSERT_TRUE( | 496 ASSERT_TRUE( |
470 TestUpdateCheck(NULL, // prefs | 497 TestUpdateCheck(NULL, // prefs |
471 kDefaultTestParams, | 498 kDefaultTestParams, |
472 GetUpdateResponse(OmahaRequestParams::kAppId, | 499 GetUpdateResponse(OmahaRequestParams::kAppId, |
473 "1.2.3.4", // version | 500 "1.2.3.4", // version |
474 "theurl", // more info | 501 "theurl", // more info |
475 "true", // prompt | 502 "true", // prompt |
476 "thecodebase", // dl url | 503 "thecodebase", // dl url |
477 "HASH1234=", // checksum | 504 "HASH1234=", // checksum |
478 "false", // needs admin | 505 "false", // needs admin |
479 // overflows int32: | 506 // overflows int32: |
480 "123123123123123", // size | 507 "123123123123123", // size |
481 "deadline"), | 508 "deadline"), |
| 509 -1, |
482 kActionCodeSuccess, | 510 kActionCodeSuccess, |
483 &response, | 511 &response, |
484 NULL)); | 512 NULL)); |
485 | 513 |
486 EXPECT_EQ(response.size, 123123123123123ll); | 514 EXPECT_EQ(response.size, 123123123123123ll); |
487 } | 515 } |
488 | 516 |
489 TEST(OmahaRequestActionTest, FormatUpdateCheckOutputTest) { | 517 TEST(OmahaRequestActionTest, FormatUpdateCheckOutputTest) { |
490 vector<char> post_data; | 518 vector<char> post_data; |
491 ASSERT_FALSE(TestUpdateCheck(NULL, // prefs | 519 ASSERT_FALSE(TestUpdateCheck(NULL, // prefs |
492 kDefaultTestParams, | 520 kDefaultTestParams, |
493 "invalid xml>", | 521 "invalid xml>", |
494 kActionCodeError, | 522 -1, |
| 523 kActionCodeOmahaRequestXMLParseError, |
495 NULL, // response | 524 NULL, // response |
496 &post_data)); | 525 &post_data)); |
497 // convert post_data to string | 526 // convert post_data to string |
498 string post_str(&post_data[0], post_data.size()); | 527 string post_str(&post_data[0], post_data.size()); |
499 EXPECT_NE(post_str.find(" <o:ping a=\"-1\" r=\"-1\"></o:ping>\n" | 528 EXPECT_NE(post_str.find(" <o:ping a=\"-1\" r=\"-1\"></o:ping>\n" |
500 " <o:updatecheck></o:updatecheck>\n"), | 529 " <o:updatecheck></o:updatecheck>\n"), |
501 string::npos); | 530 string::npos); |
502 EXPECT_NE(post_str.find("hardware_class=\"OEM MODEL 09235 7471\""), | 531 EXPECT_NE(post_str.find("hardware_class=\"OEM MODEL 09235 7471\""), |
503 string::npos); | 532 string::npos); |
504 EXPECT_EQ(post_str.find("o:event"), string::npos); | 533 EXPECT_EQ(post_str.find("o:event"), string::npos); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 OmahaRequestParams::kAppId, | 622 OmahaRequestParams::kAppId, |
594 "0.1.0.0", | 623 "0.1.0.0", |
595 "en-US", | 624 "en-US", |
596 "unittest_track", | 625 "unittest_track", |
597 "OEM MODEL REV 1234", | 626 "OEM MODEL REV 1234", |
598 delta_okay, | 627 delta_okay, |
599 "http://url"); | 628 "http://url"); |
600 ASSERT_FALSE(TestUpdateCheck(NULL, // prefs | 629 ASSERT_FALSE(TestUpdateCheck(NULL, // prefs |
601 params, | 630 params, |
602 "invalid xml>", | 631 "invalid xml>", |
603 kActionCodeError, | 632 -1, |
| 633 kActionCodeOmahaRequestXMLParseError, |
604 NULL, | 634 NULL, |
605 &post_data)); | 635 &post_data)); |
606 // convert post_data to string | 636 // convert post_data to string |
607 string post_str(&post_data[0], post_data.size()); | 637 string post_str(&post_data[0], post_data.size()); |
608 EXPECT_NE(post_str.find(StringPrintf(" delta_okay=\"%s\"", delta_okay_str)), | 638 EXPECT_NE(post_str.find(StringPrintf(" delta_okay=\"%s\"", delta_okay_str)), |
609 string::npos) | 639 string::npos) |
610 << "i = " << i; | 640 << "i = " << i; |
611 } | 641 } |
612 } | 642 } |
613 | 643 |
(...skipping 25 matching lines...) Expand all Loading... |
639 (Time::Now() - TimeDelta::FromHours(6 * 24 + 11)).ToInternalValue(); | 669 (Time::Now() - TimeDelta::FromHours(6 * 24 + 11)).ToInternalValue(); |
640 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) | 670 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) |
641 .WillOnce(DoAll(SetArgumentPointee<1>(six_days_ago), Return(true))); | 671 .WillOnce(DoAll(SetArgumentPointee<1>(six_days_ago), Return(true))); |
642 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) | 672 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) |
643 .WillOnce(DoAll(SetArgumentPointee<1>(five_days_ago), Return(true))); | 673 .WillOnce(DoAll(SetArgumentPointee<1>(five_days_ago), Return(true))); |
644 vector<char> post_data; | 674 vector<char> post_data; |
645 ASSERT_TRUE( | 675 ASSERT_TRUE( |
646 TestUpdateCheck(&prefs, | 676 TestUpdateCheck(&prefs, |
647 kDefaultTestParams, | 677 kDefaultTestParams, |
648 GetNoUpdateResponse(OmahaRequestParams::kAppId), | 678 GetNoUpdateResponse(OmahaRequestParams::kAppId), |
| 679 -1, |
649 kActionCodeSuccess, | 680 kActionCodeSuccess, |
650 NULL, | 681 NULL, |
651 &post_data)); | 682 &post_data)); |
652 string post_str(&post_data[0], post_data.size()); | 683 string post_str(&post_data[0], post_data.size()); |
653 EXPECT_NE(post_str.find("<o:ping a=\"6\" r=\"5\"></o:ping>"), string::npos); | 684 EXPECT_NE(post_str.find("<o:ping a=\"6\" r=\"5\"></o:ping>"), string::npos); |
654 } | 685 } |
655 | 686 |
656 TEST(OmahaRequestActionTest, ActivePingTest) { | 687 TEST(OmahaRequestActionTest, ActivePingTest) { |
657 PrefsMock prefs; | 688 PrefsMock prefs; |
658 int64_t three_days_ago = | 689 int64_t three_days_ago = |
659 (Time::Now() - TimeDelta::FromHours(3 * 24 + 12)).ToInternalValue(); | 690 (Time::Now() - TimeDelta::FromHours(3 * 24 + 12)).ToInternalValue(); |
660 int64_t now = Time::Now().ToInternalValue(); | 691 int64_t now = Time::Now().ToInternalValue(); |
661 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) | 692 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) |
662 .WillOnce(DoAll(SetArgumentPointee<1>(three_days_ago), Return(true))); | 693 .WillOnce(DoAll(SetArgumentPointee<1>(three_days_ago), Return(true))); |
663 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) | 694 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) |
664 .WillOnce(DoAll(SetArgumentPointee<1>(now), Return(true))); | 695 .WillOnce(DoAll(SetArgumentPointee<1>(now), Return(true))); |
665 vector<char> post_data; | 696 vector<char> post_data; |
666 ASSERT_TRUE( | 697 ASSERT_TRUE( |
667 TestUpdateCheck(&prefs, | 698 TestUpdateCheck(&prefs, |
668 kDefaultTestParams, | 699 kDefaultTestParams, |
669 GetNoUpdateResponse(OmahaRequestParams::kAppId), | 700 GetNoUpdateResponse(OmahaRequestParams::kAppId), |
| 701 -1, |
670 kActionCodeSuccess, | 702 kActionCodeSuccess, |
671 NULL, | 703 NULL, |
672 &post_data)); | 704 &post_data)); |
673 string post_str(&post_data[0], post_data.size()); | 705 string post_str(&post_data[0], post_data.size()); |
674 EXPECT_NE(post_str.find("<o:ping a=\"3\"></o:ping>"), string::npos); | 706 EXPECT_NE(post_str.find("<o:ping a=\"3\"></o:ping>"), string::npos); |
675 } | 707 } |
676 | 708 |
677 TEST(OmahaRequestActionTest, RollCallPingTest) { | 709 TEST(OmahaRequestActionTest, RollCallPingTest) { |
678 PrefsMock prefs; | 710 PrefsMock prefs; |
679 int64_t four_days_ago = | 711 int64_t four_days_ago = |
680 (Time::Now() - TimeDelta::FromHours(4 * 24)).ToInternalValue(); | 712 (Time::Now() - TimeDelta::FromHours(4 * 24)).ToInternalValue(); |
681 int64_t now = Time::Now().ToInternalValue(); | 713 int64_t now = Time::Now().ToInternalValue(); |
682 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) | 714 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) |
683 .WillOnce(DoAll(SetArgumentPointee<1>(now), Return(true))); | 715 .WillOnce(DoAll(SetArgumentPointee<1>(now), Return(true))); |
684 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) | 716 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) |
685 .WillOnce(DoAll(SetArgumentPointee<1>(four_days_ago), Return(true))); | 717 .WillOnce(DoAll(SetArgumentPointee<1>(four_days_ago), Return(true))); |
686 vector<char> post_data; | 718 vector<char> post_data; |
687 ASSERT_TRUE( | 719 ASSERT_TRUE( |
688 TestUpdateCheck(&prefs, | 720 TestUpdateCheck(&prefs, |
689 kDefaultTestParams, | 721 kDefaultTestParams, |
690 GetNoUpdateResponse(OmahaRequestParams::kAppId), | 722 GetNoUpdateResponse(OmahaRequestParams::kAppId), |
| 723 -1, |
691 kActionCodeSuccess, | 724 kActionCodeSuccess, |
692 NULL, | 725 NULL, |
693 &post_data)); | 726 &post_data)); |
694 string post_str(&post_data[0], post_data.size()); | 727 string post_str(&post_data[0], post_data.size()); |
695 EXPECT_NE(post_str.find("<o:ping r=\"4\"></o:ping>\n"), string::npos); | 728 EXPECT_NE(post_str.find("<o:ping r=\"4\"></o:ping>\n"), string::npos); |
696 } | 729 } |
697 | 730 |
698 TEST(OmahaRequestActionTest, NoPingTest) { | 731 TEST(OmahaRequestActionTest, NoPingTest) { |
699 PrefsMock prefs; | 732 PrefsMock prefs; |
700 int64_t one_hour_ago = | 733 int64_t one_hour_ago = |
701 (Time::Now() - TimeDelta::FromHours(1)).ToInternalValue(); | 734 (Time::Now() - TimeDelta::FromHours(1)).ToInternalValue(); |
702 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) | 735 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) |
703 .WillOnce(DoAll(SetArgumentPointee<1>(one_hour_ago), Return(true))); | 736 .WillOnce(DoAll(SetArgumentPointee<1>(one_hour_ago), Return(true))); |
704 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) | 737 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) |
705 .WillOnce(DoAll(SetArgumentPointee<1>(one_hour_ago), Return(true))); | 738 .WillOnce(DoAll(SetArgumentPointee<1>(one_hour_ago), Return(true))); |
706 EXPECT_CALL(prefs, SetInt64(kPrefsLastActivePingDay, _)).Times(0); | 739 EXPECT_CALL(prefs, SetInt64(kPrefsLastActivePingDay, _)).Times(0); |
707 EXPECT_CALL(prefs, SetInt64(kPrefsLastRollCallPingDay, _)).Times(0); | 740 EXPECT_CALL(prefs, SetInt64(kPrefsLastRollCallPingDay, _)).Times(0); |
708 vector<char> post_data; | 741 vector<char> post_data; |
709 ASSERT_TRUE( | 742 ASSERT_TRUE( |
710 TestUpdateCheck(&prefs, | 743 TestUpdateCheck(&prefs, |
711 kDefaultTestParams, | 744 kDefaultTestParams, |
712 GetNoUpdateResponse(OmahaRequestParams::kAppId), | 745 GetNoUpdateResponse(OmahaRequestParams::kAppId), |
| 746 -1, |
713 kActionCodeSuccess, | 747 kActionCodeSuccess, |
714 NULL, | 748 NULL, |
715 &post_data)); | 749 &post_data)); |
716 string post_str(&post_data[0], post_data.size()); | 750 string post_str(&post_data[0], post_data.size()); |
717 EXPECT_EQ(post_str.find("o:ping"), string::npos); | 751 EXPECT_EQ(post_str.find("o:ping"), string::npos); |
718 } | 752 } |
719 | 753 |
720 TEST(OmahaRequestActionTest, BackInTimePingTest) { | 754 TEST(OmahaRequestActionTest, BackInTimePingTest) { |
721 PrefsMock prefs; | 755 PrefsMock prefs; |
722 int64_t future = | 756 int64_t future = |
723 (Time::Now() + TimeDelta::FromHours(3 * 24 + 4)).ToInternalValue(); | 757 (Time::Now() + TimeDelta::FromHours(3 * 24 + 4)).ToInternalValue(); |
724 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) | 758 EXPECT_CALL(prefs, GetInt64(kPrefsLastActivePingDay, _)) |
725 .WillOnce(DoAll(SetArgumentPointee<1>(future), Return(true))); | 759 .WillOnce(DoAll(SetArgumentPointee<1>(future), Return(true))); |
726 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) | 760 EXPECT_CALL(prefs, GetInt64(kPrefsLastRollCallPingDay, _)) |
727 .WillOnce(DoAll(SetArgumentPointee<1>(future), Return(true))); | 761 .WillOnce(DoAll(SetArgumentPointee<1>(future), Return(true))); |
728 EXPECT_CALL(prefs, SetInt64(kPrefsLastActivePingDay, _)) | 762 EXPECT_CALL(prefs, SetInt64(kPrefsLastActivePingDay, _)) |
729 .WillOnce(Return(true)); | 763 .WillOnce(Return(true)); |
730 EXPECT_CALL(prefs, SetInt64(kPrefsLastRollCallPingDay, _)) | 764 EXPECT_CALL(prefs, SetInt64(kPrefsLastRollCallPingDay, _)) |
731 .WillOnce(Return(true)); | 765 .WillOnce(Return(true)); |
732 vector<char> post_data; | 766 vector<char> post_data; |
733 ASSERT_TRUE( | 767 ASSERT_TRUE( |
734 TestUpdateCheck(&prefs, | 768 TestUpdateCheck(&prefs, |
735 kDefaultTestParams, | 769 kDefaultTestParams, |
736 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " | 770 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
737 "xmlns=\"http://www.google.com/update2/response\" " | 771 "xmlns=\"http://www.google.com/update2/response\" " |
738 "protocol=\"2.0\"><daystart elapsed_seconds=\"100\"/>" | 772 "protocol=\"2.0\"><daystart elapsed_seconds=\"100\"/>" |
739 "<app appid=\"foo\" status=\"ok\"><ping status=\"ok\"/>" | 773 "<app appid=\"foo\" status=\"ok\"><ping status=\"ok\"/>" |
740 "<updatecheck status=\"noupdate\"/></app></gupdate>", | 774 "<updatecheck status=\"noupdate\"/></app></gupdate>", |
| 775 -1, |
741 kActionCodeSuccess, | 776 kActionCodeSuccess, |
742 NULL, | 777 NULL, |
743 &post_data)); | 778 &post_data)); |
744 string post_str(&post_data[0], post_data.size()); | 779 string post_str(&post_data[0], post_data.size()); |
745 EXPECT_EQ(post_str.find("o:ping"), string::npos); | 780 EXPECT_EQ(post_str.find("o:ping"), string::npos); |
746 } | 781 } |
747 | 782 |
748 TEST(OmahaRequestActionTest, LastPingDayUpdateTest) { | 783 TEST(OmahaRequestActionTest, LastPingDayUpdateTest) { |
749 // This test checks that the action updates the last ping day to now | 784 // This test checks that the action updates the last ping day to now |
750 // minus 200 seconds with a slack of 5 seconds. Therefore, the test | 785 // minus 200 seconds with a slack of 5 seconds. Therefore, the test |
(...skipping 11 matching lines...) Expand all Loading... |
762 AllOf(Ge(midnight), Le(midnight_slack)))) | 797 AllOf(Ge(midnight), Le(midnight_slack)))) |
763 .WillOnce(Return(true)); | 798 .WillOnce(Return(true)); |
764 ASSERT_TRUE( | 799 ASSERT_TRUE( |
765 TestUpdateCheck(&prefs, | 800 TestUpdateCheck(&prefs, |
766 kDefaultTestParams, | 801 kDefaultTestParams, |
767 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " | 802 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
768 "xmlns=\"http://www.google.com/update2/response\" " | 803 "xmlns=\"http://www.google.com/update2/response\" " |
769 "protocol=\"2.0\"><daystart elapsed_seconds=\"200\"/>" | 804 "protocol=\"2.0\"><daystart elapsed_seconds=\"200\"/>" |
770 "<app appid=\"foo\" status=\"ok\"><ping status=\"ok\"/>" | 805 "<app appid=\"foo\" status=\"ok\"><ping status=\"ok\"/>" |
771 "<updatecheck status=\"noupdate\"/></app></gupdate>", | 806 "<updatecheck status=\"noupdate\"/></app></gupdate>", |
| 807 -1, |
772 kActionCodeSuccess, | 808 kActionCodeSuccess, |
773 NULL, | 809 NULL, |
774 NULL)); | 810 NULL)); |
775 } | 811 } |
776 | 812 |
777 TEST(OmahaRequestActionTest, NoElapsedSecondsTest) { | 813 TEST(OmahaRequestActionTest, NoElapsedSecondsTest) { |
778 PrefsMock prefs; | 814 PrefsMock prefs; |
779 EXPECT_CALL(prefs, SetInt64(kPrefsLastActivePingDay, _)).Times(0); | 815 EXPECT_CALL(prefs, SetInt64(kPrefsLastActivePingDay, _)).Times(0); |
780 EXPECT_CALL(prefs, SetInt64(kPrefsLastRollCallPingDay, _)).Times(0); | 816 EXPECT_CALL(prefs, SetInt64(kPrefsLastRollCallPingDay, _)).Times(0); |
781 ASSERT_TRUE( | 817 ASSERT_TRUE( |
782 TestUpdateCheck(&prefs, | 818 TestUpdateCheck(&prefs, |
783 kDefaultTestParams, | 819 kDefaultTestParams, |
784 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " | 820 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
785 "xmlns=\"http://www.google.com/update2/response\" " | 821 "xmlns=\"http://www.google.com/update2/response\" " |
786 "protocol=\"2.0\"><daystart blah=\"200\"/>" | 822 "protocol=\"2.0\"><daystart blah=\"200\"/>" |
787 "<app appid=\"foo\" status=\"ok\"><ping status=\"ok\"/>" | 823 "<app appid=\"foo\" status=\"ok\"><ping status=\"ok\"/>" |
788 "<updatecheck status=\"noupdate\"/></app></gupdate>", | 824 "<updatecheck status=\"noupdate\"/></app></gupdate>", |
| 825 -1, |
789 kActionCodeSuccess, | 826 kActionCodeSuccess, |
790 NULL, | 827 NULL, |
791 NULL)); | 828 NULL)); |
792 } | 829 } |
793 | 830 |
794 TEST(OmahaRequestActionTest, BadElapsedSecondsTest) { | 831 TEST(OmahaRequestActionTest, BadElapsedSecondsTest) { |
795 PrefsMock prefs; | 832 PrefsMock prefs; |
796 EXPECT_CALL(prefs, SetInt64(kPrefsLastActivePingDay, _)).Times(0); | 833 EXPECT_CALL(prefs, SetInt64(kPrefsLastActivePingDay, _)).Times(0); |
797 EXPECT_CALL(prefs, SetInt64(kPrefsLastRollCallPingDay, _)).Times(0); | 834 EXPECT_CALL(prefs, SetInt64(kPrefsLastRollCallPingDay, _)).Times(0); |
798 ASSERT_TRUE( | 835 ASSERT_TRUE( |
799 TestUpdateCheck(&prefs, | 836 TestUpdateCheck(&prefs, |
800 kDefaultTestParams, | 837 kDefaultTestParams, |
801 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " | 838 "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gupdate " |
802 "xmlns=\"http://www.google.com/update2/response\" " | 839 "xmlns=\"http://www.google.com/update2/response\" " |
803 "protocol=\"2.0\"><daystart elapsed_seconds=\"x\"/>" | 840 "protocol=\"2.0\"><daystart elapsed_seconds=\"x\"/>" |
804 "<app appid=\"foo\" status=\"ok\"><ping status=\"ok\"/>" | 841 "<app appid=\"foo\" status=\"ok\"><ping status=\"ok\"/>" |
805 "<updatecheck status=\"noupdate\"/></app></gupdate>", | 842 "<updatecheck status=\"noupdate\"/></app></gupdate>", |
| 843 -1, |
806 kActionCodeSuccess, | 844 kActionCodeSuccess, |
807 NULL, | 845 NULL, |
808 NULL)); | 846 NULL)); |
809 } | 847 } |
810 | 848 |
811 TEST(OmahaRequestActionTest, NoUniqueIDTest) { | 849 TEST(OmahaRequestActionTest, NoUniqueIDTest) { |
812 vector<char> post_data; | 850 vector<char> post_data; |
813 ASSERT_FALSE(TestUpdateCheck(NULL, // prefs | 851 ASSERT_FALSE(TestUpdateCheck(NULL, // prefs |
814 kDefaultTestParams, | 852 kDefaultTestParams, |
815 "invalid xml>", | 853 "invalid xml>", |
816 kActionCodeError, | 854 -1, |
| 855 kActionCodeOmahaRequestXMLParseError, |
817 NULL, // response | 856 NULL, // response |
818 &post_data)); | 857 &post_data)); |
819 // convert post_data to string | 858 // convert post_data to string |
820 string post_str(&post_data[0], post_data.size()); | 859 string post_str(&post_data[0], post_data.size()); |
821 EXPECT_EQ(post_str.find("machineid="), string::npos); | 860 EXPECT_EQ(post_str.find("machineid="), string::npos); |
822 EXPECT_EQ(post_str.find("userid="), string::npos); | 861 EXPECT_EQ(post_str.find("userid="), string::npos); |
823 } | 862 } |
824 | 863 |
| 864 TEST(OmahaRequestActionTest, NetworkFailureTest) { |
| 865 OmahaResponse response; |
| 866 ASSERT_FALSE( |
| 867 TestUpdateCheck(NULL, // prefs |
| 868 kDefaultTestParams, |
| 869 "", |
| 870 501, |
| 871 static_cast<ActionExitCode>( |
| 872 kActionCodeOmahaRequestHTTPResponseBase + 501), |
| 873 &response, |
| 874 NULL)); |
| 875 EXPECT_FALSE(response.update_exists); |
| 876 } |
| 877 |
| 878 TEST(OmahaRequestActionTest, NetworkFailureBadHTTPCodeTest) { |
| 879 OmahaResponse response; |
| 880 ASSERT_FALSE( |
| 881 TestUpdateCheck(NULL, // prefs |
| 882 kDefaultTestParams, |
| 883 "", |
| 884 1500, |
| 885 static_cast<ActionExitCode>( |
| 886 kActionCodeOmahaRequestHTTPResponseBase + 999), |
| 887 &response, |
| 888 NULL)); |
| 889 EXPECT_FALSE(response.update_exists); |
| 890 } |
| 891 |
825 } // namespace chromeos_update_engine | 892 } // namespace chromeos_update_engine |
OLD | NEW |