| Index: chrome/browser/ui/views/payments/payment_request_payment_response_browsertest.cc
|
| diff --git a/chrome/browser/ui/views/payments/payment_request_payment_response_browsertest.cc b/chrome/browser/ui/views/payments/payment_request_payment_response_browsertest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..78070a9c18c81fc1aa07a31e5c9708757385d451
|
| --- /dev/null
|
| +++ b/chrome/browser/ui/views/payments/payment_request_payment_response_browsertest.cc
|
| @@ -0,0 +1,192 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/macros.h"
|
| +#include "base/strings/utf_string_conversions.h"
|
| +#include "chrome/browser/ui/browser_commands.h"
|
| +#include "chrome/browser/ui/views/payments/payment_request_browsertest_base.h"
|
| +#include "chrome/browser/ui/views/payments/payment_request_dialog_view_ids.h"
|
| +#include "chrome/test/base/ui_test_utils.h"
|
| +#include "components/autofill/core/browser/autofill_profile.h"
|
| +#include "components/autofill/core/browser/autofill_test_utils.h"
|
| +#include "components/autofill/core/browser/credit_card.h"
|
| +#include "components/web_modal/web_contents_modal_dialog_manager.h"
|
| +#include "content/public/test/browser_test_utils.h"
|
| +
|
| +namespace payments {
|
| +
|
| +class PaymentRequestPaymentResponseAutofillPaymentInstrumentTest
|
| + : public PaymentRequestBrowserTestBase {
|
| + protected:
|
| + PaymentRequestPaymentResponseAutofillPaymentInstrumentTest()
|
| + : PaymentRequestBrowserTestBase(
|
| + "/payment_request_no_shipping_test.html") {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(
|
| + PaymentRequestPaymentResponseAutofillPaymentInstrumentTest);
|
| +};
|
| +
|
| +// Tests that the PaymentResponse contains all the required fields for an
|
| +// Autofill payment instrument.
|
| +IN_PROC_BROWSER_TEST_F(
|
| + PaymentRequestPaymentResponseAutofillPaymentInstrumentTest,
|
| + TestPaymentResponse) {
|
| + // Setup a credit card with an associated billing address.
|
| + autofill::AutofillProfile billing_address = autofill::test::GetFullProfile();
|
| + AddAutofillProfile(billing_address);
|
| + autofill::CreditCard card = autofill::test::GetCreditCard();
|
| + card.set_billing_address_id(billing_address.guid());
|
| + AddCreditCard(card); // Visa.
|
| +
|
| + // Complete the Payment Request.
|
| + InvokePaymentRequestUI();
|
| + ResetEventObserver(DialogEvent::DIALOG_CLOSED);
|
| + ClickOnDialogViewAndWait(DialogViewID::PAY_BUTTON);
|
| +
|
| + // Test that the card details were sent to the merchant.
|
| + ExpectBodyContains(std::vector<base::string16>{
|
| + base::UTF8ToUTF16("\"cardNumber\": \"4111111111111111\""),
|
| + base::UTF8ToUTF16("\"cardSecurityCode\": \"123\""),
|
| + base::UTF8ToUTF16("\"cardholderName\": \"Test User\""),
|
| + base::UTF8ToUTF16("\"expiryMonth\": \"11\""),
|
| + base::UTF8ToUTF16("\"expiryYear\": \"2017\"")});
|
| +
|
| + // Test that the billing address was sent to the merchant.
|
| + ExpectBodyContains(std::vector<base::string16>{
|
| + base::UTF8ToUTF16("\"billingAddress\": {"),
|
| + base::UTF8ToUTF16("\"666 Erebus St.\""), base::UTF8ToUTF16("\"Apt 8\""),
|
| + base::UTF8ToUTF16("\"city\": \"Elysium\""),
|
| + base::UTF8ToUTF16("\"country\": \"US\""),
|
| + base::UTF8ToUTF16("\"organization\": \"Underworld\""),
|
| + base::UTF8ToUTF16("\"phone\": \"16502111111\""),
|
| + base::UTF8ToUTF16("\"postalCode\": \"91111\""),
|
| + base::UTF8ToUTF16("\"recipient\": \"John H. Doe\""),
|
| + base::UTF8ToUTF16("\"region\": \"CA\"")});
|
| +}
|
| +
|
| +class PaymentRequestPaymentResponseShippingAddressTest
|
| + : public PaymentRequestBrowserTestBase {
|
| + protected:
|
| + PaymentRequestPaymentResponseShippingAddressTest()
|
| + : PaymentRequestBrowserTestBase(
|
| + "/payment_request_free_shipping_test.html") {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(PaymentRequestPaymentResponseShippingAddressTest);
|
| +};
|
| +
|
| +// Tests that the PaymentResponse contains all the required fields for a
|
| +// shipping address and shipping option.
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestPaymentResponseShippingAddressTest,
|
| + TestPaymentResponse) {
|
| + // Create a billing address and a card that uses it.
|
| + autofill::AutofillProfile billing_address = autofill::test::GetFullProfile();
|
| + AddAutofillProfile(billing_address);
|
| + autofill::CreditCard card = autofill::test::GetCreditCard();
|
| + card.set_billing_address_id(billing_address.guid());
|
| + AddCreditCard(card); // Visa.
|
| +
|
| + // Create a shipping address with a higher frecency score, so that it is
|
| + // selected as the defautl shipping address.
|
| + autofill::AutofillProfile shipping_address =
|
| + autofill::test::GetFullProfile2();
|
| + shipping_address.set_use_count(2000);
|
| + AddAutofillProfile(shipping_address);
|
| +
|
| + // Complete the Payment Request.
|
| + InvokePaymentRequestUI();
|
| + ResetEventObserver(DialogEvent::DIALOG_CLOSED);
|
| + ClickOnDialogViewAndWait(DialogViewID::PAY_BUTTON);
|
| +
|
| + // Test that the shipping address was sent to the merchant.
|
| + ExpectBodyContains(std::vector<base::string16>{
|
| + base::UTF8ToUTF16("\"country\": \"US\""),
|
| + base::UTF8ToUTF16("\"123 Main Street\""), base::UTF8ToUTF16("\"Unit 1\""),
|
| + base::UTF8ToUTF16("\"region\": \"MI\""),
|
| + base::UTF8ToUTF16("\"city\": \"Greensdale\""),
|
| + base::UTF8ToUTF16("\"dependentLocality\": \"\""),
|
| + base::UTF8ToUTF16("\"postalCode\": \"48838\""),
|
| + base::UTF8ToUTF16("\"sortingCode\": \"\""),
|
| + base::UTF8ToUTF16("\"languageCode\": \"\""),
|
| + base::UTF8ToUTF16("\"organization\": \"ACME\""),
|
| + base::UTF8ToUTF16("\"recipient\": \"Jane A. Smith\""),
|
| + base::UTF8ToUTF16("\"phone\": \"13105557889\"")});
|
| +
|
| + // Test that the shipping option was sent to the merchant.
|
| + ExpectBodyContains(std::vector<base::string16>{
|
| + base::UTF8ToUTF16("\"shippingOption\": \"freeShippingOption\"")});
|
| +}
|
| +
|
| +class PaymentRequestPaymentResponseAllContactDetailsTest
|
| + : public PaymentRequestBrowserTestBase {
|
| + protected:
|
| + PaymentRequestPaymentResponseAllContactDetailsTest()
|
| + : PaymentRequestBrowserTestBase(
|
| + "/payment_request_contact_details_and_free_shipping_test.html") {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(PaymentRequestPaymentResponseAllContactDetailsTest);
|
| +};
|
| +
|
| +// Tests that the PaymentResponse contains all the required fields for contact
|
| +// details when all three details are requested.
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestPaymentResponseAllContactDetailsTest,
|
| + TestPaymentResponse) {
|
| + // Setup a credit card with an associated billing address.
|
| + autofill::AutofillProfile billing_address = autofill::test::GetFullProfile();
|
| + AddAutofillProfile(billing_address);
|
| + autofill::CreditCard card = autofill::test::GetCreditCard();
|
| + card.set_billing_address_id(billing_address.guid());
|
| + AddCreditCard(card); // Visa.
|
| +
|
| + // Complete the Payment Request.
|
| + InvokePaymentRequestUI();
|
| + ResetEventObserver(DialogEvent::DIALOG_CLOSED);
|
| + ClickOnDialogViewAndWait(DialogViewID::PAY_BUTTON);
|
| +
|
| + // Test that the contact details were sent to the merchant.
|
| + ExpectBodyContains(std::vector<base::string16>{
|
| + base::UTF8ToUTF16("\"payerName\": \"John H. Doe\""),
|
| + base::UTF8ToUTF16("\"payerEmail\": \"johndoe@hades.com\""),
|
| + base::UTF8ToUTF16("\"payerPhone\": \"16502111111\"")});
|
| +}
|
| +
|
| +class PaymentRequestPaymentResponseOneContactDetailTest
|
| + : public PaymentRequestBrowserTestBase {
|
| + protected:
|
| + PaymentRequestPaymentResponseOneContactDetailTest()
|
| + : PaymentRequestBrowserTestBase(
|
| + "/payment_request_email_and_free_shipping_test.html") {}
|
| +
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(PaymentRequestPaymentResponseOneContactDetailTest);
|
| +};
|
| +
|
| +// Tests that the PaymentResponse contains all the required fields for contact
|
| +// details when all ont detail is requested.
|
| +IN_PROC_BROWSER_TEST_F(PaymentRequestPaymentResponseOneContactDetailTest,
|
| + TestPaymentResponse) {
|
| + // Setup a credit card with an associated billing address.
|
| + autofill::AutofillProfile billing_address = autofill::test::GetFullProfile();
|
| + AddAutofillProfile(billing_address);
|
| + autofill::CreditCard card = autofill::test::GetCreditCard();
|
| + card.set_billing_address_id(billing_address.guid());
|
| + AddCreditCard(card); // Visa.
|
| +
|
| + // Complete the Payment Request.
|
| + InvokePaymentRequestUI();
|
| + ResetEventObserver(DialogEvent::DIALOG_CLOSED);
|
| + ClickOnDialogViewAndWait(DialogViewID::PAY_BUTTON);
|
| +
|
| + // Test that the contact details were sent to the merchant.
|
| + ExpectBodyContains(std::vector<base::string16>{
|
| + base::UTF8ToUTF16("\"payerName\": null"),
|
| + base::UTF8ToUTF16("\"payerEmail\": \"johndoe@hades.com\""),
|
| + base::UTF8ToUTF16("\"payerPhone\": null")});
|
| +}
|
| +
|
| +} // namespace payments
|
|
|