| 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 <algorithm> | 5 #include <algorithm> |
| 6 #include <map> | 6 #include <map> |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 244 | 244 |
| 245 dbus::Bus::Options options; | 245 dbus::Bus::Options options; |
| 246 options.bus_type = dbus::Bus::SESSION; | 246 options.bus_type = dbus::Bus::SESSION; |
| 247 mock_session_bus_ = new dbus::MockBus(options); | 247 mock_session_bus_ = new dbus::MockBus(options); |
| 248 | 248 |
| 249 mock_klauncher_proxy_ = | 249 mock_klauncher_proxy_ = |
| 250 new dbus::MockObjectProxy(mock_session_bus_.get(), | 250 new dbus::MockObjectProxy(mock_session_bus_.get(), |
| 251 "org.kde.klauncher", | 251 "org.kde.klauncher", |
| 252 dbus::ObjectPath("/KLauncher")); | 252 dbus::ObjectPath("/KLauncher")); |
| 253 EXPECT_CALL(*mock_klauncher_proxy_, | 253 EXPECT_CALL(*mock_klauncher_proxy_, |
| 254 CallMethodAndBlock(_, _)) | 254 MockCallMethodAndBlock(_, _)) |
| 255 .WillRepeatedly(Invoke(this, | 255 .WillRepeatedly(Invoke(this, |
| 256 &NativeBackendKWalletTest::KLauncherMethodCall)); | 256 &NativeBackendKWalletTest::KLauncherMethodCall)); |
| 257 | 257 |
| 258 mock_kwallet_proxy_ = | 258 mock_kwallet_proxy_ = |
| 259 new dbus::MockObjectProxy(mock_session_bus_.get(), | 259 new dbus::MockObjectProxy(mock_session_bus_.get(), |
| 260 "org.kde.kwalletd", | 260 "org.kde.kwalletd", |
| 261 dbus::ObjectPath("/modules/kwalletd")); | 261 dbus::ObjectPath("/modules/kwalletd")); |
| 262 EXPECT_CALL(*mock_kwallet_proxy_, | 262 EXPECT_CALL(*mock_kwallet_proxy_, |
| 263 CallMethodAndBlock(_, _)) | 263 MockCallMethodAndBlock(_, _)) |
| 264 .WillRepeatedly(Invoke(this, | 264 .WillRepeatedly(Invoke(this, |
| 265 &NativeBackendKWalletTest::KWalletMethodCall)); | 265 &NativeBackendKWalletTest::KWalletMethodCall)); |
| 266 | 266 |
| 267 EXPECT_CALL(*mock_session_bus_, GetObjectProxy( | 267 EXPECT_CALL(*mock_session_bus_, GetObjectProxy( |
| 268 "org.kde.klauncher", | 268 "org.kde.klauncher", |
| 269 dbus::ObjectPath("/KLauncher"))) | 269 dbus::ObjectPath("/KLauncher"))) |
| 270 .WillRepeatedly(Return(mock_klauncher_proxy_.get())); | 270 .WillRepeatedly(Return(mock_klauncher_proxy_.get())); |
| 271 EXPECT_CALL(*mock_session_bus_, GetObjectProxy( | 271 EXPECT_CALL(*mock_session_bus_, GetObjectProxy( |
| 272 "org.kde.kwalletd", | 272 "org.kde.kwalletd", |
| 273 dbus::ObjectPath("/modules/kwalletd"))) | 273 dbus::ObjectPath("/modules/kwalletd"))) |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 305 | 305 |
| 306 EXPECT_EQ("kwalletd", service_name); | 306 EXPECT_EQ("kwalletd", service_name); |
| 307 EXPECT_TRUE(urls.empty()); | 307 EXPECT_TRUE(urls.empty()); |
| 308 EXPECT_TRUE(envs.empty()); | 308 EXPECT_TRUE(envs.empty()); |
| 309 EXPECT_TRUE(startup_id.empty()); | 309 EXPECT_TRUE(startup_id.empty()); |
| 310 EXPECT_FALSE(blind); | 310 EXPECT_FALSE(blind); |
| 311 | 311 |
| 312 if (kwallet_runnable_) | 312 if (kwallet_runnable_) |
| 313 kwallet_running_ = true; | 313 kwallet_running_ = true; |
| 314 | 314 |
| 315 dbus::Response* response = dbus::Response::CreateEmpty(); | 315 scoped_ptr<dbus::Response> response(dbus::Response::CreateEmpty()); |
| 316 dbus::MessageWriter writer(response); | 316 dbus::MessageWriter writer(response.get()); |
| 317 writer.AppendInt32(klauncher_ret_); | 317 writer.AppendInt32(klauncher_ret_); |
| 318 writer.AppendString(""); // dbus_name | 318 writer.AppendString(""); // dbus_name |
| 319 writer.AppendString(klauncher_error_); | 319 writer.AppendString(klauncher_error_); |
| 320 writer.AppendInt32(1234); // pid | 320 writer.AppendInt32(1234); // pid |
| 321 return response; | 321 return response.release(); |
| 322 } | 322 } |
| 323 | 323 |
| 324 dbus::Response* NativeBackendKWalletTest::KWalletMethodCall( | 324 dbus::Response* NativeBackendKWalletTest::KWalletMethodCall( |
| 325 dbus::MethodCall* method_call, testing::Unused) { | 325 dbus::MethodCall* method_call, testing::Unused) { |
| 326 if (!kwallet_running_) | 326 if (!kwallet_running_) |
| 327 return NULL; | 327 return NULL; |
| 328 EXPECT_EQ("org.kde.KWallet", method_call->GetInterface()); | 328 EXPECT_EQ("org.kde.KWallet", method_call->GetInterface()); |
| 329 | 329 |
| 330 dbus::Response* response = NULL; | 330 scoped_ptr<dbus::Response> response; |
| 331 if (method_call->GetMember() == "isEnabled") { | 331 if (method_call->GetMember() == "isEnabled") { |
| 332 response = dbus::Response::CreateEmpty(); | 332 response = dbus::Response::CreateEmpty(); |
| 333 dbus::MessageWriter writer(response); | 333 dbus::MessageWriter writer(response.get()); |
| 334 writer.AppendBool(kwallet_enabled_); | 334 writer.AppendBool(kwallet_enabled_); |
| 335 } else if (method_call->GetMember() == "networkWallet") { | 335 } else if (method_call->GetMember() == "networkWallet") { |
| 336 response = dbus::Response::CreateEmpty(); | 336 response = dbus::Response::CreateEmpty(); |
| 337 dbus::MessageWriter writer(response); | 337 dbus::MessageWriter writer(response.get()); |
| 338 writer.AppendString("test_wallet"); // Should match |open| below. | 338 writer.AppendString("test_wallet"); // Should match |open| below. |
| 339 } else if (method_call->GetMember() == "open") { | 339 } else if (method_call->GetMember() == "open") { |
| 340 dbus::MessageReader reader(method_call); | 340 dbus::MessageReader reader(method_call); |
| 341 std::string wallet_name; | 341 std::string wallet_name; |
| 342 int64_t wallet_id; | 342 int64_t wallet_id; |
| 343 std::string app_name; | 343 std::string app_name; |
| 344 EXPECT_TRUE(reader.PopString(&wallet_name)); | 344 EXPECT_TRUE(reader.PopString(&wallet_name)); |
| 345 EXPECT_TRUE(reader.PopInt64(&wallet_id)); | 345 EXPECT_TRUE(reader.PopInt64(&wallet_id)); |
| 346 EXPECT_TRUE(reader.PopString(&app_name)); | 346 EXPECT_TRUE(reader.PopString(&app_name)); |
| 347 EXPECT_EQ("test_wallet", wallet_name); // Should match |networkWallet|. | 347 EXPECT_EQ("test_wallet", wallet_name); // Should match |networkWallet|. |
| 348 response = dbus::Response::CreateEmpty(); | 348 response = dbus::Response::CreateEmpty(); |
| 349 dbus::MessageWriter writer(response); | 349 dbus::MessageWriter writer(response.get()); |
| 350 writer.AppendInt32(1); // Can be anything but kInvalidKWalletHandle. | 350 writer.AppendInt32(1); // Can be anything but kInvalidKWalletHandle. |
| 351 } else if (method_call->GetMember() == "hasFolder" || | 351 } else if (method_call->GetMember() == "hasFolder" || |
| 352 method_call->GetMember() == "createFolder") { | 352 method_call->GetMember() == "createFolder") { |
| 353 dbus::MessageReader reader(method_call); | 353 dbus::MessageReader reader(method_call); |
| 354 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; | 354 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; |
| 355 std::string folder_name; | 355 std::string folder_name; |
| 356 std::string app_name; | 356 std::string app_name; |
| 357 EXPECT_TRUE(reader.PopInt32(&handle)); | 357 EXPECT_TRUE(reader.PopInt32(&handle)); |
| 358 EXPECT_TRUE(reader.PopString(&folder_name)); | 358 EXPECT_TRUE(reader.PopString(&folder_name)); |
| 359 EXPECT_TRUE(reader.PopString(&app_name)); | 359 EXPECT_TRUE(reader.PopString(&app_name)); |
| 360 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); | 360 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); |
| 361 response = dbus::Response::CreateEmpty(); | 361 response = dbus::Response::CreateEmpty(); |
| 362 dbus::MessageWriter writer(response); | 362 dbus::MessageWriter writer(response.get()); |
| 363 if (method_call->GetMember() == "hasFolder") | 363 if (method_call->GetMember() == "hasFolder") |
| 364 writer.AppendBool(wallet_.hasFolder(folder_name)); | 364 writer.AppendBool(wallet_.hasFolder(folder_name)); |
| 365 else | 365 else |
| 366 writer.AppendBool(wallet_.createFolder(folder_name)); | 366 writer.AppendBool(wallet_.createFolder(folder_name)); |
| 367 } else if (method_call->GetMember() == "hasEntry" || | 367 } else if (method_call->GetMember() == "hasEntry" || |
| 368 method_call->GetMember() == "removeEntry") { | 368 method_call->GetMember() == "removeEntry") { |
| 369 dbus::MessageReader reader(method_call); | 369 dbus::MessageReader reader(method_call); |
| 370 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; | 370 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; |
| 371 std::string folder_name; | 371 std::string folder_name; |
| 372 std::string key; | 372 std::string key; |
| 373 std::string app_name; | 373 std::string app_name; |
| 374 EXPECT_TRUE(reader.PopInt32(&handle)); | 374 EXPECT_TRUE(reader.PopInt32(&handle)); |
| 375 EXPECT_TRUE(reader.PopString(&folder_name)); | 375 EXPECT_TRUE(reader.PopString(&folder_name)); |
| 376 EXPECT_TRUE(reader.PopString(&key)); | 376 EXPECT_TRUE(reader.PopString(&key)); |
| 377 EXPECT_TRUE(reader.PopString(&app_name)); | 377 EXPECT_TRUE(reader.PopString(&app_name)); |
| 378 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); | 378 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); |
| 379 response = dbus::Response::CreateEmpty(); | 379 response = dbus::Response::CreateEmpty(); |
| 380 dbus::MessageWriter writer(response); | 380 dbus::MessageWriter writer(response.get()); |
| 381 if (method_call->GetMember() == "hasEntry") | 381 if (method_call->GetMember() == "hasEntry") |
| 382 writer.AppendBool(wallet_.hasEntry(folder_name, key)); | 382 writer.AppendBool(wallet_.hasEntry(folder_name, key)); |
| 383 else | 383 else |
| 384 writer.AppendInt32(wallet_.removeEntry(folder_name, key) ? 0 : 1); | 384 writer.AppendInt32(wallet_.removeEntry(folder_name, key) ? 0 : 1); |
| 385 } else if (method_call->GetMember() == "entryList") { | 385 } else if (method_call->GetMember() == "entryList") { |
| 386 dbus::MessageReader reader(method_call); | 386 dbus::MessageReader reader(method_call); |
| 387 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; | 387 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; |
| 388 std::string folder_name; | 388 std::string folder_name; |
| 389 std::string app_name; | 389 std::string app_name; |
| 390 EXPECT_TRUE(reader.PopInt32(&handle)); | 390 EXPECT_TRUE(reader.PopInt32(&handle)); |
| 391 EXPECT_TRUE(reader.PopString(&folder_name)); | 391 EXPECT_TRUE(reader.PopString(&folder_name)); |
| 392 EXPECT_TRUE(reader.PopString(&app_name)); | 392 EXPECT_TRUE(reader.PopString(&app_name)); |
| 393 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); | 393 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); |
| 394 std::vector<std::string> entries; | 394 std::vector<std::string> entries; |
| 395 if (wallet_.entryList(folder_name, &entries)) { | 395 if (wallet_.entryList(folder_name, &entries)) { |
| 396 response = dbus::Response::CreateEmpty(); | 396 response = dbus::Response::CreateEmpty(); |
| 397 dbus::MessageWriter writer(response); | 397 dbus::MessageWriter writer(response.get()); |
| 398 writer.AppendArrayOfStrings(entries); | 398 writer.AppendArrayOfStrings(entries); |
| 399 } | 399 } |
| 400 } else if (method_call->GetMember() == "readEntry") { | 400 } else if (method_call->GetMember() == "readEntry") { |
| 401 dbus::MessageReader reader(method_call); | 401 dbus::MessageReader reader(method_call); |
| 402 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; | 402 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; |
| 403 std::string folder_name; | 403 std::string folder_name; |
| 404 std::string key; | 404 std::string key; |
| 405 std::string app_name; | 405 std::string app_name; |
| 406 EXPECT_TRUE(reader.PopInt32(&handle)); | 406 EXPECT_TRUE(reader.PopInt32(&handle)); |
| 407 EXPECT_TRUE(reader.PopString(&folder_name)); | 407 EXPECT_TRUE(reader.PopString(&folder_name)); |
| 408 EXPECT_TRUE(reader.PopString(&key)); | 408 EXPECT_TRUE(reader.PopString(&key)); |
| 409 EXPECT_TRUE(reader.PopString(&app_name)); | 409 EXPECT_TRUE(reader.PopString(&app_name)); |
| 410 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); | 410 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); |
| 411 TestKWallet::Blob value; | 411 TestKWallet::Blob value; |
| 412 if (wallet_.readEntry(folder_name, key, &value)) { | 412 if (wallet_.readEntry(folder_name, key, &value)) { |
| 413 response = dbus::Response::CreateEmpty(); | 413 response = dbus::Response::CreateEmpty(); |
| 414 dbus::MessageWriter writer(response); | 414 dbus::MessageWriter writer(response.get()); |
| 415 writer.AppendArrayOfBytes(value.data(), value.size()); | 415 writer.AppendArrayOfBytes(value.data(), value.size()); |
| 416 } | 416 } |
| 417 } else if (method_call->GetMember() == "writeEntry") { | 417 } else if (method_call->GetMember() == "writeEntry") { |
| 418 dbus::MessageReader reader(method_call); | 418 dbus::MessageReader reader(method_call); |
| 419 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; | 419 int handle = NativeBackendKWalletStub::kInvalidKWalletHandle; |
| 420 std::string folder_name; | 420 std::string folder_name; |
| 421 std::string key; | 421 std::string key; |
| 422 uint8_t* bytes = NULL; | 422 uint8_t* bytes = NULL; |
| 423 size_t length = 0; | 423 size_t length = 0; |
| 424 std::string app_name; | 424 std::string app_name; |
| 425 EXPECT_TRUE(reader.PopInt32(&handle)); | 425 EXPECT_TRUE(reader.PopInt32(&handle)); |
| 426 EXPECT_TRUE(reader.PopString(&folder_name)); | 426 EXPECT_TRUE(reader.PopString(&folder_name)); |
| 427 EXPECT_TRUE(reader.PopString(&key)); | 427 EXPECT_TRUE(reader.PopString(&key)); |
| 428 EXPECT_TRUE(reader.PopArrayOfBytes(&bytes, &length)); | 428 EXPECT_TRUE(reader.PopArrayOfBytes(&bytes, &length)); |
| 429 EXPECT_TRUE(reader.PopString(&app_name)); | 429 EXPECT_TRUE(reader.PopString(&app_name)); |
| 430 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); | 430 EXPECT_NE(NativeBackendKWalletStub::kInvalidKWalletHandle, handle); |
| 431 response = dbus::Response::CreateEmpty(); | 431 response = dbus::Response::CreateEmpty(); |
| 432 dbus::MessageWriter writer(response); | 432 dbus::MessageWriter writer(response.get()); |
| 433 writer.AppendInt32( | 433 writer.AppendInt32( |
| 434 wallet_.writeEntry(folder_name, key, | 434 wallet_.writeEntry(folder_name, key, |
| 435 TestKWallet::Blob(bytes, length)) ? 0 : 1); | 435 TestKWallet::Blob(bytes, length)) ? 0 : 1); |
| 436 } | 436 } |
| 437 | 437 |
| 438 EXPECT_FALSE(response == NULL); | 438 EXPECT_FALSE(response.get() == NULL); |
| 439 return response; | 439 return response.release(); |
| 440 } | 440 } |
| 441 | 441 |
| 442 void NativeBackendKWalletTest::CheckPasswordForms( | 442 void NativeBackendKWalletTest::CheckPasswordForms( |
| 443 const std::string& folder, const ExpectationArray& sorted_expected) { | 443 const std::string& folder, const ExpectationArray& sorted_expected) { |
| 444 EXPECT_TRUE(wallet_.hasFolder(folder)); | 444 EXPECT_TRUE(wallet_.hasFolder(folder)); |
| 445 std::vector<std::string> entries; | 445 std::vector<std::string> entries; |
| 446 EXPECT_TRUE(wallet_.entryList(folder, &entries)); | 446 EXPECT_TRUE(wallet_.entryList(folder, &entries)); |
| 447 EXPECT_EQ(sorted_expected.size(), entries.size()); | 447 EXPECT_EQ(sorted_expected.size(), entries.size()); |
| 448 std::sort(entries.begin(), entries.end()); | 448 std::sort(entries.begin(), entries.end()); |
| 449 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { | 449 for (size_t i = 0; i < entries.size() && i < sorted_expected.size(); ++i) { |
| (...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1079 CheckVersion0Pickle(true, PasswordForm::SCHEME_BASIC); | 1079 CheckVersion0Pickle(true, PasswordForm::SCHEME_BASIC); |
| 1080 } | 1080 } |
| 1081 | 1081 |
| 1082 TEST_F(NativeBackendKWalletPickleTest, ReadsOld64BitHTMLPickles) { | 1082 TEST_F(NativeBackendKWalletPickleTest, ReadsOld64BitHTMLPickles) { |
| 1083 CheckVersion0Pickle(false, PasswordForm::SCHEME_HTML); | 1083 CheckVersion0Pickle(false, PasswordForm::SCHEME_HTML); |
| 1084 } | 1084 } |
| 1085 | 1085 |
| 1086 TEST_F(NativeBackendKWalletPickleTest, ReadsOld64BitHTTPPickles) { | 1086 TEST_F(NativeBackendKWalletPickleTest, ReadsOld64BitHTTPPickles) { |
| 1087 CheckVersion0Pickle(false, PasswordForm::SCHEME_BASIC); | 1087 CheckVersion0Pickle(false, PasswordForm::SCHEME_BASIC); |
| 1088 } | 1088 } |
| OLD | NEW |