| 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 class FakeAddressNormalizer : public AddressNormalizer { | |
| 28 public: | |
| 29 FakeAddressNormalizer() {} | |
| 30 | |
| 31 void LoadRulesForRegion(const std::string& region_code) override {} | |
| 32 | |
| 33 bool AreRulesLoadedForRegion(const std::string& region_code) override { | |
| 34 return true; | |
| 35 } | |
| 36 | |
| 37 void StartAddressNormalization( | |
| 38 const autofill::AutofillProfile& profile, | |
| 39 const std::string& region_code, | |
| 40 int timeout_seconds, | |
| 41 AddressNormalizer::Delegate* requester) override { | |
| 42 requester->OnAddressNormalized(profile); | |
| 43 } | |
| 44 | |
| 45 void OnAddressValidationRulesLoaded(const std::string& region_code, | |
| 46 bool success) override {} | |
| 47 }; | |
| 48 | |
| 49 class FakePaymentRequestDelegate : public PaymentRequestDelegate { | |
| 50 public: | |
| 51 FakePaymentRequestDelegate( | |
| 52 autofill::PersonalDataManager* personal_data_manager) | |
| 53 : personal_data_manager_(personal_data_manager), | |
| 54 locale_("en-US"), | |
| 55 last_committed_url_("https://shop.com") {} | |
| 56 void ShowDialog(PaymentRequest* request) override {} | |
| 57 | |
| 58 void CloseDialog() override {} | |
| 59 | |
| 60 void ShowErrorMessage() override {} | |
| 61 | |
| 62 autofill::PersonalDataManager* GetPersonalDataManager() override { | |
| 63 return personal_data_manager_; | |
| 64 } | |
| 65 | |
| 66 const std::string& GetApplicationLocale() const override { return locale_; } | |
| 67 | |
| 68 bool IsIncognito() const override { return false; } | |
| 69 | |
| 70 bool IsSslCertificateValid() override { return true; } | |
| 71 | |
| 72 const GURL& GetLastCommittedURL() const override { | |
| 73 return last_committed_url_; | |
| 74 } | |
| 75 | |
| 76 void DoFullCardRequest( | |
| 77 const autofill::CreditCard& credit_card, | |
| 78 base::WeakPtr<autofill::payments::FullCardRequest::ResultDelegate> | |
| 79 result_delegate) override { | |
| 80 result_delegate->OnFullCardRequestSucceeded(credit_card, | |
| 81 base::ASCIIToUTF16("123")); | |
| 82 } | |
| 83 | |
| 84 AddressNormalizer* GetAddressNormalizer() override { | |
| 85 return &address_normalizer_; | |
| 86 } | |
| 87 | |
| 88 autofill::RegionDataLoader* GetRegionDataLoader() override { return nullptr; } | |
| 89 | |
| 90 private: | |
| 91 autofill::PersonalDataManager* personal_data_manager_; | |
| 92 std::string locale_; | |
| 93 const GURL last_committed_url_; | |
| 94 FakeAddressNormalizer address_normalizer_; | |
| 95 DISALLOW_COPY_AND_ASSIGN(FakePaymentRequestDelegate); | |
| 96 }; | |
| 97 | |
| 98 class PaymentResponseHelperTest : public testing::Test, | 26 class PaymentResponseHelperTest : public testing::Test, |
| 99 public PaymentResponseHelper::Delegate { | 27 public PaymentResponseHelper::Delegate { |
| 100 protected: | 28 protected: |
| 101 PaymentResponseHelperTest() | 29 PaymentResponseHelperTest() |
| 102 : payment_request_delegate_(&test_personal_data_manager_), | 30 : test_payment_request_delegate_(&test_personal_data_manager_), |
| 103 address_(autofill::test::GetFullProfile()), | 31 address_(autofill::test::GetFullProfile()), |
| 104 billing_addresses_({&address_}) { | 32 billing_addresses_({&address_}) { |
| 105 test_personal_data_manager_.AddTestingProfile(&address_); | 33 test_personal_data_manager_.AddTestingProfile(&address_); |
| 106 | 34 |
| 107 // Setup the autofill payment instrument. | 35 // Setup the autofill payment instrument. |
| 108 autofill::CreditCard visa_card = autofill::test::GetCreditCard(); | 36 autofill::CreditCard visa_card = autofill::test::GetCreditCard(); |
| 109 visa_card.set_billing_address_id(address_.guid()); | 37 visa_card.set_billing_address_id(address_.guid()); |
| 110 visa_card.set_use_count(5u); | 38 visa_card.set_use_count(5u); |
| 111 autofill_instrument_ = base::MakeUnique<AutofillPaymentInstrument>( | 39 autofill_instrument_ = base::MakeUnique<AutofillPaymentInstrument>( |
| 112 "visa", visa_card, billing_addresses_, "en-US", | 40 "visa", visa_card, billing_addresses_, "en-US", |
| 113 &payment_request_delegate_); | 41 &test_payment_request_delegate_); |
| 114 } | 42 } |
| 115 ~PaymentResponseHelperTest() override {} | 43 ~PaymentResponseHelperTest() override {} |
| 116 | 44 |
| 117 // PaymentRequestState::Delegate: | 45 // PaymentRequestState::Delegate: |
| 118 void OnPaymentResponseReady(mojom::PaymentResponsePtr response) override { | 46 void OnPaymentResponseReady(mojom::PaymentResponsePtr response) override { |
| 119 payment_response_ = std::move(response); | 47 payment_response_ = std::move(response); |
| 120 }; | 48 }; |
| 121 | 49 |
| 122 // Convenience method to create a PaymentRequestSpec with specified |details| | 50 // Convenience method to create a PaymentRequestSpec with specified |details| |
| 123 // and |method_data|. | 51 // and |method_data|. |
| (...skipping 30 matching lines...) Expand all Loading... |
| 154 entry->supported_methods.push_back("visa"); | 82 entry->supported_methods.push_back("visa"); |
| 155 method_data.push_back(std::move(entry)); | 83 method_data.push_back(std::move(entry)); |
| 156 return method_data; | 84 return method_data; |
| 157 } | 85 } |
| 158 | 86 |
| 159 PaymentRequestSpec* spec() { return spec_.get(); } | 87 PaymentRequestSpec* spec() { return spec_.get(); } |
| 160 const mojom::PaymentResponsePtr& response() { return payment_response_; } | 88 const mojom::PaymentResponsePtr& response() { return payment_response_; } |
| 161 autofill::AutofillProfile* test_address() { return &address_; } | 89 autofill::AutofillProfile* test_address() { return &address_; } |
| 162 PaymentInstrument* test_instrument() { return autofill_instrument_.get(); } | 90 PaymentInstrument* test_instrument() { return autofill_instrument_.get(); } |
| 163 PaymentRequestDelegate* test_payment_request_delegate() { | 91 PaymentRequestDelegate* test_payment_request_delegate() { |
| 164 return &payment_request_delegate_; | 92 return &test_payment_request_delegate_; |
| 165 } | 93 } |
| 166 | 94 |
| 167 private: | 95 private: |
| 168 std::unique_ptr<PaymentRequestSpec> spec_; | 96 std::unique_ptr<PaymentRequestSpec> spec_; |
| 169 mojom::PaymentResponsePtr payment_response_; | 97 mojom::PaymentResponsePtr payment_response_; |
| 170 autofill::TestPersonalDataManager test_personal_data_manager_; | 98 autofill::TestPersonalDataManager test_personal_data_manager_; |
| 171 FakePaymentRequestDelegate payment_request_delegate_; | 99 TestPaymentRequestDelegate test_payment_request_delegate_; |
| 172 | 100 |
| 173 // Test data. | 101 // Test data. |
| 174 autofill::AutofillProfile address_; | 102 autofill::AutofillProfile address_; |
| 175 const std::vector<autofill::AutofillProfile*> billing_addresses_; | 103 const std::vector<autofill::AutofillProfile*> billing_addresses_; |
| 176 std::unique_ptr<AutofillPaymentInstrument> autofill_instrument_; | 104 std::unique_ptr<AutofillPaymentInstrument> autofill_instrument_; |
| 177 }; | 105 }; |
| 178 | 106 |
| 179 // Test generating a PaymentResponse. | 107 // Test generating a PaymentResponse. |
| 180 TEST_F(PaymentResponseHelperTest, GeneratePaymentResponse_SupportedMethod) { | 108 TEST_F(PaymentResponseHelperTest, GeneratePaymentResponse_SupportedMethod) { |
| 181 // 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... |
| 329 | 257 |
| 330 PaymentResponseHelper helper("en-US", spec(), test_instrument(), | 258 PaymentResponseHelper helper("en-US", spec(), test_instrument(), |
| 331 test_payment_request_delegate(), test_address(), | 259 test_payment_request_delegate(), test_address(), |
| 332 test_address(), this); | 260 test_address(), this); |
| 333 | 261 |
| 334 // Check that the phone was formatted. | 262 // Check that the phone was formatted. |
| 335 EXPECT_EQ("+15151231234", response()->payer_phone.value()); | 263 EXPECT_EQ("+15151231234", response()->payer_phone.value()); |
| 336 } | 264 } |
| 337 | 265 |
| 338 } // namespace payments | 266 } // namespace payments |
| OLD | NEW |