diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/payments/skip_to_gpay_utils_test.cc')
-rw-r--r-- | chromium/third_party/blink/renderer/modules/payments/skip_to_gpay_utils_test.cc | 54 |
1 files changed, 51 insertions, 3 deletions
diff --git a/chromium/third_party/blink/renderer/modules/payments/skip_to_gpay_utils_test.cc b/chromium/third_party/blink/renderer/modules/payments/skip_to_gpay_utils_test.cc index c53660dd0b8..0d56ae8025d 100644 --- a/chromium/third_party/blink/renderer/modules/payments/skip_to_gpay_utils_test.cc +++ b/chromium/third_party/blink/renderer/modules/payments/skip_to_gpay_utils_test.cc @@ -1,3 +1,7 @@ +// Copyright 2019 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 "third_party/blink/renderer/modules/payments/skip_to_gpay_utils.h" #include <memory> @@ -62,12 +66,13 @@ TEST(SkipToGPayUtilsTest, NothingRequested) { } } -TEST(SkipToGPayUtilsTest, InvalidInputData_MissingApiVersion) { +TEST(SkipToGPayUtilsTest, MissingApiVersionConsideredV1) { auto* options = PaymentOptions::Create(); PaymentMethodDataPtr output = MakeTestPaymentMethodData(); + output->stringified_data = "{}"; - ASSERT_FALSE(SkipToGPayUtils::PatchPaymentMethodData(*options, output)); - EXPECT_TRUE(output->gpay_bridge_data.is_null()); + ASSERT_TRUE(SkipToGPayUtils::PatchPaymentMethodData(*options, output)); + EXPECT_EQ("{}", output->gpay_bridge_data->stringified_data); } TEST(SkipToGPayUtilsTest, InvalidInputData_NotJSON) { @@ -132,6 +137,49 @@ TEST(SkipToGPayUtilsTest, RequestEverything) { } } +TEST(SkipToGPayUtilsTest, RequestPhoneOnly) { + auto* options = PaymentOptions::Create(); + options->setRequestPayerPhone(true); + + { + PaymentMethodDataPtr output = MakeTestPaymentMethodData(); + output->stringified_data = kInputDataV1; + + ASSERT_TRUE(SkipToGPayUtils::PatchPaymentMethodData(*options, output)); + + EXPECT_EQ( + "{\"apiVersion\":1,\"cardRequirements\":{\"billingAddressRequired\":" + "true},\"phoneNumberRequired\":true}", + output->gpay_bridge_data->stringified_data); + EXPECT_TRUE(output->gpay_bridge_data->phone_requested); + // Phone number can only be requested as part of billing address, which + // implies that name will be requested too. + EXPECT_TRUE(output->gpay_bridge_data->name_requested); + EXPECT_FALSE(output->gpay_bridge_data->email_requested); + EXPECT_FALSE(output->gpay_bridge_data->shipping_requested); + EXPECT_EQ(kInputDataV1, output->stringified_data); + } + { + PaymentMethodDataPtr output = MakeTestPaymentMethodData(); + output->stringified_data = kInputDataV2; + + ASSERT_TRUE(SkipToGPayUtils::PatchPaymentMethodData(*options, output)); + + EXPECT_EQ( + "{\"apiVersion\":2,\"apiVersionMinor\":0,\"allowedPaymentMethods\":[{" + "\"type\":\"CARD\",\"parameters\":{\"billingAddressRequired\":true," + "\"billingAddressParameters\":{\"phoneNumberRequired\":true}}}]}", + output->gpay_bridge_data->stringified_data); + EXPECT_TRUE(output->gpay_bridge_data->phone_requested); + // Phone number can only be requested as part of billing address, which + // implies that name will be requested too. + EXPECT_TRUE(output->gpay_bridge_data->name_requested); + EXPECT_FALSE(output->gpay_bridge_data->email_requested); + EXPECT_FALSE(output->gpay_bridge_data->shipping_requested); + EXPECT_EQ(kInputDataV2, output->stringified_data); + } +} + TEST(SkipToGPayUtilsTest, ShippingAlreadyRequested) { auto* options = PaymentOptions::Create(); options->setRequestPayerName(true); |