summaryrefslogtreecommitdiffstats
path: root/components/autofill/content/browser/wallet/wallet_address_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'components/autofill/content/browser/wallet/wallet_address_unittest.cc')
-rw-r--r--components/autofill/content/browser/wallet/wallet_address_unittest.cc381
1 files changed, 381 insertions, 0 deletions
diff --git a/components/autofill/content/browser/wallet/wallet_address_unittest.cc b/components/autofill/content/browser/wallet/wallet_address_unittest.cc
new file mode 100644
index 0000000..924037c
--- /dev/null
+++ b/components/autofill/content/browser/wallet/wallet_address_unittest.cc
@@ -0,0 +1,381 @@
+// Copyright 2013 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 "base/json/json_reader.h"
+#include "base/logging.h"
+#include "base/memory/scoped_ptr.h"
+#include "base/strings/utf_string_conversions.h"
+#include "base/values.h"
+#include "components/autofill/content/browser/wallet/wallet_address.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+const char kAddressMissingObjectId[] =
+ "{"
+ " \"phone_number\":\"phone_number\","
+ " \"postal_address\":"
+ " {"
+ " \"recipient_name\":\"recipient_name\","
+ " \"address_line\":"
+ " ["
+ " \"address_line_1\","
+ " \"address_line_2\""
+ " ],"
+ " \"locality_name\":\"locality_name\","
+ " \"administrative_area_name\":\"administrative_area_name\","
+ " \"postal_code_number\":\"postal_code_number\","
+ " \"country_name_code\":\"country_name_code\""
+ " }"
+ "}";
+
+const char kAddressMissingCountryNameCode[] =
+ "{"
+ " \"id\":\"id\","
+ " \"phone_number\":\"phone_number\","
+ " \"postal_address\":"
+ " {"
+ " \"recipient_name\":\"recipient_name\","
+ " \"address_line\":"
+ " ["
+ " \"address_line_1\","
+ " \"address_line_2\""
+ " ],"
+ " \"locality_name\":\"locality_name\","
+ " \"administrative_area_name\":\"administrative_area_name\","
+ " \"postal_code_number\":\"postal_code_number\""
+ " }"
+ "}";
+
+const char kAddressMissingRecipientName[] =
+ "{"
+ " \"id\":\"id\","
+ " \"phone_number\":\"phone_number\","
+ " \"postal_address\":"
+ " {"
+ " \"address_line\":"
+ " ["
+ " \"address_line_1\","
+ " \"address_line_2\""
+ " ],"
+ " \"locality_name\":\"locality_name\","
+ " \"administrative_area_name\":\"administrative_area_name\","
+ " \"postal_code_number\":\"postal_code_number\","
+ " \"country_name_code\":\"country_name_code\""
+ " }"
+ "}";
+
+const char kAddressMissingPostalCodeNumber[] =
+ "{"
+ " \"id\":\"id\","
+ " \"phone_number\":\"phone_number\","
+ " \"postal_address\":"
+ " {"
+ " \"recipient_name\":\"recipient_name\","
+ " \"address_line\":"
+ " ["
+ " \"address_line_1\","
+ " \"address_line_2\""
+ " ],"
+ " \"locality_name\":\"locality_name\","
+ " \"administrative_area_name\":\"administrative_area_name\","
+ " \"country_name_code\":\"country_name_code\""
+ " }"
+ "}";
+
+const char kValidAddress[] =
+ "{"
+ " \"id\":\"id\","
+ " \"phone_number\":\"phone_number\","
+ " \"is_minimal_address\":true,"
+ " \"postal_address\":"
+ " {"
+ " \"recipient_name\":\"recipient_name\","
+ " \"address_line\":"
+ " ["
+ " \"address_line_1\","
+ " \"address_line_2\""
+ " ],"
+ " \"locality_name\":\"locality_name\","
+ " \"administrative_area_name\":\"administrative_area_name\","
+ " \"country_name_code\":\"country_name_code\","
+ " \"postal_code_number\":\"postal_code_number\""
+ " }"
+ "}";
+
+const char kClientAddressMissingCountryCode[] =
+ "{"
+ " \"name\":\"name\","
+ " \"address1\":\"address1\","
+ " \"address2\":\"address2\","
+ " \"city\":\"city\","
+ " \"state\":\"state\","
+ " \"postal_code\":\"postal_code\","
+ " \"phone_number\":\"phone_number\""
+ "}";
+
+const char kClientAddressMissingPostalCode[] =
+ "{"
+ " \"name\":\"name\","
+ " \"address1\":\"address1\","
+ " \"address2\":\"address2\","
+ " \"city\":\"city\","
+ " \"state\":\"state\","
+ " \"phone_number\":\"phone_number\","
+ " \"country_code\":\"country_code\""
+ "}";
+
+const char kClientAddressMissingName[] =
+ "{"
+ " \"address1\":\"address1\","
+ " \"address2\":\"address2\","
+ " \"city\":\"city\","
+ " \"state\":\"state\","
+ " \"postal_code\":\"postal_code\","
+ " \"phone_number\":\"phone_number\","
+ " \"country_code\":\"country_code\""
+ "}";
+
+const char kClientValidAddress[] =
+ "{"
+ " \"name\":\"name\","
+ " \"address1\":\"address1\","
+ " \"address2\":\"address2\","
+ " \"city\":\"city\","
+ " \"state\":\"state\","
+ " \"postal_code\":\"postal_code\","
+ " \"phone_number\":\"phone_number\","
+ " \"country_code\":\"country_code\","
+ " \"type\":\"FULL\""
+ "}";
+
+} // anonymous namespace
+
+namespace autofill {
+namespace wallet {
+
+class WalletAddressTest : public testing::Test {
+ public:
+ WalletAddressTest() {}
+ protected:
+ void SetUpDictionary(const std::string& json) {
+ scoped_ptr<Value> value(base::JSONReader::Read(json));
+ DCHECK(value.get());
+ DCHECK(value->IsType(Value::TYPE_DICTIONARY));
+ dict_.reset(static_cast<DictionaryValue*>(value.release()));
+ }
+ scoped_ptr<const DictionaryValue> dict_;
+};
+
+TEST_F(WalletAddressTest, AddressEqualsIgnoreID) {
+ Address address1("country_name_code",
+ ASCIIToUTF16("recipient_name"),
+ ASCIIToUTF16("address_line_1"),
+ ASCIIToUTF16("address_line_2"),
+ ASCIIToUTF16("locality_name"),
+ ASCIIToUTF16("administrative_area_name"),
+ ASCIIToUTF16("postal_code_number"),
+ ASCIIToUTF16("phone_number"),
+ "id1");
+ // Same as address1, only id is different.
+ Address address2("country_name_code",
+ ASCIIToUTF16("recipient_name"),
+ ASCIIToUTF16("address_line_1"),
+ ASCIIToUTF16("address_line_2"),
+ ASCIIToUTF16("locality_name"),
+ ASCIIToUTF16("administrative_area_name"),
+ ASCIIToUTF16("postal_code_number"),
+ ASCIIToUTF16("phone_number"),
+ "id2");
+ // Has same id as address1, but name is different.
+ Address address3("country_name_code",
+ ASCIIToUTF16("a_different_name"),
+ ASCIIToUTF16("address_line_1"),
+ ASCIIToUTF16("address_line_2"),
+ ASCIIToUTF16("locality_name"),
+ ASCIIToUTF16("administrative_area_name"),
+ ASCIIToUTF16("postal_code_number"),
+ ASCIIToUTF16("phone_number"),
+ "id1");
+ // Same as address1, but no id.
+ Address address4("country_name_code",
+ ASCIIToUTF16("recipient_name"),
+ ASCIIToUTF16("address_line_1"),
+ ASCIIToUTF16("address_line_2"),
+ ASCIIToUTF16("locality_name"),
+ ASCIIToUTF16("administrative_area_name"),
+ ASCIIToUTF16("postal_code_number"),
+ ASCIIToUTF16("phone_number"),
+ std::string());
+
+ // Compare the address has id field to itself.
+ EXPECT_EQ(address1, address1);
+ EXPECT_TRUE(address1.EqualsIgnoreID(address1));
+
+ // Compare the address has no id field to itself
+ EXPECT_EQ(address4, address4);
+ EXPECT_TRUE(address4.EqualsIgnoreID(address4));
+
+ // Compare two addresses with different id.
+ EXPECT_NE(address1, address2);
+ EXPECT_TRUE(address1.EqualsIgnoreID(address2));
+ EXPECT_TRUE(address2.EqualsIgnoreID(address1));
+
+ // Compare two different addresses.
+ EXPECT_NE(address1, address3);
+ EXPECT_FALSE(address1.EqualsIgnoreID(address3));
+ EXPECT_FALSE(address3.EqualsIgnoreID(address1));
+
+ // Compare two same addresses, one has id, the other doesn't.
+ EXPECT_NE(address1, address4);
+ EXPECT_TRUE(address1.EqualsIgnoreID(address4));
+ EXPECT_TRUE(address4.EqualsIgnoreID(address1));
+}
+
+TEST_F(WalletAddressTest, CreateAddressMissingObjectId) {
+ SetUpDictionary(kAddressMissingObjectId);
+ Address address("country_name_code",
+ ASCIIToUTF16("recipient_name"),
+ ASCIIToUTF16("address_line_1"),
+ ASCIIToUTF16("address_line_2"),
+ ASCIIToUTF16("locality_name"),
+ ASCIIToUTF16("administrative_area_name"),
+ ASCIIToUTF16("postal_code_number"),
+ ASCIIToUTF16("phone_number"),
+ std::string());
+ EXPECT_EQ(address, *Address::CreateAddress(*dict_));
+}
+
+TEST_F(WalletAddressTest, CreateAddressWithIDMissingObjectId) {
+ SetUpDictionary(kAddressMissingObjectId);
+ EXPECT_EQ(NULL, Address::CreateAddressWithID(*dict_).get());
+}
+
+TEST_F(WalletAddressTest, CreateAddressMissingCountryNameCode) {
+ SetUpDictionary(kAddressMissingCountryNameCode);
+ EXPECT_EQ(NULL, Address::CreateAddress(*dict_).get());
+ EXPECT_EQ(NULL, Address::CreateAddressWithID(*dict_).get());
+}
+
+TEST_F(WalletAddressTest, CreateAddressMissingRecipientName) {
+ SetUpDictionary(kAddressMissingRecipientName);
+ EXPECT_EQ(NULL, Address::CreateAddress(*dict_).get());
+ EXPECT_EQ(NULL, Address::CreateAddressWithID(*dict_).get());
+}
+
+TEST_F(WalletAddressTest, CreateAddressMissingPostalCodeNumber) {
+ SetUpDictionary(kAddressMissingPostalCodeNumber);
+ EXPECT_EQ(NULL, Address::CreateAddress(*dict_).get());
+ EXPECT_EQ(NULL, Address::CreateAddressWithID(*dict_).get());
+}
+
+TEST_F(WalletAddressTest, CreateAddressWithID) {
+ SetUpDictionary(kValidAddress);
+ Address address("country_name_code",
+ ASCIIToUTF16("recipient_name"),
+ ASCIIToUTF16("address_line_1"),
+ ASCIIToUTF16("address_line_2"),
+ ASCIIToUTF16("locality_name"),
+ ASCIIToUTF16("administrative_area_name"),
+ ASCIIToUTF16("postal_code_number"),
+ ASCIIToUTF16("phone_number"),
+ "id");
+ address.set_is_complete_address(false);
+ EXPECT_EQ(address, *Address::CreateAddress(*dict_));
+ EXPECT_EQ(address, *Address::CreateAddressWithID(*dict_));
+}
+
+TEST_F(WalletAddressTest, CreateDisplayAddressMissingCountryNameCode) {
+ SetUpDictionary(kClientAddressMissingCountryCode);
+ EXPECT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get());
+}
+
+TEST_F(WalletAddressTest, CreateDisplayAddressMissingName) {
+ SetUpDictionary(kClientAddressMissingName);
+ EXPECT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get());
+}
+
+TEST_F(WalletAddressTest, CreateDisplayAddressMissingPostalCode) {
+ SetUpDictionary(kClientAddressMissingPostalCode);
+ EXPECT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get());
+}
+
+TEST_F(WalletAddressTest, CreateDisplayAddress) {
+ SetUpDictionary(kClientValidAddress);
+ Address address("country_code",
+ ASCIIToUTF16("name"),
+ ASCIIToUTF16("address1"),
+ ASCIIToUTF16("address2"),
+ ASCIIToUTF16("city"),
+ ASCIIToUTF16("state"),
+ ASCIIToUTF16("postal_code"),
+ ASCIIToUTF16("phone_number"),
+ std::string());
+ EXPECT_EQ(address, *Address::CreateDisplayAddress(*dict_));
+}
+
+TEST_F(WalletAddressTest, ToDictionaryWithoutID) {
+ base::DictionaryValue expected;
+ expected.SetString("country_name_code",
+ "country_name_code");
+ expected.SetString("recipient_name",
+ "recipient_name");
+ expected.SetString("locality_name",
+ "locality_name");
+ expected.SetString("administrative_area_name",
+ "administrative_area_name");
+ expected.SetString("postal_code_number",
+ "postal_code_number");
+ base::ListValue* address_lines = new base::ListValue();
+ address_lines->AppendString("address_line_1");
+ address_lines->AppendString("address_line_2");
+ expected.Set("address_line", address_lines);
+
+ Address address("country_name_code",
+ ASCIIToUTF16("recipient_name"),
+ ASCIIToUTF16("address_line_1"),
+ ASCIIToUTF16("address_line_2"),
+ ASCIIToUTF16("locality_name"),
+ ASCIIToUTF16("administrative_area_name"),
+ ASCIIToUTF16("postal_code_number"),
+ ASCIIToUTF16("phone_number"),
+ std::string());
+
+ EXPECT_TRUE(expected.Equals(address.ToDictionaryWithoutID().get()));
+}
+
+TEST_F(WalletAddressTest, ToDictionaryWithID) {
+ base::DictionaryValue expected;
+ expected.SetString("id", "id");
+ expected.SetString("phone_number", "phone_number");
+ expected.SetString("postal_address.country_name_code",
+ "country_name_code");
+ expected.SetString("postal_address.recipient_name",
+ "recipient_name");
+ expected.SetString("postal_address.locality_name",
+ "locality_name");
+ expected.SetString("postal_address.administrative_area_name",
+ "administrative_area_name");
+ expected.SetString("postal_address.postal_code_number",
+ "postal_code_number");
+ base::ListValue* address_lines = new base::ListValue();
+ address_lines->AppendString("address_line_1");
+ address_lines->AppendString("address_line_2");
+ expected.Set("postal_address.address_line", address_lines);
+
+ Address address("country_name_code",
+ ASCIIToUTF16("recipient_name"),
+ ASCIIToUTF16("address_line_1"),
+ ASCIIToUTF16("address_line_2"),
+ ASCIIToUTF16("locality_name"),
+ ASCIIToUTF16("administrative_area_name"),
+ ASCIIToUTF16("postal_code_number"),
+ ASCIIToUTF16("phone_number"),
+ "id");
+
+ EXPECT_TRUE(expected.Equals(address.ToDictionaryWithID().get()));
+}
+
+} // namespace wallet
+} // namespace autofill