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