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 |