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

Side by Side Diff: components/autofill/core/browser/webdata/autofill_table_unittest.cc

Issue 1042353003: Create syncable metadata table for Wallet credit cards and addresses. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comment about migration code Created 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 <utility> 5 #include <utility>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/files/scoped_temp_dir.h" 9 #include "base/files/scoped_temp_dir.h"
10 #include "base/guid.h" 10 #include "base/guid.h"
(...skipping 1647 matching lines...) Expand 10 before | Expand all | Expand 10 after
1658 inputs.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "a123")); 1658 inputs.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "a123"));
1659 inputs[0].SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Jay Johnson")); 1659 inputs[0].SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Jay Johnson"));
1660 inputs[0].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); 1660 inputs[0].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1"));
1661 inputs[0].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); 1661 inputs[0].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020"));
1662 inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, masked_number); 1662 inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, masked_number);
1663 inputs[0].SetTypeForMaskedCard(kVisaCard); 1663 inputs[0].SetTypeForMaskedCard(kVisaCard);
1664 test::SetServerCreditCards(table_.get(), inputs); 1664 test::SetServerCreditCards(table_.get(), inputs);
1665 1665
1666 // Unmask the number. The full number should be available. 1666 // Unmask the number. The full number should be available.
1667 base::string16 full_number(ASCIIToUTF16("4111111111111111")); 1667 base::string16 full_number(ASCIIToUTF16("4111111111111111"));
1668 ASSERT_TRUE(table_->UnmaskServerCreditCard(inputs[0].server_id(), 1668 ASSERT_TRUE(table_->UnmaskServerCreditCard(inputs[0],
1669 full_number)); 1669 full_number));
1670 1670
1671 std::vector<CreditCard*> outputs; 1671 std::vector<CreditCard*> outputs;
1672 table_->GetServerCreditCards(&outputs); 1672 table_->GetServerCreditCards(&outputs);
1673 ASSERT_EQ(1u, outputs.size()); 1673 ASSERT_EQ(1u, outputs.size());
1674 EXPECT_TRUE(CreditCard::FULL_SERVER_CARD == outputs[0]->record_type()); 1674 EXPECT_TRUE(CreditCard::FULL_SERVER_CARD == outputs[0]->record_type());
1675 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); 1675 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
1676 1676
1677 STLDeleteContainerPointers(outputs.begin(), outputs.end()); 1677 STLDeleteContainerPointers(outputs.begin(), outputs.end());
1678 outputs.clear(); 1678 outputs.clear();
(...skipping 19 matching lines...) Expand all
1698 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); 1698 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020"));
1699 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111")); 1699 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111"));
1700 masked_card.SetTypeForMaskedCard(kVisaCard); 1700 masked_card.SetTypeForMaskedCard(kVisaCard);
1701 1701
1702 std::vector<CreditCard> inputs; 1702 std::vector<CreditCard> inputs;
1703 inputs.push_back(masked_card); 1703 inputs.push_back(masked_card);
1704 test::SetServerCreditCards(table_.get(), inputs); 1704 test::SetServerCreditCards(table_.get(), inputs);
1705 1705
1706 // Now unmask it. 1706 // Now unmask it.
1707 base::string16 full_number = ASCIIToUTF16("4111111111111111"); 1707 base::string16 full_number = ASCIIToUTF16("4111111111111111");
1708 table_->UnmaskServerCreditCard(masked_card.server_id(), full_number); 1708 table_->UnmaskServerCreditCard(masked_card, full_number);
1709 1709
1710 // The card should now be unmasked. 1710 // The card should now be unmasked.
1711 std::vector<CreditCard*> outputs; 1711 std::vector<CreditCard*> outputs;
1712 table_->GetServerCreditCards(&outputs); 1712 table_->GetServerCreditCards(&outputs);
1713 ASSERT_EQ(1u, outputs.size()); 1713 ASSERT_EQ(1u, outputs.size());
1714 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::FULL_SERVER_CARD); 1714 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::FULL_SERVER_CARD);
1715 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); 1715 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
1716 1716
1717 STLDeleteContainerPointers(outputs.begin(), outputs.end()); 1717 STLDeleteContainerPointers(outputs.begin(), outputs.end());
1718 outputs.clear(); 1718 outputs.clear();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1757 table_->GetServerCreditCards(&outputs); 1757 table_->GetServerCreditCards(&outputs);
1758 ASSERT_EQ(1u, outputs.size()); 1758 ASSERT_EQ(1u, outputs.size());
1759 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::MASKED_SERVER_CARD); 1759 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::MASKED_SERVER_CARD);
1760 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); 1760 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id());
1761 EXPECT_EQ(ASCIIToUTF16("1111"), outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); 1761 EXPECT_EQ(ASCIIToUTF16("1111"), outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
1762 1762
1763 STLDeleteContainerPointers(outputs.begin(), outputs.end()); 1763 STLDeleteContainerPointers(outputs.begin(), outputs.end());
1764 outputs.clear(); 1764 outputs.clear();
1765 } 1765 }
1766 1766
1767 TEST_F(AutofillTableTest, SetServerCardUpdateUsageStats) {
1768 // Add a masked card.
1769 CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123");
1770 masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins"));
1771 masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1"));
1772 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020"));
1773 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111"));
1774 masked_card.SetTypeForMaskedCard(kVisaCard);
1775
1776 std::vector<CreditCard> inputs;
1777 inputs.push_back(masked_card);
1778 test::SetServerCreditCards(table_.get(), inputs);
1779
1780 ScopedVector<CreditCard> outputs;
1781 table_->GetServerCreditCards(&outputs.get());
1782 ASSERT_EQ(1u, outputs.size());
1783 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id());
1784 EXPECT_EQ(0U, outputs[0]->use_count());
1785 EXPECT_EQ(base::Time(), outputs[0]->use_date());
1786 outputs.clear();
1787
1788 // Update the usage stats; make sure they're reflected in GetServerProfiles.
1789 inputs.back().set_use_count(4U);
1790 inputs.back().set_use_date(base::Time::Now());
1791 table_->UpdateServerCardUsageStats(inputs.back());
1792 table_->GetServerCreditCards(&outputs.get());
1793 ASSERT_EQ(1u, outputs.size());
1794 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id());
1795 EXPECT_EQ(4U, outputs[0]->use_count());
1796 EXPECT_NE(base::Time(), outputs[0]->use_date());
1797 outputs.clear();
1798
1799 // Setting the cards again shouldn't delete the usage stats.
1800 table_->SetServerCreditCards(inputs);
1801 table_->GetServerCreditCards(&outputs.get());
1802 ASSERT_EQ(1u, outputs.size());
1803 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id());
1804 EXPECT_EQ(4U, outputs[0]->use_count());
1805 EXPECT_NE(base::Time(), outputs[0]->use_date());
1806 outputs.clear();
1807
1808 // Set a card list where the card is missing --- this should clear metadata.
1809 CreditCard masked_card2(CreditCard::MASKED_SERVER_CARD, "b456");
1810 inputs.back() = masked_card2;
1811 table_->SetServerCreditCards(inputs);
1812
1813 // Back to the original card list.
1814 inputs.back() = masked_card;
1815 table_->SetServerCreditCards(inputs);
1816 table_->GetServerCreditCards(&outputs.get());
1817 ASSERT_EQ(1u, outputs.size());
1818 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id());
1819 EXPECT_EQ(0U, outputs[0]->use_count());
1820 EXPECT_EQ(base::Time(), outputs[0]->use_date());
1821 outputs.clear();
1822 }
1823
1767 TEST_F(AutofillTableTest, SetServerProfile) { 1824 TEST_F(AutofillTableTest, SetServerProfile) {
1768 AutofillProfile one(AutofillProfile::SERVER_PROFILE, "a123"); 1825 AutofillProfile one(AutofillProfile::SERVER_PROFILE, "a123");
1769 std::vector<AutofillProfile> inputs; 1826 std::vector<AutofillProfile> inputs;
1770 inputs.push_back(one); 1827 inputs.push_back(one);
1771 table_->SetServerProfiles(inputs); 1828 table_->SetServerProfiles(inputs);
1772 1829
1773 std::vector<AutofillProfile*> outputs; 1830 std::vector<AutofillProfile*> outputs;
1774 table_->GetServerProfiles(&outputs); 1831 table_->GetServerProfiles(&outputs);
1775 ASSERT_EQ(1u, outputs.size()); 1832 ASSERT_EQ(1u, outputs.size());
1776 EXPECT_EQ(one.server_id(), outputs[0]->server_id()); 1833 EXPECT_EQ(one.server_id(), outputs[0]->server_id());
1777 1834
1778 STLDeleteContainerPointers(outputs.begin(), outputs.end()); 1835 STLDeleteContainerPointers(outputs.begin(), outputs.end());
1779 outputs.clear(); 1836 outputs.clear();
1780 1837
1781 // Set a different profile. 1838 // Set a different profile.
1782 AutofillProfile two(AutofillProfile::SERVER_PROFILE, "b456"); 1839 AutofillProfile two(AutofillProfile::SERVER_PROFILE, "b456");
1783 inputs[0] = two; 1840 inputs[0] = two;
1784 table_->SetServerProfiles(inputs); 1841 table_->SetServerProfiles(inputs);
1785 1842
1786 // The original one should have been replaced. 1843 // The original one should have been replaced.
1787 table_->GetServerProfiles(&outputs); 1844 table_->GetServerProfiles(&outputs);
1788 ASSERT_EQ(1u, outputs.size()); 1845 ASSERT_EQ(1u, outputs.size());
1789 EXPECT_EQ(two.server_id(), outputs[0]->server_id()); 1846 EXPECT_EQ(two.server_id(), outputs[0]->server_id());
1790 1847
1791 STLDeleteContainerPointers(outputs.begin(), outputs.end()); 1848 STLDeleteContainerPointers(outputs.begin(), outputs.end());
1792 outputs.clear(); 1849 outputs.clear();
1793 } 1850 }
1794 1851
1852 TEST_F(AutofillTableTest, SetServerProfileUpdateUsageStats) {
1853 AutofillProfile one(AutofillProfile::SERVER_PROFILE, "a123");
1854 std::vector<AutofillProfile> inputs;
1855 inputs.push_back(one);
1856 table_->SetServerProfiles(inputs);
1857
1858 ScopedVector<AutofillProfile> outputs;
1859 table_->GetServerProfiles(&outputs.get());
1860 ASSERT_EQ(1u, outputs.size());
1861 EXPECT_EQ(one.server_id(), outputs[0]->server_id());
1862 EXPECT_EQ(0U, outputs[0]->use_count());
1863 EXPECT_EQ(base::Time(), outputs[0]->use_date());
1864 outputs.clear();
1865
1866 // Update the usage stats; make sure they're reflected in GetServerProfiles.
1867 inputs.back().set_use_count(4U);
1868 inputs.back().set_use_date(base::Time::Now());
1869 table_->UpdateServerAddressUsageStats(inputs.back());
1870 table_->GetServerProfiles(&outputs.get());
1871 ASSERT_EQ(1u, outputs.size());
1872 EXPECT_EQ(one.server_id(), outputs[0]->server_id());
1873 EXPECT_EQ(4U, outputs[0]->use_count());
1874 EXPECT_NE(base::Time(), outputs[0]->use_date());
1875 outputs.clear();
1876
1877 // Setting the profiles again shouldn't delete the usage stats.
1878 table_->SetServerProfiles(inputs);
1879 table_->GetServerProfiles(&outputs.get());
1880 ASSERT_EQ(1u, outputs.size());
1881 EXPECT_EQ(one.server_id(), outputs[0]->server_id());
1882 EXPECT_EQ(4U, outputs[0]->use_count());
1883 EXPECT_NE(base::Time(), outputs[0]->use_date());
1884 outputs.clear();
1885
1886 // Set a null profile list --- this should clear metadata.
1887 table_->SetServerProfiles(std::vector<AutofillProfile>());
1888 // Reset the old profile list and see the metadata is reset.
1889 table_->SetServerProfiles(inputs);
1890 table_->GetServerProfiles(&outputs.get());
1891 ASSERT_EQ(1u, outputs.size());
1892 EXPECT_EQ(one.server_id(), outputs[0]->server_id());
1893 EXPECT_EQ(0U, outputs[0]->use_count());
1894 EXPECT_EQ(base::Time(), outputs[0]->use_date());
1895 outputs.clear();
1896 }
1897
1795 // Tests that deleting time ranges re-masks server credit cards that were 1898 // Tests that deleting time ranges re-masks server credit cards that were
1796 // unmasked in that time. 1899 // unmasked in that time.
1797 // TODO(brettw) fix flakiness and re-enable: crbug.com/465882 1900 // TODO(brettw) fix flakiness and re-enable: crbug.com/465882
1798 TEST_F(AutofillTableTest, DISABLED_DeleteUnmaskedCard) { 1901 TEST_F(AutofillTableTest, DISABLED_DeleteUnmaskedCard) {
1799 // This isn't the exact unmasked time, since the database will use the 1902 // This isn't the exact unmasked time, since the database will use the
1800 // current time that it is called. The code below has to be approximate. 1903 // current time that it is called. The code below has to be approximate.
1801 base::Time unmasked_time = base::Time::Now(); 1904 base::Time unmasked_time = base::Time::Now();
1802 1905
1803 // Add a masked card. 1906 // Add a masked card.
1804 base::string16 masked_number = ASCIIToUTF16("1111"); 1907 base::string16 masked_number = ASCIIToUTF16("1111");
1805 CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123"); 1908 CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123");
1806 masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins")); 1909 masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins"));
1807 masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); 1910 masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1"));
1808 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); 1911 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020"));
1809 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, masked_number); 1912 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, masked_number);
1810 masked_card.SetTypeForMaskedCard(kVisaCard); 1913 masked_card.SetTypeForMaskedCard(kVisaCard);
1811 1914
1812 std::vector<CreditCard> inputs; 1915 std::vector<CreditCard> inputs;
1813 inputs.push_back(masked_card); 1916 inputs.push_back(masked_card);
1814 table_->SetServerCreditCards(inputs); 1917 table_->SetServerCreditCards(inputs);
1815 1918
1816 // Unmask it. 1919 // Unmask it.
1817 base::string16 full_number = ASCIIToUTF16("4111111111111111"); 1920 base::string16 full_number = ASCIIToUTF16("4111111111111111");
1818 table_->UnmaskServerCreditCard(masked_card.server_id(), full_number); 1921 table_->UnmaskServerCreditCard(masked_card, full_number);
1819 1922
1820 // Delete data in a range a year in the future. 1923 // Delete data in a range a year in the future.
1821 std::vector<std::string> profile_guids; 1924 std::vector<std::string> profile_guids;
1822 std::vector<std::string> credit_card_guids; 1925 std::vector<std::string> credit_card_guids;
1823 ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween( 1926 ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween(
1824 unmasked_time + base::TimeDelta::FromDays(365), 1927 unmasked_time + base::TimeDelta::FromDays(365),
1825 unmasked_time + base::TimeDelta::FromDays(530), 1928 unmasked_time + base::TimeDelta::FromDays(530),
1826 &profile_guids, &credit_card_guids)); 1929 &profile_guids, &credit_card_guids));
1827 1930
1828 // This should not affect the unmasked card (should be unmasked). 1931 // This should not affect the unmasked card (should be unmasked).
(...skipping 11 matching lines...) Expand all
1840 &profile_guids, &credit_card_guids)); 1943 &profile_guids, &credit_card_guids));
1841 1944
1842 // This should re-mask. 1945 // This should re-mask.
1843 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); 1946 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get()));
1844 ASSERT_EQ(1u, outputs.size()); 1947 ASSERT_EQ(1u, outputs.size());
1845 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type()); 1948 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type());
1846 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); 1949 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
1847 outputs.clear(); 1950 outputs.clear();
1848 1951
1849 // Unmask again, the card should be back. 1952 // Unmask again, the card should be back.
1850 table_->UnmaskServerCreditCard(masked_card.server_id(), full_number); 1953 table_->UnmaskServerCreditCard(masked_card, full_number);
1851 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); 1954 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get()));
1852 ASSERT_EQ(1u, outputs.size()); 1955 ASSERT_EQ(1u, outputs.size());
1853 EXPECT_EQ(CreditCard::FULL_SERVER_CARD, outputs[0]->record_type()); 1956 EXPECT_EQ(CreditCard::FULL_SERVER_CARD, outputs[0]->record_type());
1854 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); 1957 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
1855 outputs.clear(); 1958 outputs.clear();
1856 1959
1857 // Delete all data. 1960 // Delete all data.
1858 ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween( 1961 ASSERT_TRUE(table_->RemoveAutofillDataModifiedBetween(
1859 base::Time(), base::Time::Max(), &profile_guids, &credit_card_guids)); 1962 base::Time(), base::Time::Max(), &profile_guids, &credit_card_guids));
1860 1963
1861 // Should be masked again. 1964 // Should be masked again.
1862 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get())); 1965 ASSERT_TRUE(table_->GetServerCreditCards(&outputs.get()));
1863 ASSERT_EQ(1u, outputs.size()); 1966 ASSERT_EQ(1u, outputs.size());
1864 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type()); 1967 EXPECT_EQ(CreditCard::MASKED_SERVER_CARD, outputs[0]->record_type());
1865 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); 1968 EXPECT_EQ(masked_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER));
1866 outputs.clear(); 1969 outputs.clear();
1867 } 1970 }
1868 1971
1869 } // namespace autofill 1972 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698