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

Unified Diff: components/autofill/core/browser/webdata/autofill_table_unittest.cc

Issue 967453005: Delete unmasked credit cards when clearing data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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/webdata/autofill_table_unittest.cc
diff --git a/components/autofill/core/browser/webdata/autofill_table_unittest.cc b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
index daae45482663babf45486e366648ede229fa7291..89b22c9c5c8e928cde749953f6637ce7b8e26c7c 100644
--- a/components/autofill/core/browser/webdata/autofill_table_unittest.cc
+++ b/components/autofill/core/browser/webdata/autofill_table_unittest.cc
@@ -8,6 +8,7 @@
#include "base/files/file_util.h"
#include "base/files/scoped_temp_dir.h"
#include "base/guid.h"
+#include "base/memory/scoped_vector.h"
#include "base/stl_util.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
@@ -1791,4 +1792,77 @@ TEST_F(AutofillTableTest, SetServerProfile) {
outputs.clear();
}
+// Tests that deleting time ranges re-masks server credit cards that were
+// unmasked in that time.
+TEST_F(AutofillTableTest, DeleteUnmaskedCard) {
+ // This isn't the exact unmasked time, since the database will use the
+ // current time that it is called. The code below has to be approximate.
+ base::Time unmasked_time = base::Time::Now();
+
+ // Add a masked card.
+ base::string16 masked_number = ASCIIToUTF16("1111");
+ CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123");
+ masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins"));
+ masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1"));
+ masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020"));
+ masked_card.SetRawInfo(CREDIT_CARD_NUMBER, masked_number);
+ masked_card.SetTypeForMaskedCard(kVisaCard);
+
+ std::vector<CreditCard> inputs;
+ inputs.push_back(masked_card);
+ table_->SetServerCreditCards(inputs);
+
+ // Unmask it.
+ base::string16 full_number = ASCIIToUTF16("4111111111111111");
+ table_->UnmaskServerCreditCard(masked_card.server_id(), full_number);
+
+ // Delete data in a range a year in the future.
+ std::vector<std::string> profile_guids;
+ std::vector<std::string> credit_card_guids;
+ ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween(
+ unmasked_time + base::TimeDelta::FromDays(365),
+ unmasked_time + base::TimeDelta::FromDays(530),
+ &profile_guids, &credit_card_guids));
+
+ // This should not affect the unmasked card (should be unmasked).
+ ScopedVector<CreditCard> outputs;
+ ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get()));
+ ASSERT_EQ(1u, outputs.size());
+ EXPECT_EQ(CreditCard::FULL_SERVER_CARD, outputs[0]->record_type());
+ EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
+ outputs.clear();
+
+ // Delete data in the range of the last 24 hours.
+ base::Time now = base::Time::Now();
+ ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween(
+ now - base::TimeDelta::FromDays(1), now,
+ &profile_guids, &credit_card_guids));
+
+ // This should re-mask.
+ ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get()));
+ ASSERT_EQ(1u, outputs.size());
+ EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type());
+ EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
+ outputs.clear();
+
+ // Unmask again, the card should be back.
+ table_->UnmaskServerCreditCard(masked_card.server_id(), full_number);
+ ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get()));
+ ASSERT_EQ(1u, outputs.size());
+ EXPECT_EQ(CreditCard::FULL_SERVER_CARD, outputs[0]->record_type());
+ EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
+ outputs.clear();
+
+ // Delete all data.
+ ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween(
+ base::Time(), base::Time::Max(), &profile_guids, &credit_card_guids));
+
+ // Should be masked again.
+ ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get()));
+ ASSERT_EQ(1u, outputs.size());
+ EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type());
+ EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
+ outputs.clear();
+}
+
} // namespace autofill
« no previous file with comments | « components/autofill/core/browser/webdata/autofill_table.cc ('k') | components/test/data/web_database/version_63.sql » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698