instrument_unittest.cc revision 868fa2fe829687343ffae624259930155e16dbd8
1868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/values.h" 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "components/autofill/content/browser/wallet/instrument.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "components/autofill/content/browser/wallet/wallet_address.h" 9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "components/autofill/content/browser/wallet/wallet_test_util.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kPrimaryAccountNumber[] = "4444444444444448"; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kCardVerificationNumber[] = "123"; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kLastFourDigits[] = "4448"; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace autofill { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace wallet { 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, LastFourDigits) { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(ASCIIToUTF16(kLastFourDigits), instrument.last_four_digits()); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(instrument.IsValid()); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, NoPrimaryAccountNumberIsInvalid) { 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Instrument instrument(base::string16(), 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, TooShortPrimaryAccountNumberIsInvalid) { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16("44447"), 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, TooLongPrimaryAccountNumberIsInvalid) { 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16("44444444444444444448"), 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, PrimaryAccountNumberNotPassingLuhnIsInvalid) { 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16("4444444444444444"), 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, NoCardVerificationNumberIsInvalid) { 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 81c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::string16(), 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, TooShortCardVerificationNumberIsInvalid) { 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("12"), 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, TooLongCardVerificationNumberIsInvalid) { 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16("12345"), 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, ZeroAsExpirationMonthIsInvalid) { 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 0, 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, TooLargeExpirationMonthIsInvalid) { 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 13, 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, TooSmallExpirationYearIsInvalid) { 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 999, 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, TooLargeExpirationYearIsInvalid) { 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10000, 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(instrument.IsValid()); 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST(Instrument, ToDictionary) { 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::DictionaryValue expected; 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetString("type", "CREDIT_CARD"); 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetInteger("credit_card.exp_month", 12); 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetInteger("credit_card.exp_year", 2015); 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetString("credit_card.last_4_digits", kLastFourDigits); 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetString("credit_card.fop_type", "VISA"); 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) expected.SetString("credit_card.address.country_name_code", "US"); 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetString("credit_card.address.recipient_name", 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ship_recipient_name"); 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetString("credit_card.address.locality_name", 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ship_locality_name"); 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetString("credit_card.address.administrative_area_name", 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ship_admin_area_name"); 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.SetString("credit_card.address.postal_code_number", 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "ship_postal_code_number"); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ListValue* address_lines = new base::ListValue(); 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) address_lines->AppendString("ship_address_line_1"); 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) address_lines->AppendString("ship_address_line_2"); 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) expected.Set("credit_card.address.address_line", address_lines); 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument instrument(ASCIIToUTF16(kPrimaryAccountNumber), 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASCIIToUTF16(kCardVerificationNumber), 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 12, 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2015, 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Instrument::VISA, 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetTestShippingAddress().Pass()); 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(expected.Equals(instrument.ToDictionary().get())); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace wallet 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace autofill 189