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

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 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698