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

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/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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc ('k') | chrome/browser/ui/autofill/autofill_dialog_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698