Add diagnostics_writer.cc to the list of files allowed to printf.
[chromium-blink-merge.git] / components / autofill / content / browser / wallet / wallet_test_util.cc
blob8ca992ad7f9a165e4ecb94d4a6819cc73f9195bb
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
3 // found in the LICENSE file.
5 #include "components/autofill/content/browser/wallet/wallet_test_util.h"
7 #include <string>
8 #include <vector>
10 #include "base/strings/string16.h"
11 #include "base/strings/string_number_conversions.h"
12 #include "base/strings/utf_string_conversions.h"
13 #include "base/values.h"
14 #include "components/autofill/content/browser/wallet/full_wallet.h"
15 #include "components/autofill/content/browser/wallet/gaia_account.h"
16 #include "components/autofill/content/browser/wallet/instrument.h"
17 #include "components/autofill/content/browser/wallet/required_action.h"
18 #include "components/autofill/content/browser/wallet/wallet_address.h"
20 using base::ASCIIToUTF16;
22 namespace autofill {
23 namespace wallet {
25 namespace {
27 int FutureYear() {
28 // "In the Year 3000." - Richie "LaBamba" Rosenberg
29 return 3000;
32 } // namespace
34 scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentWithDetails(
35 const std::string& id,
36 scoped_ptr<Address> address,
37 WalletItems::MaskedInstrument::Type type,
38 WalletItems::MaskedInstrument::Status status) {
39 return make_scoped_ptr(
40 new WalletItems::MaskedInstrument(ASCIIToUTF16("descriptive_name"),
41 type,
42 ASCIIToUTF16("1111"),
43 12,
44 FutureYear(),
45 address.Pass(),
46 status,
47 id));
50 scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentWithId(
51 const std::string& id) {
52 return GetTestMaskedInstrumentWithDetails(
53 id,
54 GetTestAddress(),
55 WalletItems::MaskedInstrument::VISA,
56 WalletItems::MaskedInstrument::VALID);
59 scoped_ptr<WalletItems::MaskedInstrument>
60 GetTestMaskedInstrumentWithIdAndAddress(
61 const std::string& id, scoped_ptr<Address> address) {
62 return GetTestMaskedInstrumentWithDetails(
63 id,
64 address.Pass(),
65 WalletItems::MaskedInstrument::VISA,
66 WalletItems::MaskedInstrument::VALID);
69 scoped_ptr<GaiaAccount> GetTestGaiaAccount() {
70 return GaiaAccount::CreateForTesting("user@chromium.org",
71 "obfuscated_id",
73 true);
76 std::vector<base::string16> StreetAddress(const std::string& line1,
77 const std::string& line2) {
78 std::vector<base::string16> street_address;
79 street_address.push_back(ASCIIToUTF16(line1));
80 street_address.push_back(ASCIIToUTF16(line2));
81 return street_address;
84 scoped_ptr<Address> GetTestAddress() {
85 return make_scoped_ptr(
86 new Address("US",
87 ASCIIToUTF16("recipient_name"),
88 StreetAddress("address_line_1", "address_line_2"),
89 ASCIIToUTF16("locality_name"),
90 ASCIIToUTF16("dependent_locality_name"),
91 ASCIIToUTF16("admin_area_name"),
92 ASCIIToUTF16("postal_code_number"),
93 ASCIIToUTF16("sorting_code"),
94 ASCIIToUTF16("phone_number"),
95 std::string(),
96 "language_code"));
99 scoped_ptr<Address> GetTestMinimalAddress() {
100 scoped_ptr<Address> address = GetTestAddress();
101 address->set_is_complete_address(false);
102 return address.Pass();
105 scoped_ptr<FullWallet> GetTestFullWallet() {
106 return GetTestFullWalletWithRequiredActions(std::vector<RequiredAction>());
109 scoped_ptr<FullWallet> GetTestFullWalletWithRequiredActions(
110 const std::vector<RequiredAction>& actions) {
111 scoped_ptr<FullWallet> wallet(new FullWallet(FutureYear(),
113 "528512",
114 "5ec4feecf9d6",
115 GetTestAddress(),
116 GetTestShippingAddress(),
117 actions));
118 std::vector<uint8> one_time_pad;
119 base::HexStringToBytes("5F04A8704183", &one_time_pad);
120 wallet->set_one_time_pad(one_time_pad);
121 return wallet.Pass();
124 scoped_ptr<FullWallet> GetTestFullWalletInstrumentOnly() {
125 scoped_ptr<FullWallet> wallet(new FullWallet(FutureYear(),
127 "528512",
128 "5ec4feecf9d6",
129 GetTestAddress(),
130 scoped_ptr<Address>(),
131 std::vector<RequiredAction>()));
132 std::vector<uint8> one_time_pad;
133 base::HexStringToBytes("5F04A8704183", &one_time_pad);
134 wallet->set_one_time_pad(one_time_pad);
135 return wallet.Pass();
138 scoped_ptr<Instrument> GetTestInstrument() {
139 return make_scoped_ptr(new Instrument(ASCIIToUTF16("4444444444444448"),
140 ASCIIToUTF16("123"),
142 FutureYear(),
143 Instrument::VISA,
144 GetTestAddress()));
147 scoped_ptr<Instrument> GetTestAddressUpgradeInstrument() {
148 return make_scoped_ptr(new Instrument(base::string16(),
149 base::string16(),
151 FutureYear(),
152 Instrument::UNKNOWN,
153 GetTestAddress()));
156 scoped_ptr<Instrument> GetTestExpirationDateChangeInstrument() {
157 return make_scoped_ptr(new Instrument(base::string16(),
158 ASCIIToUTF16("123"),
160 FutureYear() + 1,
161 Instrument::UNKNOWN,
162 scoped_ptr<Address>()));
165 scoped_ptr<Instrument> GetTestAddressNameChangeInstrument() {
166 return make_scoped_ptr(new Instrument(base::string16(),
167 ASCIIToUTF16("123"),
169 FutureYear(),
170 Instrument::UNKNOWN,
171 GetTestAddress()));
174 scoped_ptr<WalletItems::LegalDocument> GetTestLegalDocument() {
175 base::DictionaryValue dict;
176 dict.SetString("legal_document_id", "document_id");
177 dict.SetString("display_name", "display_name");
178 return wallet::WalletItems::LegalDocument::CreateLegalDocument(dict);
181 scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrument() {
182 return GetTestMaskedInstrumentWithId("default_instrument_id");
185 scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentExpired() {
186 return GetTestMaskedInstrumentWithDetails(
187 "default_instrument_id",
188 GetTestAddress(),
189 WalletItems::MaskedInstrument::VISA,
190 WalletItems::MaskedInstrument::EXPIRED);
193 scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentInvalid() {
194 return GetTestMaskedInstrumentWithDetails(
195 "default_instrument_id",
196 GetTestAddress(),
197 WalletItems::MaskedInstrument::VISA,
198 WalletItems::MaskedInstrument::DECLINED);
201 scoped_ptr<WalletItems::MaskedInstrument> GetTestMaskedInstrumentAmex(
202 AmexPermission amex_permission) {
203 return GetTestMaskedInstrumentWithDetails(
204 "default_instrument_id",
205 GetTestAddress(),
206 WalletItems::MaskedInstrument::AMEX,
207 amex_permission == AMEX_ALLOWED ?
208 WalletItems::MaskedInstrument::VALID :
209 WalletItems::MaskedInstrument::AMEX_NOT_SUPPORTED);
212 scoped_ptr<WalletItems::MaskedInstrument> GetTestNonDefaultMaskedInstrument() {
213 return GetTestMaskedInstrumentWithId("instrument_id");
216 scoped_ptr<Address> GetTestSaveableAddress() {
217 return make_scoped_ptr(
218 new Address("US",
219 ASCIIToUTF16("save_recipient_name"),
220 StreetAddress("save_address_line_1", "save_address_line_2"),
221 ASCIIToUTF16("save_locality_name"),
222 ASCIIToUTF16("save_dependent_locality_name"),
223 ASCIIToUTF16("save_admin_area_name"),
224 ASCIIToUTF16("save_postal_code_number"),
225 ASCIIToUTF16("save_sorting_code"),
226 ASCIIToUTF16("save_phone_number"),
227 std::string(),
228 "save_language_code"));
231 scoped_ptr<Address> GetTestShippingAddress() {
232 return make_scoped_ptr(
233 new Address("US",
234 ASCIIToUTF16("ship_recipient_name"),
235 StreetAddress("ship_address_line_1", "ship_address_line_2"),
236 ASCIIToUTF16("ship_locality_name"),
237 ASCIIToUTF16("ship_dependent_locality_name"),
238 ASCIIToUTF16("ship_admin_area_name"),
239 ASCIIToUTF16("ship_postal_code_number"),
240 ASCIIToUTF16("ship_sorting_code"),
241 ASCIIToUTF16("ship_phone_number"),
242 "default_address_id",
243 "ship_language_code"));
246 scoped_ptr<Address> GetTestNonDefaultShippingAddress() {
247 scoped_ptr<Address> address = GetTestShippingAddress();
248 address->set_object_id("address_id");
249 return address.Pass();
252 scoped_ptr<WalletItems> GetTestWalletItemsWithDetails(
253 const std::vector<RequiredAction>& required_actions,
254 const std::string& default_instrument_id,
255 const std::string& default_address_id,
256 AmexPermission amex_permission) {
257 return make_scoped_ptr(new wallet::WalletItems(required_actions,
258 "google_transaction_id",
259 default_instrument_id,
260 default_address_id,
261 amex_permission));
264 scoped_ptr<WalletItems> GetTestWalletItemsWithRequiredAction(
265 RequiredAction action) {
266 std::vector<RequiredAction> required_actions(1, action);
267 scoped_ptr<WalletItems> items =
268 GetTestWalletItemsWithDetails(required_actions,
269 "default_instrument_id",
270 "default_address_id",
271 AMEX_ALLOWED);
273 if (action != GAIA_AUTH)
274 items->AddAccount(GetTestGaiaAccount());
276 return items.Pass();
279 scoped_ptr<WalletItems> GetTestWalletItems(AmexPermission amex_permission) {
280 return GetTestWalletItemsWithDefaultIds("default_instrument_id",
281 "default_address_id",
282 amex_permission);
285 scoped_ptr<WalletItems> GetTestWalletItemsWithUsers(
286 const std::vector<std::string>& users, size_t active_index) {
287 scoped_ptr<WalletItems> items =
288 GetTestWalletItemsWithDetails(std::vector<RequiredAction>(),
289 "default_instrument_id",
290 "default_address_id",
291 AMEX_ALLOWED);
292 for (size_t i = 0; i < users.size(); ++i) {
293 scoped_ptr<GaiaAccount> account(GaiaAccount::CreateForTesting(
294 users[i], "obfuscated_id", i, i == active_index));
295 items->AddAccount(account.Pass());
297 return items.Pass();
300 scoped_ptr<WalletItems> GetTestWalletItemsWithDefaultIds(
301 const std::string& default_instrument_id,
302 const std::string& default_address_id,
303 AmexPermission amex_permission) {
304 scoped_ptr<WalletItems> items =
305 GetTestWalletItemsWithDetails(std::vector<RequiredAction>(),
306 default_instrument_id,
307 default_address_id,
308 amex_permission);
309 items->AddAccount(GetTestGaiaAccount());
310 return items.Pass();
313 } // namespace wallet
314 } // namespace autofill