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

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

Issue 2829853008: Stores server card as a full server card when upload to server succeeds. (Closed)
Patch Set: Renames AddServerCreditCard to AddFullServerCreditCard. Adds DCHECK to verify that we are in a tran… Created 3 years, 8 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 b6e9583be0751e667a5fc588131139c41bcc2783..3abf510efd78d002afd780b208caccf1773bdff7 100644
--- a/components/autofill/core/browser/autofill_manager_unittest.cc
+++ b/components/autofill/core/browser/autofill_manager_unittest.cc
@@ -60,6 +60,7 @@
#include "components/ukm/ukm_source.h"
#include "components/variations/variations_associated_data.h"
#include "net/base/url_util.h"
+#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_test_util.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -121,9 +122,11 @@ class TestPaymentsClient : public payments::PaymentsClient {
void UploadCard(const payments::PaymentsClient::UploadRequestDetails&
request_details) override {
- delegate_->OnDidUploadCard(AutofillClient::SUCCESS);
+ delegate_->OnDidUploadCard(AutofillClient::SUCCESS, server_id_);
}
+ std::string server_id_;
+
private:
payments::PaymentsClientDelegate* const delegate_;
@@ -180,6 +183,13 @@ class TestPersonalDataManager : public PersonalDataManager {
local_credit_cards_.push_back(std::move(local_credit_card));
}
+ void AddFullServerCreditCard(const CreditCard& credit_card) override {
+ std::unique_ptr<CreditCard> server_credit_card =
+ base::MakeUnique<CreditCard>(credit_card);
+ server_credit_card->set_modification_date(base::Time::Now());
+ server_credit_cards_.push_back(std::move(server_credit_card));
+ }
+
void RecordUseOf(const AutofillDataModel& data_model) override {
CreditCard* credit_card = GetCreditCardWithGUID(data_model.guid().c_str());
if (credit_card)
@@ -216,6 +226,7 @@ class TestPersonalDataManager : public PersonalDataManager {
void ClearCreditCards() {
local_credit_cards_.clear();
+ server_credit_cards_.clear();
}
// Create Elvis card with whitespace in the credit card number.
@@ -542,13 +553,13 @@ class TestAutofillManager : public AutofillManager {
TestPersonalDataManager* personal_data)
: AutofillManager(driver, client, personal_data),
personal_data_(personal_data),
+ context_getter_(driver->GetURLRequestContext()),
autofill_enabled_(true),
credit_card_upload_enabled_(false),
credit_card_was_uploaded_(false),
expected_observed_submission_(true),
call_parent_upload_form_data_(false) {
- set_payments_client(
- new TestPaymentsClient(driver->GetURLRequestContext(), this));
+ set_payments_client(new TestPaymentsClient(context_getter_, this));
}
~TestAutofillManager() override {}
@@ -644,6 +655,14 @@ class TestAutofillManager : public AutofillManager {
return personal_data_->GetCreditCardWithGUID(guid);
}
+ std::vector<CreditCard*> GetLocalCreditCards() const {
+ return personal_data_->GetLocalCreditCards();
+ }
+
+ const std::vector<CreditCard*>& GetCreditCards() const {
+ return personal_data_->GetCreditCards();
+ }
+
void AddProfile(std::unique_ptr<AutofillProfile> profile) {
personal_data_->AddProfile(std::move(profile));
}
@@ -667,14 +686,22 @@ class TestAutofillManager : public AutofillManager {
form_structures()->clear();
}
+ void ResetPaymentsClientForCardUpload(const char* server_id) {
+ TestPaymentsClient* payments_client =
+ new TestPaymentsClient(context_getter_, this);
+ payments_client->server_id_ = server_id;
+ set_payments_client(payments_client);
+ }
+
private:
- void OnDidUploadCard(AutofillClient::PaymentsRpcResult result) override {
+ void OnDidUploadCard(AutofillClient::PaymentsRpcResult result,
+ const std::string& server_id) override {
credit_card_was_uploaded_ = true;
+ AutofillManager::OnDidUploadCard(result, server_id);
};
- // Weak reference.
- TestPersonalDataManager* personal_data_;
-
+ TestPersonalDataManager* personal_data_; // Weak reference.
+ net::URLRequestContextGetter* context_getter_; // Weak reference.
bool autofill_enabled_;
bool credit_card_upload_enabled_;
bool credit_card_was_uploaded_;
@@ -735,8 +762,7 @@ class TestAutofillExternalDelegate : public AutofillExternalDelegate {
// Wrappers around the above GetSuggestions call that take a hardcoded number
// of expected results so callsites are cleaner.
- void CheckSuggestions(int expected_page_id,
- const Suggestion& suggestion0) {
+ void CheckSuggestions(int expected_page_id, const Suggestion& suggestion0) {
std::vector<Suggestion> suggestion_vector;
suggestion_vector.push_back(suggestion0);
CheckSuggestions(expected_page_id, 1, &suggestion_vector[0]);
@@ -775,9 +801,7 @@ class TestAutofillExternalDelegate : public AutofillExternalDelegate {
ASSERT_EQ(expected_num_suggestions, suggestions_.size());
}
- bool on_query_seen() const {
- return on_query_seen_;
- }
+ bool on_query_seen() const { return on_query_seen_; }
bool on_suggestions_returned_seen() const {
return on_suggestions_returned_seen_;
@@ -859,6 +883,7 @@ class AutofillManagerTest : public testing::Test {
// need to care about removing self as an observer in destruction.
personal_data_.set_database(scoped_refptr<AutofillWebDataService>(NULL));
personal_data_.SetPrefService(NULL);
+ personal_data_.ClearCreditCards();
request_context_ = nullptr;
}
@@ -886,7 +911,9 @@ class AutofillManagerTest : public testing::Test {
void FormSubmitted(const FormData& form) {
autofill_manager_->ResetRunLoop();
- if (autofill_manager_->OnWillSubmitForm(form, base::TimeTicks::Now()))
+ if (autofill_manager_->OnWillSubmitForm(form, base::TimeTicks::Now()) &&
+ (!personal_data_.GetProfiles().empty() ||
+ !personal_data_.GetCreditCards().empty()))
autofill_manager_->WaitForAsyncUploadProcess();
autofill_manager_->OnFormSubmitted(form);
}
@@ -1135,7 +1162,6 @@ class AutofillManagerTest : public testing::Test {
std::unique_ptr<TestAutofillManager> autofill_manager_;
std::unique_ptr<TestAutofillExternalDelegate> external_delegate_;
scoped_refptr<net::TestURLRequestContextGetter> request_context_;
- TestPaymentsClient* payments_client_;
TestAutofillDownloadManager* download_manager_;
TestPersonalDataManager personal_data_;
base::FieldTrialList field_trial_list_;
@@ -1794,7 +1820,6 @@ TEST_F(AutofillManagerTest,
// are no credit card suggestions and the promo is active. See the tests in
// AutofillExternalDelegateTest that test whether the promo is added.
TEST_F(AutofillManagerTest, GetCreditCardSuggestions_OnlySigninPromo) {
- // Make sure there are no credit cards.
personal_data_.ClearCreditCards();
// Set up our form data.
@@ -2351,7 +2376,6 @@ TEST_F(AutofillManagerTest, FillCreditCardForm_YearNoMonth) {
TEST_F(AutofillManagerTest, FillCreditCardForm_YearMonth) {
// Same as the SetUp(), but generate 4 credit cards with year month
// combination.
- personal_data_.ClearCreditCards();
personal_data_.CreateTestCreditCardsYearAndMonth("2999", "04");
// Set up our form data.
FormData form;
@@ -4599,6 +4623,7 @@ TEST_F(AutofillManagerTest, FillInUpdatedExpirationDate) {
#endif
TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard) {
EnableUkmLogging();
+ personal_data_.ClearCreditCards();
personal_data_.ClearAutofillProfiles();
autofill_manager_->set_credit_card_upload_enabled(true);
@@ -4630,6 +4655,9 @@ TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard) {
FormSubmitted(credit_card_form);
EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
+ // Server did not send a server_id, expect copy of card is not stored.
+ EXPECT_TRUE(autofill_manager_->GetCreditCards().empty());
+
// Verify that the correct histogram entry (and only that) was logged.
histogram_tester.ExpectUniqueSample("Autofill.CardUploadDecisionExpanded",
AutofillMetrics::UPLOAD_OFFERED, 1);
@@ -4639,6 +4667,58 @@ TEST_F(AutofillManagerTest, MAYBE_UploadCreditCard) {
// TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
#if defined(OS_ANDROID)
+#define MAYBE_UploadCreditCardAndSaveCopy DISABLED_UploadCreditCardAndSaveCopy
+#else
+#define MAYBE_UploadCreditCardAndSaveCopy UploadCreditCardAndSaveCopy
+#endif
+TEST_F(AutofillManagerTest, MAYBE_UploadCreditCardAndSaveCopy) {
+ personal_data_.ClearCreditCards();
+ personal_data_.ClearAutofillProfiles();
+ autofill_manager_->set_credit_card_upload_enabled(true);
+
+ const char* const server_id = "InstrumentData:1234";
+ autofill_manager_->ResetPaymentsClientForCardUpload(server_id);
+
+ // Create, fill and submit an address form in order to establish a recent
+ // profile which can be selected for the upload request.
+ FormData address_form;
+ test::CreateTestAddressFormData(&address_form);
+ FormsSeen(std::vector<FormData>(1, address_form));
+
+ ManuallyFillAddressForm("Flo", "Master", "77401", "US", &address_form);
+ FormSubmitted(address_form);
+
+ // Set up our credit card form data.
+ FormData credit_card_form;
+ CreateTestCreditCardFormData(&credit_card_form, true, false);
+ FormsSeen(std::vector<FormData>(1, credit_card_form));
+
+ // Edit the data, and submit.
+ const char* const card_number = "4111111111111111";
+ credit_card_form.fields[0].value = ASCIIToUTF16("Flo Master");
+ credit_card_form.fields[1].value = ASCIIToUTF16(card_number);
+ credit_card_form.fields[2].value = ASCIIToUTF16("11");
+ credit_card_form.fields[3].value = ASCIIToUTF16("2017");
+ credit_card_form.fields[4].value = ASCIIToUTF16("123");
+
+ FormSubmitted(credit_card_form);
+
+ EXPECT_TRUE(autofill_manager_->credit_card_was_uploaded());
+ EXPECT_TRUE(autofill_manager_->GetLocalCreditCards().empty());
+ ASSERT_EQ(1U, autofill_manager_->GetCreditCards().size());
+ const CreditCard* const saved_card = autofill_manager_->GetCreditCards()[0];
+ EXPECT_EQ(CreditCard::OK, saved_card->GetServerStatus());
+ EXPECT_EQ(base::ASCIIToUTF16("1111"), saved_card->LastFourDigits());
+ EXPECT_EQ(kVisaCard, saved_card->type());
+ EXPECT_EQ(11, saved_card->expiration_month());
+ EXPECT_EQ(2017, saved_card->expiration_year());
+ EXPECT_EQ(server_id, saved_card->server_id());
+ EXPECT_EQ(CreditCard::FULL_SERVER_CARD, saved_card->record_type());
+ EXPECT_EQ(base::ASCIIToUTF16(card_number), saved_card->number());
+}
+
+// TODO(crbug.com/666704): Flaky on android_n5x_swarming_rel bot.
+#if defined(OS_ANDROID)
#define MAYBE_UploadCreditCard_FeatureNotEnabled DISABLED_UploadCreditCard_FeatureNotEnabled
#else
#define MAYBE_UploadCreditCard_FeatureNotEnabled UploadCreditCard_FeatureNotEnabled

Powered by Google App Engine
This is Rietveld 408576698