blob: 50a41894b7362696c19d3418fcee9355915f78cb [file] [log] [blame]
// 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 "ios/chrome/browser/payments/payment_request_util.h"
#include "base/json/json_writer.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "components/payments/core/basic_card_response.h"
#include "components/payments/core/payment_address.h"
#include "components/payments/core/payment_response.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace payment_request_util {
class PaymentRequestUtilTest : public testing::Test {
protected:
PaymentRequestUtilTest() {}
};
// Tests that serializing a default PaymentResponse yields the expected result.
TEST_F(PaymentRequestUtilTest,
PaymentResponseToDictionaryValue_EmptyResponseDictionary) {
base::DictionaryValue expected_value;
expected_value.SetString("requestId", "");
expected_value.SetString("methodName", "");
expected_value.Set("details", std::make_unique<base::Value>());
expected_value.Set("shippingAddress", std::make_unique<base::Value>());
expected_value.SetString("shippingOption", "");
expected_value.SetString("payerName", "");
expected_value.SetString("payerEmail", "");
expected_value.SetString("payerPhone", "");
payments::PaymentResponse payment_response;
EXPECT_TRUE(expected_value.Equals(
PaymentResponseToDictionaryValue(payment_response).get()));
}
// Tests that serializing a populated PaymentResponse yields the expected
// result.
TEST_F(PaymentRequestUtilTest,
PaymentResponseToDictionaryValue_PopulatedResponseDictionary) {
base::DictionaryValue expected_value;
auto details = std::make_unique<base::DictionaryValue>();
details->SetString("cardNumber", "1111-1111-1111-1111");
details->SetString("cardholderName", "Jon Doe");
details->SetString("expiryMonth", "02");
details->SetString("expiryYear", "2090");
details->SetString("cardSecurityCode", "111");
auto billing_address = std::make_unique<base::DictionaryValue>();
billing_address->SetString("country", "");
billing_address->Set("addressLine", std::make_unique<base::ListValue>());
billing_address->SetString("region", "");
billing_address->SetString("dependentLocality", "");
billing_address->SetString("city", "");
billing_address->SetString("postalCode", "90210");
billing_address->SetString("languageCode", "");
billing_address->SetString("sortingCode", "");
billing_address->SetString("organization", "");
billing_address->SetString("recipient", "");
billing_address->SetString("phone", "");
details->Set("billingAddress", std::move(billing_address));
expected_value.Set("details", std::move(details));
expected_value.SetString("requestId", "12345");
expected_value.SetString("methodName", "American Express");
auto shipping_address = std::make_unique<base::DictionaryValue>();
shipping_address->SetString("country", "");
shipping_address->Set("addressLine", std::make_unique<base::ListValue>());
shipping_address->SetString("region", "");
shipping_address->SetString("dependentLocality", "");
shipping_address->SetString("city", "");
shipping_address->SetString("postalCode", "94115");
shipping_address->SetString("languageCode", "");
shipping_address->SetString("sortingCode", "");
shipping_address->SetString("organization", "");
shipping_address->SetString("recipient", "");
shipping_address->SetString("phone", "");
expected_value.Set("shippingAddress", std::move(shipping_address));
expected_value.SetString("shippingOption", "666");
expected_value.SetString("payerName", "Jane Doe");
expected_value.SetString("payerEmail", "jane@example.com");
expected_value.SetString("payerPhone", "1234-567-890");
payments::PaymentResponse payment_response;
payment_response.payment_request_id = "12345";
payment_response.method_name = "American Express";
payments::BasicCardResponse payment_response_details;
payment_response_details.card_number =
base::ASCIIToUTF16("1111-1111-1111-1111");
payment_response_details.cardholder_name = base::ASCIIToUTF16("Jon Doe");
payment_response_details.expiry_month = base::ASCIIToUTF16("02");
payment_response_details.expiry_year = base::ASCIIToUTF16("2090");
payment_response_details.card_security_code = base::ASCIIToUTF16("111");
payment_response_details.billing_address.postal_code =
base::ASCIIToUTF16("90210");
std::unique_ptr<base::DictionaryValue> response_value =
payment_response_details.ToDictionaryValue();
std::string payment_response_stringified_details;
base::JSONWriter::Write(*response_value,
&payment_response_stringified_details);
payment_response.details = payment_response_stringified_details;
payment_response.shipping_address =
std::make_unique<payments::PaymentAddress>();
payment_response.shipping_address->postal_code = base::ASCIIToUTF16("94115");
payment_response.shipping_option = "666";
payment_response.payer_name = base::ASCIIToUTF16("Jane Doe");
payment_response.payer_email = base::ASCIIToUTF16("jane@example.com");
payment_response.payer_phone = base::ASCIIToUTF16("1234-567-890");
EXPECT_TRUE(expected_value.Equals(
PaymentResponseToDictionaryValue(payment_response).get()));
}
} // namespace payment_request_util