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/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/guid.h" | 8 #include "base/guid.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 | 452 |
453 DetailOutputMap outputs; | 453 DetailOutputMap outputs; |
454 const DetailInputs& inputs = | 454 const DetailInputs& inputs = |
455 controller()->RequestedFieldsForSection(SECTION_SHIPPING); | 455 controller()->RequestedFieldsForSection(SECTION_SHIPPING); |
456 | 456 |
457 // Make sure country is United States. | 457 // Make sure country is United States. |
458 SetOutputValue(inputs, &outputs, ADDRESS_HOME_COUNTRY, "United States"); | 458 SetOutputValue(inputs, &outputs, ADDRESS_HOME_COUNTRY, "United States"); |
459 | 459 |
460 // Existing data should have no errors. | 460 // Existing data should have no errors. |
461 ValidityData validity_data = | 461 ValidityData validity_data = |
462 controller()->InputsAreValid(outputs, | 462 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
463 AutofillDialogController::VALIDATE_FINAL); | |
464 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 463 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
465 | 464 |
466 // Input an empty phone number with VALIDATE_FINAL. | 465 // Input an empty phone number with VALIDATE_FINAL. |
467 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, ""); | 466 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, ""); |
468 validity_data = | 467 validity_data = |
469 controller()->InputsAreValid(outputs, | 468 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
470 AutofillDialogController::VALIDATE_FINAL); | |
471 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 469 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
472 | 470 |
473 // Input an empty phone number with VALIDATE_EDIT. | 471 // Input an empty phone number with VALIDATE_EDIT. |
474 validity_data = | 472 validity_data = |
475 controller()->InputsAreValid(outputs, | 473 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
476 AutofillDialogController::VALIDATE_EDIT); | |
477 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 474 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
478 | 475 |
479 // Input an invalid phone number. | 476 // Input an invalid phone number. |
480 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "ABC"); | 477 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "ABC"); |
481 validity_data = | 478 validity_data = |
482 controller()->InputsAreValid(outputs, | 479 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
483 AutofillDialogController::VALIDATE_EDIT); | |
484 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 480 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
485 | 481 |
486 // Input a local phone number. | 482 // Input a local phone number. |
487 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "2155546699"); | 483 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "2155546699"); |
488 validity_data = | 484 validity_data = |
489 controller()->InputsAreValid(outputs, | 485 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
490 AutofillDialogController::VALIDATE_EDIT); | |
491 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 486 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
492 | 487 |
493 // Input an invalid local phone number. | 488 // Input an invalid local phone number. |
494 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "215554669"); | 489 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "215554669"); |
495 validity_data = | 490 validity_data = |
496 controller()->InputsAreValid(outputs, | 491 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
497 AutofillDialogController::VALIDATE_EDIT); | |
498 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 492 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
499 | 493 |
500 // Input an international phone number. | 494 // Input an international phone number. |
501 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "+33 892 70 12 39"); | 495 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, "+33 892 70 12 39"); |
502 validity_data = | 496 validity_data = |
503 controller()->InputsAreValid(outputs, | 497 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
504 AutofillDialogController::VALIDATE_EDIT); | |
505 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 498 EXPECT_EQ(0U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
506 | 499 |
507 // Input an invalid international phone number. | 500 // Input an invalid international phone number. |
508 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, | 501 SetOutputValue(inputs, &outputs, PHONE_HOME_WHOLE_NUMBER, |
509 "+112333 892 70 12 39"); | 502 "+112333 892 70 12 39"); |
510 validity_data = | 503 validity_data = |
511 controller()->InputsAreValid(outputs, | 504 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
512 AutofillDialogController::VALIDATE_EDIT); | |
513 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); | 505 EXPECT_EQ(1U, validity_data.count(PHONE_HOME_WHOLE_NUMBER)); |
514 } | 506 } |
515 | 507 |
516 TEST_F(AutofillDialogControllerTest, CardHolderNameValidation) { | 508 TEST_F(AutofillDialogControllerTest, CardHolderNameValidation) { |
517 // Construct DetailOutputMap from AutofillProfile data. | 509 // Construct DetailOutputMap from AutofillProfile data. |
518 SwitchToAutofill(); | 510 SwitchToAutofill(); |
519 | 511 |
520 AutofillProfile full_profile(test::GetVerifiedProfile()); | 512 AutofillProfile full_profile(test::GetVerifiedProfile()); |
521 controller()->GetTestingManager()->AddTestingProfile(&full_profile); | 513 controller()->GetTestingManager()->AddTestingProfile(&full_profile); |
522 controller()->EditClickedForSection(SECTION_SHIPPING); | 514 controller()->EditClickedForSection(SECTION_SHIPPING); |
523 | 515 |
524 DetailOutputMap outputs; | 516 DetailOutputMap outputs; |
525 const DetailInputs& inputs = | 517 const DetailInputs& inputs = |
526 controller()->RequestedFieldsForSection(SECTION_CC); | 518 controller()->RequestedFieldsForSection(SECTION_CC); |
527 | 519 |
528 // Input an empty card holder name with VALIDATE_FINAL. | 520 // Input an empty card holder name with VALIDATE_FINAL. |
529 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, ""); | 521 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, ""); |
530 ValidityData validity_data = | 522 ValidityData validity_data = |
531 controller()->InputsAreValid(outputs, | 523 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
532 AutofillDialogController::VALIDATE_FINAL); | |
533 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 524 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
534 | 525 |
535 // Input an empty card holder name with VALIDATE_EDIT. | 526 // Input an empty card holder name with VALIDATE_EDIT. |
536 validity_data = | 527 validity_data = |
537 controller()->InputsAreValid(outputs, | 528 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
538 AutofillDialogController::VALIDATE_EDIT); | |
539 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 529 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
540 | 530 |
541 // Input a non-empty card holder name. | 531 // Input a non-empty card holder name. |
542 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, "Bob"); | 532 SetOutputValue(inputs, &outputs, CREDIT_CARD_NAME, "Bob"); |
543 validity_data = | 533 validity_data = |
544 controller()->InputsAreValid(outputs, | 534 controller()->InputsAreValid(outputs, VALIDATE_FINAL); |
545 AutofillDialogController::VALIDATE_FINAL); | |
546 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 535 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
547 | 536 |
548 // Switch to Wallet which only considers names with with at least two names to | 537 // Switch to Wallet which only considers names with with at least two names to |
549 // be valid. | 538 // be valid. |
550 SwitchToWallet(); | 539 SwitchToWallet(); |
551 | 540 |
552 // Setup some wallet state. | 541 // Setup some wallet state. |
553 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); | 542 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
554 wallet_items->AddAddress(wallet::GetTestShippingAddress()); | 543 wallet_items->AddAddress(wallet::GetTestShippingAddress()); |
555 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument()); | 544 wallet_items->AddInstrument(wallet::GetTestMaskedInstrument()); |
556 controller()->OnDidGetWalletItems(wallet_items.Pass()); | 545 controller()->OnDidGetWalletItems(wallet_items.Pass()); |
557 | 546 |
558 controller()->EditClickedForSection(SECTION_CC_BILLING); | 547 controller()->EditClickedForSection(SECTION_CC_BILLING); |
559 | 548 |
560 DetailOutputMap wallet_outputs; | 549 DetailOutputMap wallet_outputs; |
561 const DetailInputs& wallet_inputs = | 550 const DetailInputs& wallet_inputs = |
562 controller()->RequestedFieldsForSection(SECTION_CC_BILLING); | 551 controller()->RequestedFieldsForSection(SECTION_CC_BILLING); |
563 | 552 |
564 // Input an empty card holder name with VALIDATE_FINAL. Data source should not | 553 // Input an empty card holder name with VALIDATE_FINAL. Data source should not |
565 // change this behavior. | 554 // change this behavior. |
566 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, ""); | 555 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, ""); |
567 validity_data = | 556 validity_data = |
568 controller()->InputsAreValid(wallet_outputs, | 557 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
569 AutofillDialogController::VALIDATE_FINAL); | |
570 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 558 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
571 | 559 |
572 // Input an empty card holder name with VALIDATE_EDIT. Data source should not | 560 // Input an empty card holder name with VALIDATE_EDIT. Data source should not |
573 // change this behavior. | 561 // change this behavior. |
574 validity_data = | 562 validity_data = |
575 controller()->InputsAreValid(wallet_outputs, | 563 controller()->InputsAreValid(wallet_outputs, VALIDATE_EDIT); |
576 AutofillDialogController::VALIDATE_EDIT); | |
577 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 564 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
578 | 565 |
579 // Input a one name card holder name. Wallet does not currently support this. | 566 // Input a one name card holder name. Wallet does not currently support this. |
580 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, "Bob"); | 567 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, "Bob"); |
581 validity_data = | 568 validity_data = |
582 controller()->InputsAreValid(wallet_outputs, | 569 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
583 AutofillDialogController::VALIDATE_FINAL); | |
584 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); | 570 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_NAME)); |
585 | 571 |
586 // Input a two name card holder name. | 572 // Input a two name card holder name. |
587 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 573 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
588 "Bob Barker"); | 574 "Bob Barker"); |
589 validity_data = | 575 validity_data = |
590 controller()->InputsAreValid(wallet_outputs, | 576 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
591 AutofillDialogController::VALIDATE_FINAL); | |
592 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 577 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
593 | 578 |
594 // Input a more than two name card holder name. | 579 // Input a more than two name card holder name. |
595 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 580 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
596 "John Jacob Jingleheimer Schmidt"); | 581 "John Jacob Jingleheimer Schmidt"); |
597 validity_data = | 582 validity_data = |
598 controller()->InputsAreValid(wallet_outputs, | 583 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
599 AutofillDialogController::VALIDATE_FINAL); | |
600 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 584 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
601 | 585 |
602 // Input a card holder name with lots of crazy whitespace. | 586 // Input a card holder name with lots of crazy whitespace. |
603 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, | 587 SetOutputValue(wallet_inputs, &wallet_outputs, CREDIT_CARD_NAME, |
604 " \\n\\r John \\n Jacob Jingleheimer \\t Schmidt "); | 588 " \\n\\r John \\n Jacob Jingleheimer \\t Schmidt "); |
605 validity_data = | 589 validity_data = |
606 controller()->InputsAreValid(wallet_outputs, | 590 controller()->InputsAreValid(wallet_outputs, VALIDATE_FINAL); |
607 AutofillDialogController::VALIDATE_FINAL); | |
608 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); | 591 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_NAME)); |
609 } | 592 } |
610 | 593 |
611 TEST_F(AutofillDialogControllerTest, AutofillProfiles) { | 594 TEST_F(AutofillDialogControllerTest, AutofillProfiles) { |
612 ui::MenuModel* shipping_model = | 595 ui::MenuModel* shipping_model = |
613 controller()->MenuModelForSection(SECTION_SHIPPING); | 596 controller()->MenuModelForSection(SECTION_SHIPPING); |
614 // Since the PersonalDataManager is empty, this should only have the | 597 // Since the PersonalDataManager is empty, this should only have the |
615 // "use billing", "add new" and "manage" menu items. | 598 // "use billing", "add new" and "manage" menu items. |
616 ASSERT_TRUE(shipping_model); | 599 ASSERT_TRUE(shipping_model); |
617 EXPECT_EQ(3, shipping_model->GetItemCount()); | 600 EXPECT_EQ(3, shipping_model->GetItemCount()); |
(...skipping 1282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1900 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 1883 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
1901 ASSERT_FALSE(command_line->HasSwitch(switches::kWalletServiceUseProd)); | 1884 ASSERT_FALSE(command_line->HasSwitch(switches::kWalletServiceUseProd)); |
1902 EXPECT_FALSE( | 1885 EXPECT_FALSE( |
1903 NotificationsOfType(DialogNotification::DEVELOPER_WARNING).empty()); | 1886 NotificationsOfType(DialogNotification::DEVELOPER_WARNING).empty()); |
1904 | 1887 |
1905 command_line->AppendSwitch(switches::kWalletServiceUseProd); | 1888 command_line->AppendSwitch(switches::kWalletServiceUseProd); |
1906 EXPECT_TRUE( | 1889 EXPECT_TRUE( |
1907 NotificationsOfType(DialogNotification::DEVELOPER_WARNING).empty()); | 1890 NotificationsOfType(DialogNotification::DEVELOPER_WARNING).empty()); |
1908 } | 1891 } |
1909 | 1892 |
| 1893 // Ensure Wallet instruments marked expired by the server are shown as invalid. |
| 1894 TEST_F(AutofillDialogControllerTest, WalletExpiredCard) { |
| 1895 scoped_ptr<wallet::WalletItems> wallet_items = wallet::GetTestWalletItems(); |
| 1896 wallet_items->AddInstrument(wallet::GetTestMaskedInstrumentExpired()); |
| 1897 controller()->OnDidGetWalletItems(wallet_items.Pass()); |
| 1898 |
| 1899 EXPECT_TRUE(controller()->IsEditingExistingData(SECTION_CC_BILLING)); |
| 1900 |
| 1901 // Use |SetOutputValue()| to put the right AutofillFieldTypes into the map. |
| 1902 const DetailInputs& inputs = |
| 1903 controller()->RequestedFieldsForSection(SECTION_CC_BILLING); |
| 1904 DetailOutputMap outputs; |
| 1905 SetOutputValue(inputs, &outputs, COMPANY_NAME, "Bluth Company"); |
| 1906 |
| 1907 ValidityData validity_data = |
| 1908 controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
| 1909 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_EXP_MONTH)); |
| 1910 EXPECT_EQ(1U, validity_data.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1911 |
| 1912 // Make the local input year differ from the instrument. |
| 1913 SetOutputValue(inputs, &outputs, CREDIT_CARD_EXP_4_DIGIT_YEAR, "3002"); |
| 1914 |
| 1915 validity_data = controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
| 1916 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_MONTH)); |
| 1917 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1918 |
| 1919 // Make the local input month differ from the instrument. |
| 1920 SetOutputValue(inputs, &outputs, CREDIT_CARD_EXP_MONTH, "06"); |
| 1921 |
| 1922 validity_data = controller()->InputsAreValid(outputs, VALIDATE_EDIT); |
| 1923 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_MONTH)); |
| 1924 EXPECT_EQ(0U, validity_data.count(CREDIT_CARD_EXP_4_DIGIT_YEAR)); |
| 1925 } |
| 1926 |
1910 } // namespace autofill | 1927 } // namespace autofill |
OLD | NEW |