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 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 | 439 |
440 DetailOutputMap outputs; | 440 DetailOutputMap outputs; |
441 const DetailInputs& inputs = | 441 const DetailInputs& inputs = |
442 controller()->RequestedFieldsForSection(SECTION_SHIPPING); | 442 controller()->RequestedFieldsForSection(SECTION_SHIPPING); |
443 | 443 |
444 // Make sure country is United States. | 444 // Make sure country is United States. |
445 SetOutputValue(inputs, &outputs, ADDRESS_HOME_COUNTRY, "United States"); | 445 SetOutputValue(inputs, &outputs, ADDRESS_HOME_COUNTRY, "United States"); |
446 | 446 |
447 // Existing data should have no errors. | 447 // Existing data should have no errors. |
448 ValidityData validity_data = | 448 ValidityData validity_data = |
449 controller()->InputsAreValid(outputs, | 449 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
450 AutofillDialogController::VALIDATE_FINAL); | |
451 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 450 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
452 | 451 |
453 // Input an empty phone number with VALIDATE_FINAL. | 452 // Input an empty phone number with VALIDATE_FINAL. |
454 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, ""); | 453 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, ""); |
455 validity_data = | 454 validity_data = |
456 controller()->InputsAreValid(outputs, | 455 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
457 AutofillDialogController::VALIDATE_FINAL); | |
458 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 456 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
459 | 457 |
460 // Input an empty phone number with VALIDATE_EDIT. | 458 // Input an empty phone number with VALIDATE_EDIT. |
461 validity_data = | 459 validity_data = |
462 controller()->InputsAreValid(outputs, | 460 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
463 AutofillDialogController::VALIDATE_EDIT); | |
464 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 461 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
465 | 462 |
466 // Input an invalid phone number. | 463 // Input an invalid phone number. |
467 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "ABC"); | 464 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "ABC"); |
468 validity_data = | 465 validity_data = |
469 controller()->InputsAreValid(outputs, | 466 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
470 AutofillDialogController::VALIDATE_EDIT); | |
471 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 467 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
472 | 468 |
473 // Input a local phone number. | 469 // Input a local phone number. |
474 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "2155546699"); | 470 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "2155546699"); |
475 validity_data = | 471 validity_data = |
476 controller()->InputsAreValid(outputs, | 472 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
477 AutofillDialogController::VALIDATE_EDIT); | |
478 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 473 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
479 | 474 |
480 // Input an invalid local phone number. | 475 // Input an invalid local phone number. |
481 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "215554669"); | 476 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "215554669"); |
482 validity_data = | 477 validity_data = |
483 controller()->InputsAreValid(outputs, | 478 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
484 AutofillDialogController::VALIDATE_EDIT); | |
485 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 479 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
486 | 480 |
487 // Input an international phone number. | 481 // Input an international phone number. |
488 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "+33 892 70 12 39"); | 482 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "+33 892 70 12 39"); |
489 validity_data = | 483 validity_data = |
490 controller()->InputsAreValid(outputs, | 484 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
491 AutofillDialogController::VALIDATE_EDIT); | |
492 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 485 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
493 | 486 |
494 // Input an invalid international phone number. | 487 // Input an invalid international phone number. |
495 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, | 488 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, |
496 "+112333 892 70 12 39"); | 489 "+112333 892 70 12 39"); |
497 validity_data = | 490 validity_data = |
498 controller()->InputsAreValid(outputs, | 491 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
499 AutofillDialogController::VALIDATE_EDIT); | |
500 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 492 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
501 } | 493 } |
502 | 494 |
503 TEST_F(AutofillDialogControllerTest, CardHolderNameValidation) { | 495 TEST_F(AutofillDialogControllerTest, CardHolderNameValidation) { |
504 // Construct DetailOutputMap from AutofillProfile data. | 496 // Construct DetailOutputMap from AutofillProfile data. |
505 SwitchToAutofill(); | 497 SwitchToAutofill(); |
506 | 498 |
507 AutofillProfile full_profile(test::GetVerifiedProfile()); | 499 AutofillProfile full_profile(test::GetVerifiedProfile()); |
508 controller()->GetTestingManager()->AddTestingProfile(&full_profile); | 500 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
509 controller()->EditClickedForSection(SECTION_SHIPPING); | 501 controller()->EditClickedForSection(SECTION_SHIPPING); |
510 | 502 |
511 DetailOutputMap outputs; | 503 DetailOutputMap outputs; |
512 const DetailInputs& inputs = | 504 const DetailInputs& inputs = |
513 controller()->RequestedFieldsForSection(SECTION_CC); | 505 controller()->RequestedFieldsForSection(SECTION_CC); |
514 | 506 |
515 // Input an empty card holder name with VALIDATE_FINAL. | 507 // Input an empty card holder name with VALIDATE_FINAL. |
516 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, ""); | 508 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, ""); |
517 ValidityData validity_data = | 509 ValidityData validity_data = |
518 controller()->InputsAreValid(outputs, | 510 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
519 AutofillDialogController::VALIDATE_FINAL); | |
520 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 511 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
521 | 512 |
522 // Input an empty card holder name with VALIDATE_EDIT. | 513 // Input an empty card holder name with VALIDATE_EDIT. |
523 validity_data = | 514 validity_data = |
524 controller()->InputsAreValid(outputs, | 515 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
525 AutofillDialogController::VALIDATE_EDIT); | |
526 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 516 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
527 | 517 |
528 // Input a non-empty card holder name. | 518 // Input a non-empty card holder name. |
529 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, "Bob"); | 519 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, "Bob"); |
530 validity_data = | 520 validity_data = |
531 controller()->InputsAreValid(outputs, | 521 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
532 AutofillDialogController::VALIDATE_FINAL); | |
533 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 522 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
534 | 523 |
535 // Switch to Wallet which only considers names with with at least two names to | 524 // Switch to Wallet which only considers names with with at least two names to |
536 // be valid. | 525 // be valid. |
537 SwitchToWallet(); | 526 SwitchToWallet(); |
538 | 527 |
539 // Setup some wallet state. | 528 // Setup some wallet state. |
540 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); | 529 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
541 wallet_items->AddAddress(wallet::GetTestShippingAddress()); | 530 wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
542 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument()); | 531 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument()); |
543 controller()->OnDidGetWalletItems(wallet_items.Pass()); | 532 controller()->OnDidGetWalletItems(wallet_items.Pass()); |
544 | 533 |
545 controller()->EditClickedForSection(SECTION_CC_BILLING); | 534 controller()->EditClickedForSection(SECTION_CC_BILLING); |
546 | 535 |
547 DetailOutputMap wallet_outputs; | 536 DetailOutputMap wallet_outputs; |
548 const DetailInputs& wallet_inputs = | 537 const DetailInputs& wallet_inputs = |
549 controller()->RequestedFieldsForSection(SECTION_CC_BILLING); | 538 controller()->RequestedFieldsForSection(SECTION_CC_BILLING); |
550 | 539 |
551 // Input an empty card holder name with VALIDATE_FINAL. Data source should not | 540 // Input an empty card holder name with VALIDATE_FINAL. Data source should not |
552 // change this behavior. | 541 // change this behavior. |
553 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, ""); | 542 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, ""); |
554 validity_data = | 543 validity_data = |
555 controller()->InputsAreValid(wallet_outputs, | 544 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
556 AutofillDialogController::VALIDATE_FINAL); | |
557 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 545 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
558 | 546 |
559 // Input an empty card holder name with VALIDATE_EDIT. Data source should not | 547 // Input an empty card holder name with VALIDATE_EDIT. Data source should not |
560 // change this behavior. | 548 // change this behavior. |
561 validity_data = | 549 validity_data = |
562 controller()->InputsAreValid(wallet_outputs, | 550 controller()->InputsAreValid(wallet_outputs, VALIDATE_EDIT); |
563 AutofillDialogController::VALIDATE_EDIT); | |
564 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 551 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
565 | 552 |
566 // Input a one name card holder name. Wallet does not currently support this. | 553 // Input a one name card holder name. Wallet does not currently support this. |
567 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, "Bob"); | 554 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, "Bob"); |
568 validity_data = | 555 validity_data = |
569 controller()->InputsAreValid(wallet_outputs, | 556 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
570 AutofillDialogController::VALIDATE_FINAL); | |
571 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 557 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
572 | 558 |
573 // Input a two name card holder name. | 559 // Input a two name card holder name. |
574 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 560 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
575 "Bob Barker"); | 561 "Bob Barker"); |
576 validity_data = | 562 validity_data = |
577 controller()->InputsAreValid(wallet_outputs, | 563 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
578 AutofillDialogController::VALIDATE_FINAL); | |
579 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 564 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
580 | 565 |
581 // Input a more than two name card holder name. | 566 // Input a more than two name card holder name. |
582 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 567 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
583 "John Jacob Jingleheimer Schmidt"); | 568 "John Jacob Jingleheimer Schmidt"); |
584 validity_data = | 569 validity_data = |
585 controller()->InputsAreValid(wallet_outputs, | 570 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
586 AutofillDialogController::VALIDATE_FINAL); | |
587 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 571 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
588 | 572 |
589 // Input a card holder name with lots of crazy whitespace. | 573 // Input a card holder name with lots of crazy whitespace. |
590 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 574 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
591 " \\n\\r John \\n Jacob Jingleheimer \\t Schmidt "); | 575 " \\n\\r John \\n Jacob Jingleheimer \\t Schmidt "); |
592 validity_data = | 576 validity_data = |
593 controller()->InputsAreValid(wallet_outputs, | 577 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
594 AutofillDialogController::VALIDATE_FINAL); | |
595 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 578 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
596 } | 579 } |
597 | 580 |
598 TEST_F(AutofillDialogControllerTest, AutofillProfiles) { | 581 TEST_F(AutofillDialogControllerTest, AutofillProfiles) { |
599 ui::MenuModel* shipping_model = | 582 ui::MenuModel* shipping_model = |
600 controller()->MenuModelForSection(SECTION_SHIPPING); | 583 controller()->MenuModelForSection(SECTION_SHIPPING); |
601 // Since the PersonalDataManager is empty, this should only have the | 584 // Since the PersonalDataManager is empty, this should only have the |
602 // "use billing", "add new" and "manage" menu items. | 585 // "use billing", "add new" and "manage" menu items. |
603 ASSERT_TRUE(shipping_model); | 586 ASSERT_TRUE(shipping_model); |
604 EXPECT_EQ(3, shipping_model->GetItemCount()); | 587 EXPECT_EQ(3, shipping_model->GetItemCount()); |
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1832 AutofillProfile full_profile(test::GetVerifiedProfile()); | 1815 AutofillProfile full_profile(test::GetVerifiedProfile()); |
1833 controller()->GetTestingManager()->AddTestingProfile(&full_profile); | 1816 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
1834 SetUpControllerWithFormData(form_data); | 1817 SetUpControllerWithFormData(form_data); |
1835 EXPECT_FALSE(controller()->SectionIsActive(SECTION_SHIPPING)); | 1818 EXPECT_FALSE(controller()->SectionIsActive(SECTION_SHIPPING)); |
1836 | 1819 |
1837 FillCreditCardInputs(); | 1820 FillCreditCardInputs(); |
1838 controller()->OnAccept(); | 1821 controller()->OnAccept(); |
1839 EXPECT_TRUE(form_structure()); | 1822 EXPECT_TRUE(form_structure()); |
1840 } | 1823 } |
1841 | 1824 |
| 1825 // Ensure Wallet instruments marked expired by the server are shown as invalid. |
| 1826 TEST_F(AutofillDialogControllerTest, WalletExpiredCard) { |
| 1827 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
| 1828 wallet_items->AddInstrument(wallet::GetTestMaskedInstrumentExpired()); |
| 1829 controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| 1830 |
| 1831 EXPECT_TRUE(controller()->IsEditingExistingData(SECTION_CC_BILLING)); |
| 1832 |
| 1833 // Use |SetOutputValue()| to put the right AutofillFieldTypes into the map. |
| 1834 const DetailInputs& inputs = |
| 1835 controller()->RequestedFieldsForSection(SECTION_CC_BILLING); |
| 1836 DetailOutputMap outputs; |
| 1837 SetOutputValue(inputs, &outputs, COMPANY_NAME, "Bluth Company"); |
| 1838 |
| 1839 ValidityData validity_data = |
| 1840 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
| 1841 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_EXP_MONTH)); |
| 1842 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1843 |
| 1844 // Make the local input year differ from the instrument. |
| 1845 SetOutputValue(inputs, &outputs, CREDIT_CARD_EXP_4_DIGIT_YEAR, "3002"); |
| 1846 |
| 1847 validity_data = controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
| 1848 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_MONTH)); |
| 1849 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1850 |
| 1851 // Make the local input month differ from the instrument. |
| 1852 SetOutputValue(inputs, &outputs, CREDIT_CARD_EXP_MONTH, "06"); |
| 1853 |
| 1854 validity_data = controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
| 1855 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_MONTH)); |
| 1856 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1857 } |
| 1858 |
1842 } // namespace autofill | 1859 } // namespace autofill |
OLD | NEW |