OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 "components/payments/content/payment_response_helper.h" | 5 #include "components/payments/content/payment_response_helper.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/memory/weak_ptr.h" | 12 #include "base/memory/weak_ptr.h" |
13 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
14 #include "components/autofill/core/browser/autofill_profile.h" | 14 #include "components/autofill/core/browser/autofill_profile.h" |
15 #include "components/autofill/core/browser/autofill_test_utils.h" | 15 #include "components/autofill/core/browser/autofill_test_utils.h" |
16 #include "components/autofill/core/browser/credit_card.h" | 16 #include "components/autofill/core/browser/credit_card.h" |
17 #include "components/autofill/core/browser/test_personal_data_manager.h" | 17 #include "components/autofill/core/browser/test_personal_data_manager.h" |
18 #include "components/payments/content/payment_request_spec.h" | 18 #include "components/payments/content/payment_request_spec.h" |
19 #include "components/payments/core/address_normalizer.h" | |
20 #include "components/payments/core/autofill_payment_instrument.h" | 19 #include "components/payments/core/autofill_payment_instrument.h" |
21 #include "components/payments/core/payment_request_delegate.h" | 20 #include "components/payments/core/test_payment_request_delegate.h" |
22 #include "components/payments/mojom/payment_request.mojom.h" | 21 #include "components/payments/mojom/payment_request.mojom.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
24 | 23 |
25 namespace payments { | 24 namespace payments { |
26 | 25 |
27 namespace { | |
28 | |
29 class FakeAddressNormalizer : public AddressNormalizer { | |
30 public: | |
31 FakeAddressNormalizer() {} | |
32 | |
33 void LoadRulesForRegion(const std::string& region_code) override {} | |
34 | |
35 bool AreRulesLoadedForRegion(const std::string& region_code) override { | |
36 return true; | |
37 } | |
38 | |
39 void StartAddressNormalization( | |
40 const autofill::AutofillProfile& profile, | |
41 const std::string& region_code, | |
42 int timeout_seconds, | |
43 AddressNormalizer::Delegate* requester) override { | |
44 requester->OnAddressNormalized(profile); | |
45 } | |
46 | |
47 void OnAddressValidationRulesLoaded(const std::string& region_code, | |
48 bool success) override {} | |
49 }; | |
50 | |
51 class FakePaymentRequestDelegate : public PaymentRequestDelegate { | |
52 public: | |
53 FakePaymentRequestDelegate( | |
54 autofill::PersonalDataManager* personal_data_manager) | |
55 : personal_data_manager_(personal_data_manager), | |
56 locale_("en-US"), | |
57 last_committed_url_("https://shop.com") {} | |
58 | |
59 void ShowDialog(PaymentRequest* request) override {} | |
60 | |
61 void CloseDialog() override {} | |
62 | |
63 void ShowErrorMessage() override {} | |
64 | |
65 autofill::PersonalDataManager* GetPersonalDataManager() override { | |
66 return personal_data_manager_; | |
67 } | |
68 | |
69 const std::string& GetApplicationLocale() const override { return locale_; } | |
70 | |
71 bool IsIncognito() const override { return false; } | |
72 | |
73 bool IsSslCertificateValid() override { return true; } | |
74 | |
75 const GURL& GetLastCommittedURL() const override { | |
76 return last_committed_url_; | |
77 } | |
78 | |
79 void DoFullCardRequest( | |
80 const autofill::CreditCard& credit_card, | |
81 base::WeakPtr<autofill::payments::FullCardRequest::ResultDelegate> | |
82 result_delegate) override { | |
83 result_delegate->OnFullCardRequestSucceeded(credit_card, | |
84 base::ASCIIToUTF16("123")); | |
85 } | |
86 | |
87 AddressNormalizer* GetAddressNormalizer() override { | |
88 return &address_normalizer_; | |
89 } | |
90 | |
91 autofill::RegionDataLoader* GetRegionDataLoader() override { return nullptr; } | |
92 | |
93 private: | |
94 autofill::PersonalDataManager* personal_data_manager_; | |
95 std::string locale_; | |
96 const GURL last_committed_url_; | |
97 FakeAddressNormalizer address_normalizer_; | |
98 DISALLOW_COPY_AND_ASSIGN(FakePaymentRequestDelegate); | |
99 }; | |
100 | |
101 } // namespace | |
102 | |
103 class PaymentResponseHelperTest : public testing::Test, | 26 class PaymentResponseHelperTest : public testing::Test, |
104 public PaymentResponseHelper::Delegate { | 27 public PaymentResponseHelper::Delegate { |
105 protected: | 28 protected: |
106 PaymentResponseHelperTest() | 29 PaymentResponseHelperTest() |
107 : payment_request_delegate_(&test_personal_data_manager_), | 30 : test_payment_request_delegate_(&test_personal_data_manager_), |
108 address_(autofill::test::GetFullProfile()), | 31 address_(autofill::test::GetFullProfile()), |
109 billing_addresses_({&address_}) { | 32 billing_addresses_({&address_}) { |
110 test_personal_data_manager_.AddTestingProfile(&address_); | 33 test_personal_data_manager_.AddTestingProfile(&address_); |
111 | 34 |
112 // Setup the autofill payment instrument. | 35 // Setup the autofill payment instrument. |
113 autofill::CreditCard visa_card = autofill::test::GetCreditCard(); | 36 autofill::CreditCard visa_card = autofill::test::GetCreditCard(); |
114 visa_card.set_billing_address_id(address_.guid()); | 37 visa_card.set_billing_address_id(address_.guid()); |
115 visa_card.set_use_count(5u); | 38 visa_card.set_use_count(5u); |
116 autofill_instrument_ = base::MakeUnique<AutofillPaymentInstrument>( | 39 autofill_instrument_ = base::MakeUnique<AutofillPaymentInstrument>( |
117 "visa", visa_card, billing_addresses_, "en-US", | 40 "visa", visa_card, billing_addresses_, "en-US", |
118 &payment_request_delegate_); | 41 &test_payment_request_delegate_); |
119 } | 42 } |
120 ~PaymentResponseHelperTest() override {} | 43 ~PaymentResponseHelperTest() override {} |
121 | 44 |
122 // PaymentRequestState::Delegate: | 45 // PaymentRequestState::Delegate: |
123 void OnPaymentResponseReady(mojom::PaymentResponsePtr response) override { | 46 void OnPaymentResponseReady(mojom::PaymentResponsePtr response) override { |
124 payment_response_ = std::move(response); | 47 payment_response_ = std::move(response); |
125 }; | 48 }; |
126 | 49 |
127 // Convenience method to create a PaymentRequestSpec with specified |details| | 50 // Convenience method to create a PaymentRequestSpec with specified |details| |
128 // and |method_data|. | 51 // and |method_data|. |
(...skipping 30 matching lines...) Expand all Loading... |
159 entry->supported_methods.push_back("visa"); | 82 entry->supported_methods.push_back("visa"); |
160 method_data.push_back(std::move(entry)); | 83 method_data.push_back(std::move(entry)); |
161 return method_data; | 84 return method_data; |
162 } | 85 } |
163 | 86 |
164 PaymentRequestSpec* spec() { return spec_.get(); } | 87 PaymentRequestSpec* spec() { return spec_.get(); } |
165 const mojom::PaymentResponsePtr& response() { return payment_response_; } | 88 const mojom::PaymentResponsePtr& response() { return payment_response_; } |
166 autofill::AutofillProfile* test_address() { return &address_; } | 89 autofill::AutofillProfile* test_address() { return &address_; } |
167 PaymentInstrument* test_instrument() { return autofill_instrument_.get(); } | 90 PaymentInstrument* test_instrument() { return autofill_instrument_.get(); } |
168 PaymentRequestDelegate* test_payment_request_delegate() { | 91 PaymentRequestDelegate* test_payment_request_delegate() { |
169 return &payment_request_delegate_; | 92 return &test_payment_request_delegate_; |
170 } | 93 } |
171 | 94 |
172 private: | 95 private: |
173 std::unique_ptr<PaymentRequestSpec> spec_; | 96 std::unique_ptr<PaymentRequestSpec> spec_; |
174 mojom::PaymentResponsePtr payment_response_; | 97 mojom::PaymentResponsePtr payment_response_; |
175 autofill::TestPersonalDataManager test_personal_data_manager_; | 98 autofill::TestPersonalDataManager test_personal_data_manager_; |
176 FakePaymentRequestDelegate payment_request_delegate_; | 99 TestPaymentRequestDelegate test_payment_request_delegate_; |
177 | 100 |
178 // Test data. | 101 // Test data. |
179 autofill::AutofillProfile address_; | 102 autofill::AutofillProfile address_; |
180 const std::vector<autofill::AutofillProfile*> billing_addresses_; | 103 const std::vector<autofill::AutofillProfile*> billing_addresses_; |
181 std::unique_ptr<AutofillPaymentInstrument> autofill_instrument_; | 104 std::unique_ptr<AutofillPaymentInstrument> autofill_instrument_; |
182 }; | 105 }; |
183 | 106 |
184 // Test generating a PaymentResponse. | 107 // Test generating a PaymentResponse. |
185 TEST_F(PaymentResponseHelperTest, GeneratePaymentResponse_SupportedMethod) { | 108 TEST_F(PaymentResponseHelperTest, GeneratePaymentResponse_SupportedMethod) { |
186 // Default options (no shipping, no contact info). | 109 // Default options (no shipping, no contact info). |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 | 257 |
335 PaymentResponseHelper helper("en-US", spec(), test_instrument(), | 258 PaymentResponseHelper helper("en-US", spec(), test_instrument(), |
336 test_payment_request_delegate(), test_address(), | 259 test_payment_request_delegate(), test_address(), |
337 test_address(), this); | 260 test_address(), this); |
338 | 261 |
339 // Check that the phone was formatted. | 262 // Check that the phone was formatted. |
340 EXPECT_EQ("+15151231234", response()->payer_phone.value()); | 263 EXPECT_EQ("+15151231234", response()->payer_phone.value()); |
341 } | 264 } |
342 | 265 |
343 } // namespace payments | 266 } // namespace payments |
OLD | NEW |