Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(135)

Side by Side Diff: chrome/browser/ui/autofill/autofill_dialog_controller_unittest.cc

Issue 15961007: Highlight fields we know to be invalid but have no way of locally checking. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698