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 |