OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium 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 <map> | 5 #include <map> |
6 | 6 |
7 #include "base/guid.h" | 7 #include "base/guid.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
446 | 446 |
447 DetailOutputMap outputs; | 447 DetailOutputMap outputs; |
448 const DetailInputs& inputs = | 448 const DetailInputs& inputs = |
449 controller()->RequestedFieldsForSection(SECTION_SHIPPING); | 449 controller()->RequestedFieldsForSection(SECTION_SHIPPING); |
450 | 450 |
451 // Make sure country is United States. | 451 // Make sure country is United States. |
452 SetOutputValue(inputs, &outputs, ADDRESS_HOME_COUNTRY, "United States"); | 452 SetOutputValue(inputs, &outputs, ADDRESS_HOME_COUNTRY, "United States"); |
453 | 453 |
454 // Existing data should have no errors. | 454 // Existing data should have no errors. |
455 ValidityData validity_data = | 455 ValidityData validity_data = |
456 controller()->InputsAreValid(outputs, | 456 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
457 AutofillDialogController::VALIDATE_FINAL); | |
458 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 457 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
459 | 458 |
460 // Input an empty phone number with VALIDATE_FINAL. | 459 // Input an empty phone number with VALIDATE_FINAL. |
461 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, ""); | 460 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, ""); |
462 validity_data = | 461 validity_data = |
463 controller()->InputsAreValid(outputs, | 462 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
464 AutofillDialogController::VALIDATE_FINAL); | |
465 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 463 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
466 | 464 |
467 // Input an empty phone number with VALIDATE_EDIT. | 465 // Input an empty phone number with VALIDATE_EDIT. |
468 validity_data = | 466 validity_data = |
469 controller()->InputsAreValid(outputs, | 467 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
470 AutofillDialogController::VALIDATE_EDIT); | |
471 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 468 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
472 | 469 |
473 // Input an invalid phone number. | 470 // Input an invalid phone number. |
474 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "ABC"); | 471 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "ABC"); |
475 validity_data = | 472 validity_data = |
476 controller()->InputsAreValid(outputs, | 473 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
477 AutofillDialogController::VALIDATE_EDIT); | |
478 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 474 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
479 | 475 |
480 // Input a local phone number. | 476 // Input a local phone number. |
481 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "2155546699"); | 477 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "2155546699"); |
482 validity_data = | 478 validity_data = |
483 controller()->InputsAreValid(outputs, | 479 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
484 AutofillDialogController::VALIDATE_EDIT); | |
485 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 480 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
486 | 481 |
487 // Input an invalid local phone number. | 482 // Input an invalid local phone number. |
488 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "215554669"); | 483 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "215554669"); |
489 validity_data = | 484 validity_data = |
490 controller()->InputsAreValid(outputs, | 485 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
491 AutofillDialogController::VALIDATE_EDIT); | |
492 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 486 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
493 | 487 |
494 // Input an international phone number. | 488 // Input an international phone number. |
495 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "+33 892 70 12 39"); | 489 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "+33 892 70 12 39"); |
496 validity_data = | 490 validity_data = |
497 controller()->InputsAreValid(outputs, | 491 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
498 AutofillDialogController::VALIDATE_EDIT); | |
499 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 492 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
500 | 493 |
501 // Input an invalid international phone number. | 494 // Input an invalid international phone number. |
502 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, | 495 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, |
503 "+112333 892 70 12 39"); | 496 "+112333 892 70 12 39"); |
504 validity_data = | 497 validity_data = |
505 controller()->InputsAreValid(outputs, | 498 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
506 AutofillDialogController::VALIDATE_EDIT); | |
507 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 499 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
508 } | 500 } |
509 | 501 |
510 TEST_F(AutofillDialogControllerTest, CardHolderNameValidation) { | 502 TEST_F(AutofillDialogControllerTest, CardHolderNameValidation) { |
511 // Construct DetailOutputMap from AutofillProfile data. | 503 // Construct DetailOutputMap from AutofillProfile data. |
512 SwitchToAutofill(); | 504 SwitchToAutofill(); |
513 | 505 |
514 AutofillProfile full_profile(test::GetVerifiedProfile()); | 506 AutofillProfile full_profile(test::GetVerifiedProfile()); |
515 controller()->GetTestingManager()->AddTestingProfile(&full_profile); | 507 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
516 controller()->EditClickedForSection(SECTION_SHIPPING); | 508 controller()->EditClickedForSection(SECTION_SHIPPING); |
517 | 509 |
518 DetailOutputMap outputs; | 510 DetailOutputMap outputs; |
519 const DetailInputs& inputs = | 511 const DetailInputs& inputs = |
520 controller()->RequestedFieldsForSection(SECTION_CC); | 512 controller()->RequestedFieldsForSection(SECTION_CC); |
521 | 513 |
522 // Input an empty card holder name with VALIDATE_FINAL. | 514 // Input an empty card holder name with VALIDATE_FINAL. |
523 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, ""); | 515 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, ""); |
524 ValidityData validity_data = | 516 ValidityData validity_data = |
525 controller()->InputsAreValid(outputs, | 517 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
526 AutofillDialogController::VALIDATE_FINAL); | |
527 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 518 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
528 | 519 |
529 // Input an empty card holder name with VALIDATE_EDIT. | 520 // Input an empty card holder name with VALIDATE_EDIT. |
530 validity_data = | 521 validity_data = |
531 controller()->InputsAreValid(outputs, | 522 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
532 AutofillDialogController::VALIDATE_EDIT); | |
533 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 523 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
534 | 524 |
535 // Input a non-empty card holder name. | 525 // Input a non-empty card holder name. |
536 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, "Bob"); | 526 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, "Bob"); |
537 validity_data = | 527 validity_data = |
538 controller()->InputsAreValid(outputs, | 528 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
539 AutofillDialogController::VALIDATE_FINAL); | |
540 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 529 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
541 | 530 |
542 // Switch to Wallet which only considers names with with at least two names to | 531 // Switch to Wallet which only considers names with with at least two names to |
543 // be valid. | 532 // be valid. |
544 SwitchToWallet(); | 533 SwitchToWallet(); |
545 | 534 |
546 // Setup some wallet state. | 535 // Setup some wallet state. |
547 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); | 536 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
548 wallet_items->AddAddress(wallet::GetTestShippingAddress()); | 537 wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
549 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument()); | 538 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument()); |
550 controller()->OnDidGetWalletItems(wallet_items.Pass()); | 539 controller()->OnDidGetWalletItems(wallet_items.Pass()); |
551 | 540 |
552 controller()->EditClickedForSection(SECTION_CC_BILLING); | 541 controller()->EditClickedForSection(SECTION_CC_BILLING); |
553 | 542 |
554 DetailOutputMap wallet_outputs; | 543 DetailOutputMap wallet_outputs; |
555 const DetailInputs& wallet_inputs = | 544 const DetailInputs& wallet_inputs = |
556 controller()->RequestedFieldsForSection(SECTION_CC_BILLING); | 545 controller()->RequestedFieldsForSection(SECTION_CC_BILLING); |
557 | 546 |
558 // Input an empty card holder name with VALIDATE_FINAL. Data source should not | 547 // Input an empty card holder name with VALIDATE_FINAL. Data source should not |
559 // change this behavior. | 548 // change this behavior. |
560 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, ""); | 549 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, ""); |
561 validity_data = | 550 validity_data = |
562 controller()->InputsAreValid(wallet_outputs, | 551 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
563 AutofillDialogController::VALIDATE_FINAL); | |
564 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 552 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
565 | 553 |
566 // Input an empty card holder name with VALIDATE_EDIT. Data source should not | 554 // Input an empty card holder name with VALIDATE_EDIT. Data source should not |
567 // change this behavior. | 555 // change this behavior. |
568 validity_data = | 556 validity_data = |
569 controller()->InputsAreValid(wallet_outputs, | 557 controller()->InputsAreValid(wallet_outputs, VALIDATE_EDIT); |
570 AutofillDialogController::VALIDATE_EDIT); | |
571 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 558 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
572 | 559 |
573 // Input a one name card holder name. Wallet does not currently support this. | 560 // Input a one name card holder name. Wallet does not currently support this. |
574 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, "Bob"); | 561 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, "Bob"); |
575 validity_data = | 562 validity_data = |
576 controller()->InputsAreValid(wallet_outputs, | 563 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
577 AutofillDialogController::VALIDATE_FINAL); | |
578 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 564 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
579 | 565 |
580 // Input a two name card holder name. | 566 // Input a two name card holder name. |
581 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 567 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
582 "Bob Barker"); | 568 "Bob Barker"); |
583 validity_data = | 569 validity_data = |
584 controller()->InputsAreValid(wallet_outputs, | 570 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
585 AutofillDialogController::VALIDATE_FINAL); | |
586 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 571 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
587 | 572 |
588 // Input a more than two name card holder name. | 573 // Input a more than two name card holder name. |
589 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 574 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
590 "John Jacob Jingleheimer Schmidt"); | 575 "John Jacob Jingleheimer Schmidt"); |
591 validity_data = | 576 validity_data = |
592 controller()->InputsAreValid(wallet_outputs, | 577 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
593 AutofillDialogController::VALIDATE_FINAL); | |
594 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 578 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
595 | 579 |
596 // Input a card holder name with lots of crazy whitespace. | 580 // Input a card holder name with lots of crazy whitespace. |
597 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 581 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
598 " \\n\\r John \\n Jacob Jingleheimer \\t Schmidt "); | 582 " \\n\\r John \\n Jacob Jingleheimer \\t Schmidt "); |
599 validity_data = | 583 validity_data = |
600 controller()->InputsAreValid(wallet_outputs, | 584 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
601 AutofillDialogController::VALIDATE_FINAL); | |
602 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 585 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
603 } | 586 } |
604 | 587 |
605 TEST_F(AutofillDialogControllerTest, AutofillProfiles) { | 588 TEST_F(AutofillDialogControllerTest, AutofillProfiles) { |
606 ui::MenuModel* shipping_model = | 589 ui::MenuModel* shipping_model = |
607 controller()->MenuModelForSection(SECTION_SHIPPING); | 590 controller()->MenuModelForSection(SECTION_SHIPPING); |
608 // Since the PersonalDataManager is empty, this should only have the | 591 // Since the PersonalDataManager is empty, this should only have the |
609 // "use billing", "add new" and "manage" menu items. | 592 // "use billing", "add new" and "manage" menu items. |
610 ASSERT_TRUE(shipping_model); | 593 ASSERT_TRUE(shipping_model); |
611 EXPECT_EQ(3, shipping_model->GetItemCount()); | 594 EXPECT_EQ(3, shipping_model->GetItemCount()); |
(...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1814 dict.Set("required_action", required_actions.release()); | 1797 dict.Set("required_action", required_actions.release()); |
1815 controller()->OnDidGetWalletItems( | 1798 controller()->OnDidGetWalletItems( |
1816 wallet::WalletItems::CreateWalletItems(dict).Pass()); | 1799 wallet::WalletItems::CreateWalletItems(dict).Pass()); |
1817 | 1800 |
1818 EXPECT_FALSE(controller()->MenuModelForSection(SECTION_CC_BILLING)); | 1801 EXPECT_FALSE(controller()->MenuModelForSection(SECTION_CC_BILLING)); |
1819 // "Same as billing" and "Add address...". | 1802 // "Same as billing" and "Add address...". |
1820 EXPECT_EQ( | 1803 EXPECT_EQ( |
1821 2, controller()->MenuModelForSection(SECTION_SHIPPING)->GetItemCount()); | 1804 2, controller()->MenuModelForSection(SECTION_SHIPPING)->GetItemCount()); |
1822 } | 1805 } |
1823 | 1806 |
| 1807 // Ensure Wallet instruments marked expired by the server are shown as invalid. |
| 1808 TEST_F(AutofillDialogControllerTest, WalletExpiredCard) { |
| 1809 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
| 1810 wallet_items->AddInstrument(wallet::GetTestMaskedInstrumentExpired()); |
| 1811 controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| 1812 |
| 1813 EXPECT_TRUE(controller()->IsEditingExistingData(SECTION_CC_BILLING)); |
| 1814 |
| 1815 // Use |SetOutputValue()| to put the right AutofillFieldTypes into the map. |
| 1816 DetailOutputMap outputs; |
| 1817 SetOutputValue(controller()->RequestedFieldsForSection(SECTION_CC_BILLING), |
| 1818 &outputs, COMPANY_NAME, "Bluth Company"); |
| 1819 |
| 1820 ValidityData validity_data = |
| 1821 controller()->InputsAreValid(outputs, VALIDATE_SUGGESTION); |
| 1822 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_EXP_MONTH)); |
| 1823 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1824 |
| 1825 validity_data = controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
| 1826 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_MONTH)); |
| 1827 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1828 } |
| 1829 |
1824 } // namespace autofill | 1830 } // namespace autofill |
OLD | NEW |