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

Unified Diff: components/autofill/core/browser/autofill_manager_unittest.cc

Issue 1396923003: Autofill: Replace "save credit card" infobar with a bubble (Views only). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Replace browser tests with unit tests. Address reviewer comments. Created 5 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: components/autofill/core/browser/autofill_manager_unittest.cc
diff --git a/components/autofill/core/browser/autofill_manager_unittest.cc b/components/autofill/core/browser/autofill_manager_unittest.cc
index 1d9dcfb1cbdeae1e4122753a85cb2ddbf241a8e7..a74b7fe53dce914918b4d20afa3b472fac2c3b83 100644
--- a/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -31,6 +31,7 @@
#include "components/autofill/core/browser/test_autofill_client.h"
#include "components/autofill/core/browser/test_autofill_driver.h"
#include "components/autofill/core/browser/test_autofill_external_delegate.h"
+#include "components/autofill/core/browser/validation.h"
#include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
#include "components/autofill/core/common/autofill_pref_names.h"
#include "components/autofill/core/common/autofill_switches.h"
@@ -149,6 +150,28 @@ class TestPersonalDataManager : public PersonalDataManager {
local_credit_cards_.clear();
}
+ // Create Elvis card with whitespace in the credit card number.
+ void CreateTestCreditCardWithWhitespace() {
+ ClearCreditCards();
+ CreditCard* credit_card = new CreditCard;
+ test::SetCreditCardInfo(credit_card, "Elvis Presley",
+ "4234 5678 9012 3456", // Visa
+ "04", "2012");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000008");
+ local_credit_cards_.push_back(credit_card);
+ }
+
+ // Create Elvis card with separator characters in the credit card number.
+ void CreateTestCreditCardWithSeparators() {
+ ClearCreditCards();
+ CreditCard* credit_card = new CreditCard;
+ test::SetCreditCardInfo(credit_card, "Elvis Presley",
+ "4234-5678-9012-3456", // Visa
+ "04", "2012");
+ credit_card->set_guid("00000000-0000-0000-0000-000000000009");
+ local_credit_cards_.push_back(credit_card);
+ }
+
void CreateTestCreditCardsYearAndMonth(const char* year, const char* month) {
ClearCreditCards();
CreditCard* credit_card = new CreditCard;
@@ -186,7 +209,7 @@ class TestPersonalDataManager : public PersonalDataManager {
void CreateTestCreditCards(ScopedVector<CreditCard>* credit_cards) {
CreditCard* credit_card = new CreditCard;
test::SetCreditCardInfo(credit_card, "Elvis Presley",
- "4234 5678 9012 3456", // Visa
+ "4234567890123456", // Visa
bondd 2015/10/22 17:10:02 Removed spaces because they're tested explicitly e
"04", "2012");
credit_card->set_guid("00000000-0000-0000-0000-000000000004");
credit_cards->push_back(credit_card);
@@ -724,6 +747,7 @@ class AutofillManagerTest : public testing::Test {
// useful for building up more complex test forms.
void CreateTestCreditCardFormData(FormData* form,
bool is_https,
+ bool cc_autocomplete_off,
Evan Stade 2015/10/22 23:02:43 am I missing something? When is this ever true? a
bondd 2015/10/23 03:32:35 It was called via TestSaveCreditCards, but you are
bool use_month_type) {
form->name = ASCIIToUTF16("MyForm");
if (is_https) {
@@ -739,6 +763,8 @@ class AutofillManagerTest : public testing::Test {
test::CreateTestFormField("Name on Card", "nameoncard", "", "text", &field);
form->fields.push_back(field);
test::CreateTestFormField("Card Number", "cardnumber", "", "text", &field);
+ if (cc_autocomplete_off)
+ field.should_autocomplete = false;
form->fields.push_back(field);
if (use_month_type) {
test::CreateTestFormField(
@@ -753,15 +779,15 @@ class AutofillManagerTest : public testing::Test {
}
}
- // Tests if credit card data gets saved
- void TestSaveCreditCards(bool is_https) {
+ // Tests if credit card data gets saved.
+ void TestSaveCreditCards(bool is_https, bool cc_autocomplete_off) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, is_https, false);
+ CreateTestCreditCardFormData(&form, is_https, cc_autocomplete_off, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
- // Edit the data, and submit
+ // Edit the data, and submit.
form.fields[1].value = ASCIIToUTF16("4111111111111111");
form.fields[2].value = ASCIIToUTF16("11");
form.fields[3].value = ASCIIToUTF16("2017");
@@ -775,7 +801,7 @@ class AutofillManagerTest : public testing::Test {
base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
"sync-url", "https://google.com");
- CreateTestCreditCardFormData(form, true, false);
+ CreateTestCreditCardFormData(form, true, false, false);
FormsSeen(std::vector<FormData>(1, *form));
*card = CreditCard(CreditCard::MASKED_SERVER_CARD, "a123");
test::SetCreditCardInfo(card, "John Dillinger", "1881" /* Visa */, "01",
@@ -1082,7 +1108,7 @@ TEST_F(AutofillManagerTest, GetProfileSuggestionsAutofillDisabledByUser) {
TEST_F(AutofillManagerTest, GetCreditCardSuggestionsEmptyValue) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1107,7 +1133,7 @@ TEST_F(AutofillManagerTest, GetCreditCardSuggestionsEmptyValue) {
TEST_F(AutofillManagerTest, GetCreditCardSuggestionsMatchCharacter) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1129,7 +1155,7 @@ TEST_F(AutofillManagerTest, GetCreditCardSuggestionsMatchCharacter) {
TEST_F(AutofillManagerTest, GetCreditCardSuggestionsNonCCNumber) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1162,7 +1188,7 @@ TEST_F(AutofillManagerTest, GetCreditCardSuggestionsNonCCNumber) {
TEST_F(AutofillManagerTest, GetCreditCardSuggestionsNonHTTPS) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, false, false);
+ CreateTestCreditCardFormData(&form, false, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1196,7 +1222,7 @@ TEST_F(AutofillManagerTest, GetCreditCardSuggestionsRepeatedObfuscatedNumber) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1225,7 +1251,7 @@ TEST_F(AutofillManagerTest, GetAddressAndCreditCardSuggestions) {
// Set up our form data.
FormData form;
test::CreateTestAddressFormData(&form);
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1263,7 +1289,7 @@ TEST_F(AutofillManagerTest, GetAddressAndCreditCardSuggestionsNonHttps) {
// Set up our form data.
FormData form;
test::CreateTestAddressFormData(&form);
- CreateTestCreditCardFormData(&form, false, false);
+ CreateTestCreditCardFormData(&form, false, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1478,7 +1504,7 @@ TEST_F(AutofillManagerTest, FillAddressForm) {
TEST_F(AutofillManagerTest, WillFillCreditCardNumber) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1525,7 +1551,7 @@ TEST_F(AutofillManagerTest, WillFillCreditCardNumber) {
TEST_F(AutofillManagerTest, FillCreditCardForm) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1539,6 +1565,48 @@ TEST_F(AutofillManagerTest, FillCreditCardForm) {
response_page_id, response_data, kDefaultPageID, false);
}
+// Test that whitespace is stripped from the credit card number.
+TEST_F(AutofillManagerTest, FillCreditCardFormStripCardNumberWhitespace) {
+ // Same as the SetUp(), but generate Elvis card with whitespace in credit
+ // card number.
+ personal_data_.CreateTestCreditCardWithWhitespace();
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, false, false);
+ std::vector<FormData> forms(1, form);
+ FormsSeen(forms);
+
+ const char guid[] = "00000000-0000-0000-0000-000000000008";
+ int response_page_id = 0;
+ FormData response_data;
+ FillAutofillFormDataAndSaveResults(kDefaultPageID, form, *form.fields.begin(),
+ MakeFrontendID(guid, std::string()),
+ &response_page_id, &response_data);
+ ExpectFilledCreditCardFormElvis(response_page_id, response_data,
+ kDefaultPageID, false);
+}
+
+// Test that separator characters are stripped from the credit card number.
+TEST_F(AutofillManagerTest, FillCreditCardFormStripCardNumberSeparators) {
+ // Same as the SetUp(), but generate Elvis card with separator characters in
+ // credit card number.
+ personal_data_.CreateTestCreditCardWithSeparators();
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, false, false);
+ std::vector<FormData> forms(1, form);
+ FormsSeen(forms);
+
+ const char guid[] = "00000000-0000-0000-0000-000000000009";
+ int response_page_id = 0;
+ FormData response_data;
+ FillAutofillFormDataAndSaveResults(kDefaultPageID, form, *form.fields.begin(),
+ MakeFrontendID(guid, std::string()),
+ &response_page_id, &response_data);
+ ExpectFilledCreditCardFormElvis(response_page_id, response_data,
+ kDefaultPageID, false);
+}
+
// Test that we correctly fill a credit card form with month input type.
// 1. year empty, month empty
TEST_F(AutofillManagerTest, FillCreditCardFormNoYearNoMonth) {
@@ -1547,7 +1615,7 @@ TEST_F(AutofillManagerTest, FillCreditCardFormNoYearNoMonth) {
personal_data_.CreateTestCreditCardsYearAndMonth("", "");
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, true);
+ CreateTestCreditCardFormData(&form, true, false, true);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1570,7 +1638,7 @@ TEST_F(AutofillManagerTest, FillCreditCardFormNoYearMonth) {
personal_data_.CreateTestCreditCardsYearAndMonth("", "04");
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, true);
+ CreateTestCreditCardFormData(&form, true, false, true);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1592,7 +1660,7 @@ TEST_F(AutofillManagerTest, FillCreditCardFormYearNoMonth) {
personal_data_.CreateTestCreditCardsYearAndMonth("2012", "");
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, true);
+ CreateTestCreditCardFormData(&form, true, false, true);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1615,7 +1683,7 @@ TEST_F(AutofillManagerTest, FillCreditCardFormYearMonth) {
personal_data_.CreateTestCreditCardsYearAndMonth("2012", "04");
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, true);
+ CreateTestCreditCardFormData(&form, true, false, true);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1634,7 +1702,7 @@ TEST_F(AutofillManagerTest, FillAddressAndCreditCardForm) {
// Set up our form data.
FormData form;
test::CreateTestAddressFormData(&form);
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -1983,7 +2051,7 @@ TEST_F(AutofillManagerTest, FillAutofilledForm) {
test::CreateTestAddressFormData(&form);
// Mark one of the address fields as autofilled.
form.fields[4].is_autofilled = true;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -2595,12 +2663,36 @@ TEST_F(AutofillManagerTest, FormSubmittedWithDefaultValues) {
// Tests that credit card data are saved for forms on https
TEST_F(AutofillManagerTest, ImportFormDataCreditCardHTTPS) {
- TestSaveCreditCards(true);
+ TestSaveCreditCards(true, false);
}
// Tests that credit card data are saved for forms on http
TEST_F(AutofillManagerTest, ImportFormDataCreditCardHTTP) {
- TestSaveCreditCards(false);
+ TestSaveCreditCards(false, false);
+}
+
+// Tests that credit card data are saved when autocomplete=off for CC field.
+TEST_F(AutofillManagerTest, CreditCardSavedWhenAutocompleteOff) {
+ TestSaveCreditCards(false, true);
+}
+
+// Tests that credit card data are not saved when CC number does not pass the
+// Luhn test.
+TEST_F(AutofillManagerTest, InvalidCreditCardNumberIsNotSaved) {
+ // Set up our form data.
+ FormData form;
+ CreateTestCreditCardFormData(&form, true, false, false);
+ std::vector<FormData> forms(1, form);
+ FormsSeen(forms);
+
+ // Edit the data, and submit.
+ std::string card("4408041234567890");
+ ASSERT_FALSE(autofill::IsValidCreditCardNumber(ASCIIToUTF16(card)));
+ form.fields[1].value = ASCIIToUTF16(card);
+ form.fields[2].value = ASCIIToUTF16("11");
+ form.fields[3].value = ASCIIToUTF16("2017");
+ EXPECT_CALL(autofill_client_, ConfirmSaveCreditCard(_)).Times(0);
+ FormSubmitted(form);
}
TEST_F(AutofillManagerTest, DeterminePossibleFieldTypesForUpload) {
@@ -3225,7 +3317,7 @@ TEST_F(AutofillManagerTest, DisplayCreditCardSuggestionsWithMatchingTokens) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);
@@ -3256,7 +3348,7 @@ TEST_F(AutofillManagerTest, NoCreditCardSuggestionsForNonPrefixTokenMatch) {
// Set up our form data.
FormData form;
- CreateTestCreditCardFormData(&form, true, false);
+ CreateTestCreditCardFormData(&form, true, false, false);
std::vector<FormData> forms(1, form);
FormsSeen(forms);

Powered by Google App Engine
This is Rietveld 408576698