| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "base/json/json_reader.h" | |
| 6 #include "base/logging.h" | |
| 7 #include "base/memory/scoped_ptr.h" | |
| 8 #include "base/utf_string_conversions.h" | |
| 9 #include "base/values.h" | |
| 10 #include "chrome/browser/autofill/wallet/wallet_address.h" | |
| 11 #include "testing/gtest/include/gtest/gtest.h" | |
| 12 | |
| 13 namespace { | |
| 14 | |
| 15 const char kAddressMissingObjectId[] = | |
| 16 "{" | |
| 17 " \"phone_number\":\"phone_number\"," | |
| 18 " \"postal_address\":" | |
| 19 " {" | |
| 20 " \"recipient_name\":\"recipient_name\"," | |
| 21 " \"address_line\":" | |
| 22 " [" | |
| 23 " \"address_line_1\"," | |
| 24 " \"address_line_2\"" | |
| 25 " ]," | |
| 26 " \"locality_name\":\"locality_name\"," | |
| 27 " \"administrative_area_name\":\"administrative_area_name\"," | |
| 28 " \"postal_code_number\":\"postal_code_number\"," | |
| 29 " \"country_name_code\":\"country_name_code\"" | |
| 30 " }" | |
| 31 "}"; | |
| 32 | |
| 33 const char kAddressMissingCountryNameCode[] = | |
| 34 "{" | |
| 35 " \"id\":\"id\"," | |
| 36 " \"phone_number\":\"phone_number\"," | |
| 37 " \"postal_address\":" | |
| 38 " {" | |
| 39 " \"recipient_name\":\"recipient_name\"," | |
| 40 " \"address_line\":" | |
| 41 " [" | |
| 42 " \"address_line_1\"," | |
| 43 " \"address_line_2\"" | |
| 44 " ]," | |
| 45 " \"locality_name\":\"locality_name\"," | |
| 46 " \"administrative_area_name\":\"administrative_area_name\"," | |
| 47 " \"postal_code_number\":\"postal_code_number\"" | |
| 48 " }" | |
| 49 "}"; | |
| 50 | |
| 51 const char kAddressMissingRecipientName[] = | |
| 52 "{" | |
| 53 " \"id\":\"id\"," | |
| 54 " \"phone_number\":\"phone_number\"," | |
| 55 " \"postal_address\":" | |
| 56 " {" | |
| 57 " \"address_line\":" | |
| 58 " [" | |
| 59 " \"address_line_1\"," | |
| 60 " \"address_line_2\"" | |
| 61 " ]," | |
| 62 " \"locality_name\":\"locality_name\"," | |
| 63 " \"administrative_area_name\":\"administrative_area_name\"," | |
| 64 " \"postal_code_number\":\"postal_code_number\"," | |
| 65 " \"country_name_code\":\"country_name_code\"" | |
| 66 " }" | |
| 67 "}"; | |
| 68 | |
| 69 const char kAddressMissingPostalCodeNumber[] = | |
| 70 "{" | |
| 71 " \"id\":\"id\"," | |
| 72 " \"phone_number\":\"phone_number\"," | |
| 73 " \"postal_address\":" | |
| 74 " {" | |
| 75 " \"recipient_name\":\"recipient_name\"," | |
| 76 " \"address_line\":" | |
| 77 " [" | |
| 78 " \"address_line_1\"," | |
| 79 " \"address_line_2\"" | |
| 80 " ]," | |
| 81 " \"locality_name\":\"locality_name\"," | |
| 82 " \"administrative_area_name\":\"administrative_area_name\"," | |
| 83 " \"country_name_code\":\"country_name_code\"" | |
| 84 " }" | |
| 85 "}"; | |
| 86 | |
| 87 const char kValidAddress[] = | |
| 88 "{" | |
| 89 " \"id\":\"id\"," | |
| 90 " \"phone_number\":\"phone_number\"," | |
| 91 " \"postal_address\":" | |
| 92 " {" | |
| 93 " \"recipient_name\":\"recipient_name\"," | |
| 94 " \"address_line\":" | |
| 95 " [" | |
| 96 " \"address_line_1\"," | |
| 97 " \"address_line_2\"" | |
| 98 " ]," | |
| 99 " \"locality_name\":\"locality_name\"," | |
| 100 " \"administrative_area_name\":\"administrative_area_name\"," | |
| 101 " \"country_name_code\":\"country_name_code\"," | |
| 102 " \"postal_code_number\":\"postal_code_number\"" | |
| 103 " }" | |
| 104 "}"; | |
| 105 | |
| 106 const char kClientAddressMissingCountryCode[] = | |
| 107 "{" | |
| 108 " \"name\":\"name\"," | |
| 109 " \"address1\":\"address1\"," | |
| 110 " \"address2\":\"address2\"," | |
| 111 " \"city\":\"city\"," | |
| 112 " \"state\":\"state\"," | |
| 113 " \"postal_code\":\"postal_code\"," | |
| 114 " \"phone_number\":\"phone_number\"" | |
| 115 "}"; | |
| 116 | |
| 117 const char kClientAddressMissingPostalCode[] = | |
| 118 "{" | |
| 119 " \"name\":\"name\"," | |
| 120 " \"address1\":\"address1\"," | |
| 121 " \"address2\":\"address2\"," | |
| 122 " \"city\":\"city\"," | |
| 123 " \"state\":\"state\"," | |
| 124 " \"phone_number\":\"phone_number\"," | |
| 125 " \"country_code\":\"country_code\"" | |
| 126 "}"; | |
| 127 | |
| 128 const char kClientAddressMissingName[] = | |
| 129 "{" | |
| 130 " \"address1\":\"address1\"," | |
| 131 " \"address2\":\"address2\"," | |
| 132 " \"city\":\"city\"," | |
| 133 " \"state\":\"state\"," | |
| 134 " \"postal_code\":\"postal_code\"," | |
| 135 " \"phone_number\":\"phone_number\"," | |
| 136 " \"country_code\":\"country_code\"" | |
| 137 "}"; | |
| 138 | |
| 139 const char kClientValidAddress[] = | |
| 140 "{" | |
| 141 " \"name\":\"name\"," | |
| 142 " \"address1\":\"address1\"," | |
| 143 " \"address2\":\"address2\"," | |
| 144 " \"city\":\"city\"," | |
| 145 " \"state\":\"state\"," | |
| 146 " \"postal_code\":\"postal_code\"," | |
| 147 " \"phone_number\":\"phone_number\"," | |
| 148 " \"country_code\":\"country_code\"" | |
| 149 "}"; | |
| 150 | |
| 151 } // anonymous namespace | |
| 152 | |
| 153 namespace autofill { | |
| 154 namespace wallet { | |
| 155 | |
| 156 class WalletAddressTest : public testing::Test { | |
| 157 public: | |
| 158 WalletAddressTest() {} | |
| 159 protected: | |
| 160 void SetUpDictionary(const std::string& json) { | |
| 161 scoped_ptr<Value> value(base::JSONReader::Read(json)); | |
| 162 DCHECK(value.get()); | |
| 163 DCHECK(value->IsType(Value::TYPE_DICTIONARY)); | |
| 164 dict_.reset(static_cast<DictionaryValue*>(value.release())); | |
| 165 } | |
| 166 scoped_ptr<const DictionaryValue> dict_; | |
| 167 }; | |
| 168 | |
| 169 TEST_F(WalletAddressTest, CreateAddressMissingObjectId) { | |
| 170 SetUpDictionary(kAddressMissingObjectId); | |
| 171 Address address("country_name_code", | |
| 172 ASCIIToUTF16("recipient_name"), | |
| 173 ASCIIToUTF16("address_line_1"), | |
| 174 ASCIIToUTF16("address_line_2"), | |
| 175 ASCIIToUTF16("locality_name"), | |
| 176 ASCIIToUTF16("administrative_area_name"), | |
| 177 ASCIIToUTF16("postal_code_number"), | |
| 178 ASCIIToUTF16("phone_number"), | |
| 179 ""); | |
| 180 ASSERT_EQ(address, *Address::CreateAddress(*dict_)); | |
| 181 } | |
| 182 | |
| 183 TEST_F(WalletAddressTest, CreateAddressWithIDMissingObjectId) { | |
| 184 SetUpDictionary(kAddressMissingObjectId); | |
| 185 ASSERT_EQ(NULL, Address::CreateAddressWithID(*dict_).get()); | |
| 186 } | |
| 187 | |
| 188 TEST_F(WalletAddressTest, CreateAddressMissingCountryNameCode) { | |
| 189 SetUpDictionary(kAddressMissingCountryNameCode); | |
| 190 ASSERT_EQ(NULL, Address::CreateAddress(*dict_).get()); | |
| 191 ASSERT_EQ(NULL, Address::CreateAddressWithID(*dict_).get()); | |
| 192 } | |
| 193 | |
| 194 TEST_F(WalletAddressTest, CreateAddressMissingRecipientName) { | |
| 195 SetUpDictionary(kAddressMissingRecipientName); | |
| 196 ASSERT_EQ(NULL, Address::CreateAddress(*dict_).get()); | |
| 197 ASSERT_EQ(NULL, Address::CreateAddressWithID(*dict_).get()); | |
| 198 } | |
| 199 | |
| 200 TEST_F(WalletAddressTest, CreateAddressMissingPostalCodeNumber) { | |
| 201 SetUpDictionary(kAddressMissingPostalCodeNumber); | |
| 202 ASSERT_EQ(NULL, Address::CreateAddress(*dict_).get()); | |
| 203 ASSERT_EQ(NULL, Address::CreateAddressWithID(*dict_).get()); | |
| 204 } | |
| 205 | |
| 206 TEST_F(WalletAddressTest, CreateAddressWithID) { | |
| 207 SetUpDictionary(kValidAddress); | |
| 208 Address address("country_name_code", | |
| 209 ASCIIToUTF16("recipient_name"), | |
| 210 ASCIIToUTF16("address_line_1"), | |
| 211 ASCIIToUTF16("address_line_2"), | |
| 212 ASCIIToUTF16("locality_name"), | |
| 213 ASCIIToUTF16("administrative_area_name"), | |
| 214 ASCIIToUTF16("postal_code_number"), | |
| 215 ASCIIToUTF16("phone_number"), | |
| 216 "id"); | |
| 217 ASSERT_EQ(address, *Address::CreateAddress(*dict_)); | |
| 218 ASSERT_EQ(address, *Address::CreateAddressWithID(*dict_)); | |
| 219 } | |
| 220 | |
| 221 TEST_F(WalletAddressTest, CreateDisplayAddressMissingCountryNameCode) { | |
| 222 SetUpDictionary(kClientAddressMissingCountryCode); | |
| 223 ASSERT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get()); | |
| 224 } | |
| 225 | |
| 226 TEST_F(WalletAddressTest, CreateDisplayAddressMissingName) { | |
| 227 SetUpDictionary(kClientAddressMissingName); | |
| 228 ASSERT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get()); | |
| 229 } | |
| 230 | |
| 231 TEST_F(WalletAddressTest, CreateDisplayAddressMissingPostalCode) { | |
| 232 SetUpDictionary(kClientAddressMissingPostalCode); | |
| 233 ASSERT_EQ(NULL, Address::CreateDisplayAddress(*dict_).get()); | |
| 234 } | |
| 235 | |
| 236 TEST_F(WalletAddressTest, CreateDisplayAddress) { | |
| 237 SetUpDictionary(kClientValidAddress); | |
| 238 Address address("country_code", | |
| 239 ASCIIToUTF16("name"), | |
| 240 ASCIIToUTF16("address1"), | |
| 241 ASCIIToUTF16("address2"), | |
| 242 ASCIIToUTF16("city"), | |
| 243 ASCIIToUTF16("state"), | |
| 244 ASCIIToUTF16("postal_code"), | |
| 245 ASCIIToUTF16("phone_number"), | |
| 246 ""); | |
| 247 ASSERT_EQ(address, *Address::CreateDisplayAddress(*dict_)); | |
| 248 } | |
| 249 | |
| 250 TEST_F(WalletAddressTest, ToDictionaryWithoutID) { | |
| 251 base::DictionaryValue expected; | |
| 252 expected.SetString("country_name_code", | |
| 253 "country_name_code"); | |
| 254 expected.SetString("recipient_name", | |
| 255 "recipient_name"); | |
| 256 expected.SetString("locality_name", | |
| 257 "locality_name"); | |
| 258 expected.SetString("administrative_area_name", | |
| 259 "administrative_area_name"); | |
| 260 expected.SetString("postal_code_number", | |
| 261 "postal_code_number"); | |
| 262 base::ListValue* address_lines = new base::ListValue(); | |
| 263 address_lines->AppendString("address_line_1"); | |
| 264 address_lines->AppendString("address_line_2"); | |
| 265 expected.Set("address_line", address_lines); | |
| 266 | |
| 267 Address address("country_name_code", | |
| 268 ASCIIToUTF16("recipient_name"), | |
| 269 ASCIIToUTF16("address_line_1"), | |
| 270 ASCIIToUTF16("address_line_2"), | |
| 271 ASCIIToUTF16("locality_name"), | |
| 272 ASCIIToUTF16("administrative_area_name"), | |
| 273 ASCIIToUTF16("postal_code_number"), | |
| 274 ASCIIToUTF16("phone_number"), | |
| 275 ""); | |
| 276 | |
| 277 EXPECT_TRUE(expected.Equals(address.ToDictionaryWithoutID().get())); | |
| 278 } | |
| 279 | |
| 280 TEST_F(WalletAddressTest, ToDictionaryWithID) { | |
| 281 base::DictionaryValue expected; | |
| 282 expected.SetString("id", "id"); | |
| 283 expected.SetString("phone_number", "phone_number"); | |
| 284 expected.SetString("postal_address.country_name_code", | |
| 285 "country_name_code"); | |
| 286 expected.SetString("postal_address.recipient_name", | |
| 287 "recipient_name"); | |
| 288 expected.SetString("postal_address.locality_name", | |
| 289 "locality_name"); | |
| 290 expected.SetString("postal_address.administrative_area_name", | |
| 291 "administrative_area_name"); | |
| 292 expected.SetString("postal_address.postal_code_number", | |
| 293 "postal_code_number"); | |
| 294 base::ListValue* address_lines = new base::ListValue(); | |
| 295 address_lines->AppendString("address_line_1"); | |
| 296 address_lines->AppendString("address_line_2"); | |
| 297 expected.Set("postal_address.address_line", address_lines); | |
| 298 | |
| 299 Address address("country_name_code", | |
| 300 ASCIIToUTF16("recipient_name"), | |
| 301 ASCIIToUTF16("address_line_1"), | |
| 302 ASCIIToUTF16("address_line_2"), | |
| 303 ASCIIToUTF16("locality_name"), | |
| 304 ASCIIToUTF16("administrative_area_name"), | |
| 305 ASCIIToUTF16("postal_code_number"), | |
| 306 ASCIIToUTF16("phone_number"), | |
| 307 "id"); | |
| 308 | |
| 309 EXPECT_TRUE(expected.Equals(address.ToDictionaryWithID().get())); | |
| 310 } | |
| 311 | |
| 312 } // namespace wallet | |
| 313 } // namespace autofill | |
| OLD | NEW |