OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdarg.h> | 5 #include <stdarg.h> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "base/strings/string_number_conversions.h" |
10 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
11 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
12 #include "base/strings/utf_string_conversions.h" | 13 #include "base/strings/utf_string_conversions.h" |
13 #include "base/time/time.h" | 14 #include "base/time/time.h" |
14 #include "chrome/browser/password_manager/native_backend_gnome_x.h" | 15 #include "chrome/browser/password_manager/native_backend_gnome_x.h" |
15 #include "chrome/test/base/testing_profile.h" | 16 #include "chrome/test/base/testing_profile.h" |
16 #include "components/autofill/core/common/password_form.h" | 17 #include "components/autofill/core/common/password_form.h" |
17 #include "components/password_manager/core/browser/psl_matching_helper.h" | 18 #include "components/password_manager/core/browser/psl_matching_helper.h" |
18 #include "components/password_manager/core/common/password_manager_pref_names.h" | 19 #include "components/password_manager/core/common/password_manager_pref_names.h" |
19 #include "content/public/test/test_browser_thread.h" | 20 #include "content/public/test/test_browser_thread.h" |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
297 EXPECT_EQ(expected.submit_element, actual.submit_element); | 298 EXPECT_EQ(expected.submit_element, actual.submit_element); |
298 EXPECT_EQ(expected.signon_realm, actual.signon_realm); | 299 EXPECT_EQ(expected.signon_realm, actual.signon_realm); |
299 EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); | 300 EXPECT_EQ(expected.ssl_valid, actual.ssl_valid); |
300 EXPECT_EQ(expected.preferred, actual.preferred); | 301 EXPECT_EQ(expected.preferred, actual.preferred); |
301 // We don't check the date created. It varies due to bug in the | 302 // We don't check the date created. It varies due to bug in the |
302 // serialization. Integer seconds are saved instead of microseconds. | 303 // serialization. Integer seconds are saved instead of microseconds. |
303 EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); | 304 EXPECT_EQ(expected.blacklisted_by_user, actual.blacklisted_by_user); |
304 EXPECT_EQ(expected.type, actual.type); | 305 EXPECT_EQ(expected.type, actual.type); |
305 EXPECT_EQ(expected.times_used, actual.times_used); | 306 EXPECT_EQ(expected.times_used, actual.times_used); |
306 EXPECT_EQ(expected.scheme, actual.scheme); | 307 EXPECT_EQ(expected.scheme, actual.scheme); |
| 308 EXPECT_EQ(expected.date_synced, actual.date_synced); |
307 } | 309 } |
308 } | 310 } |
309 | 311 |
310 } // anonymous namespace | 312 } // anonymous namespace |
311 | 313 |
312 class NativeBackendGnomeTest : public testing::Test { | 314 class NativeBackendGnomeTest : public testing::Test { |
313 protected: | 315 protected: |
314 enum UpdateType { // Used in CheckPSLUpdate(). | 316 enum UpdateType { // Used in CheckPSLUpdate(). |
315 UPDATE_BY_UPDATELOGIN, | 317 UPDATE_BY_UPDATELOGIN, |
316 UPDATE_BY_ADDLOGIN, | 318 UPDATE_BY_ADDLOGIN, |
(...skipping 12 matching lines...) Expand all Loading... |
329 form_google_.origin = GURL("http://www.google.com/"); | 331 form_google_.origin = GURL("http://www.google.com/"); |
330 form_google_.action = GURL("http://www.google.com/login"); | 332 form_google_.action = GURL("http://www.google.com/login"); |
331 form_google_.username_element = UTF8ToUTF16("user"); | 333 form_google_.username_element = UTF8ToUTF16("user"); |
332 form_google_.username_value = UTF8ToUTF16("joeschmoe"); | 334 form_google_.username_value = UTF8ToUTF16("joeschmoe"); |
333 form_google_.password_element = UTF8ToUTF16("pass"); | 335 form_google_.password_element = UTF8ToUTF16("pass"); |
334 form_google_.password_value = UTF8ToUTF16("seekrit"); | 336 form_google_.password_value = UTF8ToUTF16("seekrit"); |
335 form_google_.submit_element = UTF8ToUTF16("submit"); | 337 form_google_.submit_element = UTF8ToUTF16("submit"); |
336 form_google_.signon_realm = "http://www.google.com/"; | 338 form_google_.signon_realm = "http://www.google.com/"; |
337 form_google_.type = PasswordForm::TYPE_GENERATED; | 339 form_google_.type = PasswordForm::TYPE_GENERATED; |
338 form_google_.date_created = base::Time::Now(); | 340 form_google_.date_created = base::Time::Now(); |
| 341 form_google_.date_synced = base::Time::Now(); |
339 | 342 |
340 form_facebook_.origin = GURL("http://www.facebook.com/"); | 343 form_facebook_.origin = GURL("http://www.facebook.com/"); |
341 form_facebook_.action = GURL("http://www.facebook.com/login"); | 344 form_facebook_.action = GURL("http://www.facebook.com/login"); |
342 form_facebook_.username_element = UTF8ToUTF16("user"); | 345 form_facebook_.username_element = UTF8ToUTF16("user"); |
343 form_facebook_.username_value = UTF8ToUTF16("a"); | 346 form_facebook_.username_value = UTF8ToUTF16("a"); |
344 form_facebook_.password_element = UTF8ToUTF16("password"); | 347 form_facebook_.password_element = UTF8ToUTF16("password"); |
345 form_facebook_.password_value = UTF8ToUTF16("b"); | 348 form_facebook_.password_value = UTF8ToUTF16("b"); |
346 form_facebook_.submit_element = UTF8ToUTF16("submit"); | 349 form_facebook_.submit_element = UTF8ToUTF16("submit"); |
347 form_facebook_.signon_realm = "http://www.facebook.com/"; | 350 form_facebook_.signon_realm = "http://www.facebook.com/"; |
348 form_facebook_.date_created = base::Time::Now(); | 351 form_facebook_.date_created = base::Time::Now(); |
| 352 form_facebook_.date_synced = base::Time::Now(); |
349 | 353 |
350 form_isc_.origin = GURL("http://www.isc.org/"); | 354 form_isc_.origin = GURL("http://www.isc.org/"); |
351 form_isc_.action = GURL("http://www.isc.org/auth"); | 355 form_isc_.action = GURL("http://www.isc.org/auth"); |
352 form_isc_.username_element = UTF8ToUTF16("id"); | 356 form_isc_.username_element = UTF8ToUTF16("id"); |
353 form_isc_.username_value = UTF8ToUTF16("janedoe"); | 357 form_isc_.username_value = UTF8ToUTF16("janedoe"); |
354 form_isc_.password_element = UTF8ToUTF16("passwd"); | 358 form_isc_.password_element = UTF8ToUTF16("passwd"); |
355 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); | 359 form_isc_.password_value = UTF8ToUTF16("ihazabukkit"); |
356 form_isc_.submit_element = UTF8ToUTF16("login"); | 360 form_isc_.submit_element = UTF8ToUTF16("login"); |
357 form_isc_.signon_realm = "http://www.isc.org/"; | 361 form_isc_.signon_realm = "http://www.isc.org/"; |
358 form_isc_.date_created = base::Time::Now(); | 362 form_isc_.date_created = base::Time::Now(); |
| 363 form_isc_.date_synced = base::Time::Now(); |
359 | 364 |
360 other_auth_.origin = GURL("http://www.example.com/"); | 365 other_auth_.origin = GURL("http://www.example.com/"); |
361 other_auth_.username_value = UTF8ToUTF16("username"); | 366 other_auth_.username_value = UTF8ToUTF16("username"); |
362 other_auth_.password_value = UTF8ToUTF16("pass"); | 367 other_auth_.password_value = UTF8ToUTF16("pass"); |
363 other_auth_.signon_realm = "http://www.example.com/Realm"; | 368 other_auth_.signon_realm = "http://www.example.com/Realm"; |
364 other_auth_.date_created = base::Time::Now(); | 369 other_auth_.date_created = base::Time::Now(); |
| 370 other_auth_.date_synced = base::Time::Now(); |
365 } | 371 } |
366 | 372 |
367 virtual void TearDown() { | 373 virtual void TearDown() { |
368 base::MessageLoop::current()->PostTask(FROM_HERE, | 374 base::MessageLoop::current()->PostTask(FROM_HERE, |
369 base::MessageLoop::QuitClosure()); | 375 base::MessageLoop::QuitClosure()); |
370 base::MessageLoop::current()->Run(); | 376 base::MessageLoop::current()->Run(); |
371 db_thread_.Stop(); | 377 db_thread_.Stop(); |
372 } | 378 } |
373 | 379 |
374 void RunBothThreads() { | 380 void RunBothThreads() { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 } | 416 } |
411 } | 417 } |
412 | 418 |
413 void CheckMockKeyringItem(const MockKeyringItem* item, | 419 void CheckMockKeyringItem(const MockKeyringItem* item, |
414 const PasswordForm& form, | 420 const PasswordForm& form, |
415 const std::string& app_string) { | 421 const std::string& app_string) { |
416 // We always add items to the login keyring. | 422 // We always add items to the login keyring. |
417 EXPECT_EQ("login", item->keyring); | 423 EXPECT_EQ("login", item->keyring); |
418 EXPECT_EQ(form.origin.spec(), item->display_name); | 424 EXPECT_EQ(form.origin.spec(), item->display_name); |
419 EXPECT_EQ(UTF16ToUTF8(form.password_value), item->password); | 425 EXPECT_EQ(UTF16ToUTF8(form.password_value), item->password); |
420 EXPECT_EQ(15u, item->attributes.size()); | 426 EXPECT_EQ(16u, item->attributes.size()); |
421 CheckStringAttribute(item, "origin_url", form.origin.spec()); | 427 CheckStringAttribute(item, "origin_url", form.origin.spec()); |
422 CheckStringAttribute(item, "action_url", form.action.spec()); | 428 CheckStringAttribute(item, "action_url", form.action.spec()); |
423 CheckStringAttribute(item, "username_element", | 429 CheckStringAttribute(item, "username_element", |
424 UTF16ToUTF8(form.username_element)); | 430 UTF16ToUTF8(form.username_element)); |
425 CheckStringAttribute(item, "username_value", | 431 CheckStringAttribute(item, "username_value", |
426 UTF16ToUTF8(form.username_value)); | 432 UTF16ToUTF8(form.username_value)); |
427 CheckStringAttribute(item, "password_element", | 433 CheckStringAttribute(item, "password_element", |
428 UTF16ToUTF8(form.password_element)); | 434 UTF16ToUTF8(form.password_element)); |
429 CheckStringAttribute(item, "submit_element", | 435 CheckStringAttribute(item, "submit_element", |
430 UTF16ToUTF8(form.submit_element)); | 436 UTF16ToUTF8(form.submit_element)); |
431 CheckStringAttribute(item, "signon_realm", form.signon_realm); | 437 CheckStringAttribute(item, "signon_realm", form.signon_realm); |
432 CheckUint32Attribute(item, "ssl_valid", form.ssl_valid); | 438 CheckUint32Attribute(item, "ssl_valid", form.ssl_valid); |
433 CheckUint32Attribute(item, "preferred", form.preferred); | 439 CheckUint32Attribute(item, "preferred", form.preferred); |
434 // We don't check the date created. It varies. | 440 // We don't check the date created. It varies. |
435 CheckUint32Attribute(item, "blacklisted_by_user", form.blacklisted_by_user); | 441 CheckUint32Attribute(item, "blacklisted_by_user", form.blacklisted_by_user); |
436 CheckUint32Attribute(item, "type", form.type); | 442 CheckUint32Attribute(item, "type", form.type); |
437 CheckUint32Attribute(item, "times_used", form.times_used); | 443 CheckUint32Attribute(item, "times_used", form.times_used); |
438 CheckUint32Attribute(item, "scheme", form.scheme); | 444 CheckUint32Attribute(item, "scheme", form.scheme); |
439 CheckStringAttribute(item, "application", app_string); | 445 CheckStringAttribute(item, "application", app_string); |
| 446 CheckStringAttribute(item, "date_synced", base::Int64ToString( |
| 447 form.date_synced.ToInternalValue())); |
440 } | 448 } |
441 | 449 |
442 // Saves |credentials| and then gets logins matching |url| and |scheme|. | 450 // Saves |credentials| and then gets logins matching |url| and |scheme|. |
443 // Returns true when something is found, and in such case copies the result to | 451 // Returns true when something is found, and in such case copies the result to |
444 // |result| when |result| is not NULL. (Note that there can be max. 1 result, | 452 // |result| when |result| is not NULL. (Note that there can be max. 1 result, |
445 // derived from |credentials|.) | 453 // derived from |credentials|.) |
446 bool CheckCredentialAvailability(const PasswordForm& credentials, | 454 bool CheckCredentialAvailability(const PasswordForm& credentials, |
447 const GURL& url, | 455 const GURL& url, |
448 const PasswordForm::Scheme& scheme, | 456 const PasswordForm::Scheme& scheme, |
449 PasswordForm* result) { | 457 PasswordForm* result) { |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
934 // Quick check that we got two results back. | 942 // Quick check that we got two results back. |
935 EXPECT_EQ(2u, form_list.size()); | 943 EXPECT_EQ(2u, form_list.size()); |
936 STLDeleteElements(&form_list); | 944 STLDeleteElements(&form_list); |
937 | 945 |
938 EXPECT_EQ(1u, mock_keyring_items.size()); | 946 EXPECT_EQ(1u, mock_keyring_items.size()); |
939 if (mock_keyring_items.size() > 0) | 947 if (mock_keyring_items.size() > 0) |
940 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); | 948 CheckMockKeyringItem(&mock_keyring_items[0], form_google_, "chrome-42"); |
941 } | 949 } |
942 | 950 |
943 // TODO(mdm): add more basic tests here at some point. | 951 // TODO(mdm): add more basic tests here at some point. |
OLD | NEW |