| 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 |