| OLD | NEW |
| 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" |
| 11 #include "base/stl_util.h" | 11 #include "base/stl_util.h" |
| 12 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
| 13 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
| 15 #include "base/time/time.h" | 15 #include "base/time/time.h" |
| 16 #include "components/autofill/core/browser/autofill_profile.h" | 16 #include "components/autofill/core/browser/autofill_profile.h" |
| 17 #include "components/autofill/core/browser/autofill_test_utils.h" |
| 17 #include "components/autofill/core/browser/autofill_type.h" | 18 #include "components/autofill/core/browser/autofill_type.h" |
| 18 #include "components/autofill/core/browser/credit_card.h" | 19 #include "components/autofill/core/browser/credit_card.h" |
| 19 #include "components/autofill/core/browser/webdata/autofill_change.h" | 20 #include "components/autofill/core/browser/webdata/autofill_change.h" |
| 20 #include "components/autofill/core/browser/webdata/autofill_entry.h" | 21 #include "components/autofill/core/browser/webdata/autofill_entry.h" |
| 21 #include "components/autofill/core/browser/webdata/autofill_table.h" | 22 #include "components/autofill/core/browser/webdata/autofill_table.h" |
| 22 #include "components/autofill/core/common/form_field_data.h" | 23 #include "components/autofill/core/common/form_field_data.h" |
| 23 #include "components/os_crypt/os_crypt.h" | 24 #include "components/os_crypt/os_crypt.h" |
| 24 #include "components/webdata/common/web_database.h" | 25 #include "components/webdata/common/web_database.h" |
| 25 #include "sql/statement.h" | 26 #include "sql/statement.h" |
| 26 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 1589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1616 | 1617 |
| 1617 inputs.push_back( | 1618 inputs.push_back( |
| 1618 CreditCard(CreditCard::MASKED_SERVER_CARD, "b456")); | 1619 CreditCard(CreditCard::MASKED_SERVER_CARD, "b456")); |
| 1619 inputs[1].SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Rick Roman")); | 1620 inputs[1].SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Rick Roman")); |
| 1620 inputs[1].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12")); | 1621 inputs[1].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12")); |
| 1621 inputs[1].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("1997")); | 1622 inputs[1].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("1997")); |
| 1622 inputs[1].SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111")); | 1623 inputs[1].SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111")); |
| 1623 inputs[1].SetTypeForMaskedCard(kVisaCard); | 1624 inputs[1].SetTypeForMaskedCard(kVisaCard); |
| 1624 inputs[1].SetServerStatus(CreditCard::EXPIRED); | 1625 inputs[1].SetServerStatus(CreditCard::EXPIRED); |
| 1625 | 1626 |
| 1626 table_->SetServerCreditCards(inputs); | 1627 test::SetServerCreditCards(table_.get(), inputs); |
| 1627 | 1628 |
| 1628 std::vector<CreditCard*> outputs; | 1629 std::vector<CreditCard*> outputs; |
| 1629 ASSERT_TRUE(table_->GetServerCreditCards(&outputs)); | 1630 ASSERT_TRUE(table_->GetServerCreditCards(&outputs)); |
| 1630 ASSERT_EQ(inputs.size(), outputs.size()); | 1631 ASSERT_EQ(inputs.size(), outputs.size()); |
| 1631 | 1632 |
| 1632 // Ordering isn't guaranteed, so fix the ordering if it's backwards. | 1633 // Ordering isn't guaranteed, so fix the ordering if it's backwards. |
| 1633 if (outputs[1]->server_id() == inputs[0].server_id()) | 1634 if (outputs[1]->server_id() == inputs[0].server_id()) |
| 1634 std::swap(outputs[0], outputs[1]); | 1635 std::swap(outputs[0], outputs[1]); |
| 1635 | 1636 |
| 1636 // GUIDs for server cards are dynamically generated so will be different | 1637 // GUIDs for server cards are dynamically generated so will be different |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1652 | 1653 |
| 1653 TEST_F(AutofillTableTest, MaskUnmaskServerCards) { | 1654 TEST_F(AutofillTableTest, MaskUnmaskServerCards) { |
| 1654 base::string16 masked_number(ASCIIToUTF16("1111")); | 1655 base::string16 masked_number(ASCIIToUTF16("1111")); |
| 1655 std::vector<CreditCard> inputs; | 1656 std::vector<CreditCard> inputs; |
| 1656 inputs.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "a123")); | 1657 inputs.push_back(CreditCard(CreditCard::MASKED_SERVER_CARD, "a123")); |
| 1657 inputs[0].SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Jay Johnson")); | 1658 inputs[0].SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Jay Johnson")); |
| 1658 inputs[0].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); | 1659 inputs[0].SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); |
| 1659 inputs[0].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); | 1660 inputs[0].SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); |
| 1660 inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, masked_number); | 1661 inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, masked_number); |
| 1661 inputs[0].SetTypeForMaskedCard(kVisaCard); | 1662 inputs[0].SetTypeForMaskedCard(kVisaCard); |
| 1662 table_->SetServerCreditCards(inputs); | 1663 test::SetServerCreditCards(table_.get(), inputs); |
| 1663 | 1664 |
| 1664 // Unmask the number. The full number should be available. | 1665 // Unmask the number. The full number should be available. |
| 1665 base::string16 full_number(ASCIIToUTF16("4111111111111111")); | 1666 base::string16 full_number(ASCIIToUTF16("4111111111111111")); |
| 1666 ASSERT_TRUE(table_->UnmaskServerCreditCard(inputs[0].server_id(), | 1667 ASSERT_TRUE(table_->UnmaskServerCreditCard(inputs[0].server_id(), |
| 1667 full_number)); | 1668 full_number)); |
| 1668 | 1669 |
| 1669 std::vector<CreditCard*> outputs; | 1670 std::vector<CreditCard*> outputs; |
| 1670 table_->GetServerCreditCards(&outputs); | 1671 table_->GetServerCreditCards(&outputs); |
| 1671 ASSERT_EQ(1u, outputs.size()); | 1672 ASSERT_EQ(1u, outputs.size()); |
| 1672 EXPECT_TRUE(CreditCard::FULL_SERVER_CARD == outputs[0]->record_type()); | 1673 EXPECT_TRUE(CreditCard::FULL_SERVER_CARD == outputs[0]->record_type()); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1692 // Add a masked card. | 1693 // Add a masked card. |
| 1693 CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123"); | 1694 CreditCard masked_card(CreditCard::MASKED_SERVER_CARD, "a123"); |
| 1694 masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins")); | 1695 masked_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Paul F. Tompkins")); |
| 1695 masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); | 1696 masked_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("1")); |
| 1696 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); | 1697 masked_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("2020")); |
| 1697 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111")); | 1698 masked_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("1111")); |
| 1698 masked_card.SetTypeForMaskedCard(kVisaCard); | 1699 masked_card.SetTypeForMaskedCard(kVisaCard); |
| 1699 | 1700 |
| 1700 std::vector<CreditCard> inputs; | 1701 std::vector<CreditCard> inputs; |
| 1701 inputs.push_back(masked_card); | 1702 inputs.push_back(masked_card); |
| 1702 table_->SetServerCreditCards(inputs); | 1703 test::SetServerCreditCards(table_.get(), inputs); |
| 1703 | 1704 |
| 1704 // Now call Set with the full number. | 1705 // Now unmask it. |
| 1705 base::string16 full_number = ASCIIToUTF16("4111111111111111"); | 1706 base::string16 full_number = ASCIIToUTF16("4111111111111111"); |
| 1706 inputs[0].set_record_type(CreditCard::FULL_SERVER_CARD); | 1707 table_->UnmaskServerCreditCard(masked_card.server_id(), full_number); |
| 1707 inputs[0].SetRawInfo(CREDIT_CARD_NUMBER, full_number); | |
| 1708 table_->SetServerCreditCards(inputs); | |
| 1709 | 1708 |
| 1710 // The card should now be unmasked. | 1709 // The card should now be unmasked. |
| 1711 std::vector<CreditCard*> outputs; | 1710 std::vector<CreditCard*> outputs; |
| 1712 table_->GetServerCreditCards(&outputs); | 1711 table_->GetServerCreditCards(&outputs); |
| 1713 ASSERT_EQ(1u, outputs.size()); | 1712 ASSERT_EQ(1u, outputs.size()); |
| 1714 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::FULL_SERVER_CARD); | 1713 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::FULL_SERVER_CARD); |
| 1715 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1714 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
| 1716 | 1715 |
| 1717 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1716 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
| 1718 outputs.clear(); | 1717 outputs.clear(); |
| 1719 | 1718 |
| 1720 // Call set again with the masked number. | 1719 // Call set again with the masked number. |
| 1721 inputs[0] = masked_card; | 1720 inputs[0] = masked_card; |
| 1722 table_->SetServerCreditCards(inputs); | 1721 test::SetServerCreditCards(table_.get(), inputs); |
| 1723 | 1722 |
| 1724 // The card should stay unmasked. | 1723 // The card should stay unmasked. |
| 1725 table_->GetServerCreditCards(&outputs); | 1724 table_->GetServerCreditCards(&outputs); |
| 1726 ASSERT_EQ(1u, outputs.size()); | 1725 ASSERT_EQ(1u, outputs.size()); |
| 1727 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::FULL_SERVER_CARD); | 1726 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::FULL_SERVER_CARD); |
| 1728 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1727 EXPECT_EQ(full_number, outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
| 1729 | 1728 |
| 1730 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1729 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
| 1731 outputs.clear(); | 1730 outputs.clear(); |
| 1732 | 1731 |
| 1733 // Set inputs that do not include our old card. | 1732 // Set inputs that do not include our old card. |
| 1734 CreditCard random_card(CreditCard::MASKED_SERVER_CARD, "b456"); | 1733 CreditCard random_card(CreditCard::MASKED_SERVER_CARD, "b456"); |
| 1735 random_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Rick Roman")); | 1734 random_card.SetRawInfo(CREDIT_CARD_NAME, ASCIIToUTF16("Rick Roman")); |
| 1736 random_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12")); | 1735 random_card.SetRawInfo(CREDIT_CARD_EXP_MONTH, ASCIIToUTF16("12")); |
| 1737 random_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("1997")); | 1736 random_card.SetRawInfo(CREDIT_CARD_EXP_4_DIGIT_YEAR, ASCIIToUTF16("1997")); |
| 1738 random_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("2222")); | 1737 random_card.SetRawInfo(CREDIT_CARD_NUMBER, ASCIIToUTF16("2222")); |
| 1739 random_card.SetTypeForMaskedCard(kVisaCard); | 1738 random_card.SetTypeForMaskedCard(kVisaCard); |
| 1740 inputs[0] = random_card; | 1739 inputs[0] = random_card; |
| 1741 table_->SetServerCreditCards(inputs); | 1740 test::SetServerCreditCards(table_.get(), inputs); |
| 1742 | 1741 |
| 1743 // We should have only the new card, the other one should have been deleted. | 1742 // We should have only the new card, the other one should have been deleted. |
| 1744 table_->GetServerCreditCards(&outputs); | 1743 table_->GetServerCreditCards(&outputs); |
| 1745 ASSERT_EQ(1u, outputs.size()); | 1744 ASSERT_EQ(1u, outputs.size()); |
| 1746 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::MASKED_SERVER_CARD); | 1745 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::MASKED_SERVER_CARD); |
| 1747 EXPECT_EQ(random_card.server_id(), outputs[0]->server_id()); | 1746 EXPECT_EQ(random_card.server_id(), outputs[0]->server_id()); |
| 1748 EXPECT_EQ(ASCIIToUTF16("2222"), outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1747 EXPECT_EQ(ASCIIToUTF16("2222"), outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
| 1749 | 1748 |
| 1750 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1749 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
| 1751 outputs.clear(); | 1750 outputs.clear(); |
| 1752 | 1751 |
| 1753 // Putting back the original card masked should make it masked (this tests | 1752 // Putting back the original card masked should make it masked (this tests |
| 1754 // that the unmasked data was really deleted). | 1753 // that the unmasked data was really deleted). |
| 1755 inputs[0] = masked_card; | 1754 inputs[0] = masked_card; |
| 1756 table_->SetServerCreditCards(inputs); | 1755 test::SetServerCreditCards(table_.get(), inputs); |
| 1757 table_->GetServerCreditCards(&outputs); | 1756 table_->GetServerCreditCards(&outputs); |
| 1758 ASSERT_EQ(1u, outputs.size()); | 1757 ASSERT_EQ(1u, outputs.size()); |
| 1759 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::MASKED_SERVER_CARD); | 1758 EXPECT_TRUE(outputs[0]->record_type() == CreditCard::MASKED_SERVER_CARD); |
| 1760 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); | 1759 EXPECT_EQ(masked_card.server_id(), outputs[0]->server_id()); |
| 1761 EXPECT_EQ(ASCIIToUTF16("1111"), outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); | 1760 EXPECT_EQ(ASCIIToUTF16("1111"), outputs[0]->GetRawInfo(CREDIT_CARD_NUMBER)); |
| 1762 | 1761 |
| 1763 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1762 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
| 1764 outputs.clear(); | 1763 outputs.clear(); |
| 1765 } | 1764 } |
| 1766 | 1765 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1786 // The original one should have been replaced. | 1785 // The original one should have been replaced. |
| 1787 table_->GetServerProfiles(&outputs); | 1786 table_->GetServerProfiles(&outputs); |
| 1788 ASSERT_EQ(1u, outputs.size()); | 1787 ASSERT_EQ(1u, outputs.size()); |
| 1789 EXPECT_EQ(two.server_id(), outputs[0]->server_id()); | 1788 EXPECT_EQ(two.server_id(), outputs[0]->server_id()); |
| 1790 | 1789 |
| 1791 STLDeleteContainerPointers(outputs.begin(), outputs.end()); | 1790 STLDeleteContainerPointers(outputs.begin(), outputs.end()); |
| 1792 outputs.clear(); | 1791 outputs.clear(); |
| 1793 } | 1792 } |
| 1794 | 1793 |
| 1795 } // namespace autofill | 1794 } // namespace autofill |
| OLD | NEW |