Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: chrome/browser/password_manager/kwallet_dbus_unittest.cc

Issue 2086123003: Move KWalletDBus util from the Password Manager to OSCrypt. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 "chrome/browser/password_manager/kwallet_dbus.h"
6
7 #include <memory>
8 #include <string>
9
10 #include "base/logging.h"
11 #include "base/nix/xdg_util.h"
12 #include "dbus/message.h"
13 #include "dbus/mock_bus.h"
14 #include "dbus/mock_object_proxy.h"
15 #include "dbus/object_path.h"
16 #include "dbus/object_proxy.h"
17 #include "testing/gmock/include/gmock/gmock.h"
18 #include "testing/gtest/include/gtest/gtest.h"
19
20 namespace {
21
22 using testing::_;
23 using testing::AllOf;
24 using testing::DoAll;
25 using testing::ElementsAreArray;
26 using testing::Invoke;
27 using testing::Return;
28 using testing::StrictMock;
29
30 const char kKWalletInterface[] = "org.kde.KWallet";
31 const char kKLauncherInterface[] = "org.kde.KLauncher";
32
33 dbus::Response* RespondBool(bool value) {
34 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
35 dbus::MessageWriter writer(response.get());
36 writer.AppendBool(value);
37 return response.release();
38 }
39
40 dbus::Response* RespondString(const std::string& value) {
41 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
42 dbus::MessageWriter writer(response.get());
43 writer.AppendString(value);
44 return response.release();
45 }
46
47 dbus::Response* RespondBytes(const std::vector<uint8_t>& bytes) {
48 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
49 dbus::MessageWriter writer(response.get());
50 writer.AppendArrayOfBytes(bytes.data(), bytes.size());
51 return response.release();
52 }
53
54 dbus::Response* RespondArrayOfStrings(const std::vector<std::string>& strings) {
55 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
56 dbus::MessageWriter writer(response.get());
57 writer.AppendArrayOfStrings(strings);
58 return response.release();
59 }
60
61 dbus::Response* RespondInt32(int value) {
62 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
63 dbus::MessageWriter writer(response.get());
64 writer.AppendInt32(value);
65 return response.release();
66 }
67
68 dbus::Response* RespondEmpty() {
69 return dbus::Response::CreateEmpty().release();
70 }
71
72 class KWalletDBusTest
73 : public testing::TestWithParam<base::nix::DesktopEnvironment> {
74 public:
75 KWalletDBusTest() : desktop_env_(GetParam()), kwallet_dbus_(desktop_env_) {
76 if (desktop_env_ == base::nix::DESKTOP_ENVIRONMENT_KDE5) {
77 dbus_service_name_ = "org.kde.kwalletd5";
78 dbus_path_ = "/modules/kwalletd5";
79 kwalletd_name_ = "kwalletd5";
80 } else {
81 dbus_service_name_ = "org.kde.kwalletd";
82 dbus_path_ = "/modules/kwalletd";
83 kwalletd_name_ = "kwalletd";
84 }
85
86 dbus::Bus::Options options;
87 options.bus_type = dbus::Bus::SESSION;
88 mock_session_bus_ = new dbus::MockBus(options);
89
90 mock_klauncher_proxy_ = new StrictMock<dbus::MockObjectProxy>(
91 mock_session_bus_.get(), "org.kde.klauncher",
92 dbus::ObjectPath("/KLauncher"));
93 mock_kwallet_proxy_ = new StrictMock<dbus::MockObjectProxy>(
94 mock_session_bus_.get(), dbus_service_name_,
95 dbus::ObjectPath(dbus_path_));
96
97 // The kwallet proxy is aquired once, when preparing |kwallet_dbus_|
98 EXPECT_CALL(
99 *mock_session_bus_.get(),
100 GetObjectProxy(dbus_service_name_, dbus::ObjectPath(dbus_path_)))
101 .WillOnce(Return(mock_kwallet_proxy_.get()));
102
103 kwallet_dbus_.SetSessionBus(mock_session_bus_);
104
105 testing::Mock::VerifyAndClearExpectations(mock_session_bus_.get());
106 }
107
108 protected:
109 const base::nix::DesktopEnvironment desktop_env_;
110 scoped_refptr<dbus::MockBus> mock_session_bus_;
111 scoped_refptr<dbus::MockObjectProxy> mock_klauncher_proxy_;
112 scoped_refptr<dbus::MockObjectProxy> mock_kwallet_proxy_;
113 KWalletDBus kwallet_dbus_;
114
115 std::string dbus_service_name_;
116 std::string dbus_path_;
117 std::string kwalletd_name_;
118
119 private:
120 DISALLOW_COPY_AND_ASSIGN(KWalletDBusTest);
121 };
122
123 INSTANTIATE_TEST_CASE_P(,
124 KWalletDBusTest,
125 ::testing::Values(base::nix::DESKTOP_ENVIRONMENT_KDE4,
126 base::nix::DESKTOP_ENVIRONMENT_KDE5));
127
128 // Matches a method call to the specified dbus target.
129 MATCHER_P2(Calls, interface, member, "") {
130 return arg->GetMember() == member && arg->GetInterface() == interface;
131 }
132
133 // Pops items from the dbus message and compares them to the expected values.
134 MATCHER_P3(ArgumentsAreIntStringString, int_1, str_2, str_3, "") {
135 dbus::MessageReader reader(arg);
136
137 int i;
138 EXPECT_TRUE(reader.PopInt32(&i));
139 if (int_1 != i)
140 return false;
141
142 std::string str;
143 EXPECT_TRUE(reader.PopString(&str));
144 if (str_2 != str)
145 return false;
146
147 EXPECT_TRUE(reader.PopString(&str));
148 if (str_3 != str)
149 return false;
150
151 return true;
152 }
153
154 // Pops items from the dbus message and compares them to the expected values.
155 MATCHER_P4(ArgumentsAreIntStringStringString, int_1, str_2, str_3, str_4, "") {
156 dbus::MessageReader reader(arg);
157
158 int i;
159 EXPECT_TRUE(reader.PopInt32(&i));
160 if (int_1 != i)
161 return false;
162
163 std::string str;
164 EXPECT_TRUE(reader.PopString(&str));
165 if (str_2 != str)
166 return false;
167
168 EXPECT_TRUE(reader.PopString(&str));
169 if (str_3 != str)
170 return false;
171
172 EXPECT_TRUE(reader.PopString(&str));
173 if (str_4 != str)
174 return false;
175
176 return true;
177 }
178
179 // Pops items from the dbus message and compares them to the expected values.
180 MATCHER_P5(ArgumentsAreIntStringStringBytesString,
181 int_1,
182 str_2,
183 str_3,
184 vec_4,
185 str_5,
186 "") {
187 dbus::MessageReader reader(arg);
188
189 int i;
190 EXPECT_TRUE(reader.PopInt32(&i));
191 if (int_1 != i)
192 return false;
193
194 std::string str;
195 EXPECT_TRUE(reader.PopString(&str));
196 if (str_2 != str)
197 return false;
198
199 EXPECT_TRUE(reader.PopString(&str));
200 if (str_3 != str)
201 return false;
202
203 const uint8_t* bytes = nullptr;
204 size_t length = 0;
205 EXPECT_TRUE(reader.PopArrayOfBytes(&bytes, &length));
206 std::vector<uint8_t> vec;
207 vec.assign(bytes, bytes + length);
208 if (vec_4 != vec)
209 return false;
210
211 EXPECT_TRUE(reader.PopString(&str));
212 if (str_5 != str)
213 return false;
214
215 return true;
216 }
217
218 // Pops items from the dbus message and compares them to the expected values.
219 MATCHER_P3(ArgumentsAreStringInt64String, str_1, int_2, str_3, "") {
220 dbus::MessageReader reader(arg);
221
222 std::string str;
223 EXPECT_TRUE(reader.PopString(&str));
224 if (str_1 != str)
225 return false;
226
227 int64_t i;
228 EXPECT_TRUE(reader.PopInt64(&i));
229 if (int_2 != i)
230 return false;
231
232 EXPECT_TRUE(reader.PopString(&str));
233 if (str_3 != str)
234 return false;
235
236 return true;
237 }
238
239 // Pops items from the dbus message and compares them to the expected values.
240 MATCHER_P5(ArgumentsAreStringStringsStringsStringBool,
241 str_1,
242 vec_2,
243 vec_3,
244 str_4,
245 bool_5,
246 "") {
247 dbus::MessageReader reader(arg);
248
249 std::string str;
250 EXPECT_TRUE(reader.PopString(&str));
251 if (str_1 != str)
252 return false;
253
254 std::vector<std::string> strings;
255 EXPECT_TRUE(reader.PopArrayOfStrings(&strings));
256 if (vec_2 != strings)
257 return false;
258
259 EXPECT_TRUE(reader.PopArrayOfStrings(&strings));
260 if (vec_3 != strings)
261 return false;
262
263 EXPECT_TRUE(reader.PopString(&str));
264 if (str_4 != str)
265 return false;
266
267 bool b;
268 EXPECT_TRUE(reader.PopBool(&b));
269 if (bool_5 != b)
270 return false;
271
272 return true;
273 }
274
275 TEST_P(KWalletDBusTest, StartWalletd) {
276 // The receiver of the message takes ownership of the response object.
277 dbus::Response* response_success = RespondEmpty();
278 dbus::MessageWriter writer(response_success);
279 writer.AppendInt32(0); // return code
280 writer.AppendString("dbus_name");
281 writer.AppendString(std::string()); // error message
282 writer.AppendInt32(100); // pid
283
284 EXPECT_CALL(
285 *mock_session_bus_.get(),
286 GetObjectProxy("org.kde.klauncher", dbus::ObjectPath("/KLauncher")))
287 .WillOnce(Return(mock_klauncher_proxy_.get()));
288
289 EXPECT_CALL(
290 *mock_klauncher_proxy_.get(),
291 MockCallMethodAndBlock(
292 AllOf(Calls(kKLauncherInterface, "start_service_by_desktop_name"),
293 ArgumentsAreStringStringsStringsStringBool(
294 kwalletd_name_, std::vector<std::string>(),
295 std::vector<std::string>(), std::string(), false)),
296 _))
297 .WillOnce(Return(response_success));
298
299 EXPECT_TRUE(kwallet_dbus_.StartKWalletd());
300 }
301
302 TEST_P(KWalletDBusTest, StartWalletdErrorRead) {
303 EXPECT_CALL(
304 *mock_session_bus_.get(),
305 GetObjectProxy("org.kde.klauncher", dbus::ObjectPath("/KLauncher")))
306 .WillOnce(Return(mock_klauncher_proxy_.get()));
307
308 EXPECT_CALL(
309 *mock_klauncher_proxy_.get(),
310 MockCallMethodAndBlock(
311 Calls(kKLauncherInterface, "start_service_by_desktop_name"), _))
312 .WillOnce(Return(RespondEmpty()));
313
314 EXPECT_FALSE(kwallet_dbus_.StartKWalletd());
315 }
316
317 TEST_P(KWalletDBusTest, StartWalletdErrorContact) {
318 EXPECT_CALL(
319 *mock_session_bus_.get(),
320 GetObjectProxy("org.kde.klauncher", dbus::ObjectPath("/KLauncher")))
321 .WillRepeatedly(Return(mock_klauncher_proxy_.get()));
322
323 EXPECT_CALL(
324 *mock_klauncher_proxy_.get(),
325 MockCallMethodAndBlock(
326 Calls(kKLauncherInterface, "start_service_by_desktop_name"), _))
327 .WillOnce(Return(nullptr));
328
329 EXPECT_FALSE(kwallet_dbus_.StartKWalletd());
330 }
331
332 TEST_P(KWalletDBusTest, IsEnabledTrue) {
333 EXPECT_CALL(*mock_kwallet_proxy_.get(),
334 MockCallMethodAndBlock(Calls(kKWalletInterface, "isEnabled"), _))
335 .WillOnce(Return(RespondBool(true)));
336
337 bool is_enabled = false;
338 EXPECT_EQ(KWalletDBus::Error::SUCCESS, kwallet_dbus_.IsEnabled(&is_enabled));
339 EXPECT_TRUE(is_enabled);
340 }
341
342 TEST_P(KWalletDBusTest, IsEnabledFalse) {
343 EXPECT_CALL(*mock_kwallet_proxy_.get(),
344 MockCallMethodAndBlock(Calls(kKWalletInterface, "isEnabled"), _))
345 .WillOnce(Return(RespondBool(false)));
346
347 bool is_enabled = true;
348 EXPECT_EQ(KWalletDBus::Error::SUCCESS, kwallet_dbus_.IsEnabled(&is_enabled));
349 EXPECT_FALSE(is_enabled);
350 }
351
352 TEST_P(KWalletDBusTest, IsEnabledErrorRead) {
353 EXPECT_CALL(*mock_kwallet_proxy_.get(),
354 MockCallMethodAndBlock(Calls(kKWalletInterface, "isEnabled"), _))
355 .WillOnce(Return(RespondEmpty()));
356
357 bool is_enabled = true;
358 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
359 kwallet_dbus_.IsEnabled(&is_enabled));
360 }
361
362 TEST_P(KWalletDBusTest, IsEnabledErrorContact) {
363 EXPECT_CALL(*mock_kwallet_proxy_.get(),
364 MockCallMethodAndBlock(Calls(kKWalletInterface, "isEnabled"), _))
365 .WillOnce(Return(nullptr));
366
367 bool is_enabled = true;
368 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
369 kwallet_dbus_.IsEnabled(&is_enabled));
370 }
371
372 TEST_P(KWalletDBusTest, NetworkWallet) {
373 EXPECT_CALL(
374 *mock_kwallet_proxy_.get(),
375 MockCallMethodAndBlock(Calls(kKWalletInterface, "networkWallet"), _))
376 .WillOnce(Return(RespondString("mock_wallet")));
377
378 std::string wallet;
379 EXPECT_EQ(KWalletDBus::Error::SUCCESS, kwallet_dbus_.NetworkWallet(&wallet));
380 EXPECT_EQ("mock_wallet", wallet);
381 }
382
383 TEST_P(KWalletDBusTest, NetworkWalletErrorRead) {
384 EXPECT_CALL(
385 *mock_kwallet_proxy_.get(),
386 MockCallMethodAndBlock(Calls(kKWalletInterface, "networkWallet"), _))
387 .WillOnce(Return(RespondEmpty()));
388
389 std::string wallet;
390 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
391 kwallet_dbus_.NetworkWallet(&wallet));
392 }
393
394 TEST_P(KWalletDBusTest, NetworkWalletErrorContact) {
395 EXPECT_CALL(
396 *mock_kwallet_proxy_.get(),
397 MockCallMethodAndBlock(Calls(kKWalletInterface, "networkWallet"), _))
398 .WillOnce(Return(nullptr));
399
400 std::string wallet;
401 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
402 kwallet_dbus_.NetworkWallet(&wallet));
403 }
404
405 TEST_P(KWalletDBusTest, Open) {
406 EXPECT_CALL(*mock_kwallet_proxy_.get(),
407 MockCallMethodAndBlock(
408 AllOf(Calls(kKWalletInterface, "open"),
409 ArgumentsAreStringInt64String("wallet", 0, "app")),
410 _))
411 .WillOnce(Return(RespondInt32(1234)));
412
413 int ret;
414 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
415 kwallet_dbus_.Open("wallet", "app", &ret));
416 EXPECT_EQ(1234, ret);
417 }
418
419 TEST_P(KWalletDBusTest, OpenErrorRead) {
420 EXPECT_CALL(*mock_kwallet_proxy_.get(),
421 MockCallMethodAndBlock(Calls(kKWalletInterface, "open"), _))
422 .WillOnce(Return(RespondEmpty()));
423
424 int ret;
425 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
426 kwallet_dbus_.Open("wallet", "app", &ret));
427 }
428
429 TEST_P(KWalletDBusTest, OpenErrorContact) {
430 EXPECT_CALL(*mock_kwallet_proxy_.get(),
431 MockCallMethodAndBlock(Calls(kKWalletInterface, "open"), _))
432 .WillOnce(Return(nullptr));
433
434 int ret;
435 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
436 kwallet_dbus_.Open("wallet", "app", &ret));
437 }
438
439 TEST_P(KWalletDBusTest, HasEntry) {
440 EXPECT_CALL(*mock_kwallet_proxy_.get(),
441 MockCallMethodAndBlock(AllOf(Calls(kKWalletInterface, "hasEntry"),
442 ArgumentsAreIntStringStringString(
443 123, "folder", "realm", "app")),
444 _))
445 .WillOnce(Return(RespondBool(true)));
446
447 bool has_entry = false;
448 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
449 kwallet_dbus_.HasEntry(123, "folder", "realm", "app", &has_entry));
450 EXPECT_TRUE(has_entry);
451 }
452
453 TEST_P(KWalletDBusTest, HasEntryErrorRead) {
454 EXPECT_CALL(*mock_kwallet_proxy_.get(),
455 MockCallMethodAndBlock(Calls(kKWalletInterface, "hasEntry"), _))
456 .WillOnce(Return(RespondEmpty()));
457
458 bool has_entry = false;
459 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
460 kwallet_dbus_.HasEntry(123, "folder", "realm", "app", &has_entry));
461 }
462
463 TEST_P(KWalletDBusTest, HasEntryErrorContact) {
464 EXPECT_CALL(*mock_kwallet_proxy_.get(),
465 MockCallMethodAndBlock(Calls(kKWalletInterface, "hasEntry"), _))
466 .WillOnce(Return(nullptr));
467
468 bool has_entry = false;
469 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
470 kwallet_dbus_.HasEntry(123, "folder", "realm", "app", &has_entry));
471 }
472
473 TEST_P(KWalletDBusTest, ReadEntry) {
474 const std::vector<uint8_t> bytes_expected = {1, 2, 1, 2};
475 EXPECT_CALL(
476 *mock_kwallet_proxy_.get(),
477 MockCallMethodAndBlock(AllOf(Calls(kKWalletInterface, "readEntry"),
478 ArgumentsAreIntStringStringString(
479 123, "folder", "realm", "app")),
480 _))
481 .WillOnce(Return(RespondBytes(bytes_expected)));
482
483 std::vector<uint8_t> bytes;
484 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
485 kwallet_dbus_.ReadEntry(123, "folder", "realm", "app", &bytes));
486 EXPECT_EQ(bytes_expected, bytes);
487 }
488
489 TEST_P(KWalletDBusTest, ReadEntryErrorRead) {
490 std::vector<uint8_t> bytes_expected = {1, 2, 1, 2};
491 EXPECT_CALL(*mock_kwallet_proxy_.get(),
492 MockCallMethodAndBlock(Calls(kKWalletInterface, "readEntry"), _))
493 .WillOnce(Return(RespondEmpty()));
494
495 std::vector<uint8_t> bytes;
496 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
497 kwallet_dbus_.ReadEntry(123, "folder", "realm", "app", &bytes));
498 }
499
500 TEST_P(KWalletDBusTest, ReadEntryErrorContact) {
501 std::vector<uint8_t> bytes_expected = {1, 2, 1, 2};
502 EXPECT_CALL(*mock_kwallet_proxy_.get(),
503 MockCallMethodAndBlock(Calls(kKWalletInterface, "readEntry"), _))
504 .WillOnce(Return(nullptr));
505
506 std::vector<uint8_t> bytes;
507 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
508 kwallet_dbus_.ReadEntry(123, "folder", "realm", "app", &bytes));
509 }
510
511 TEST_P(KWalletDBusTest, EntryList) {
512 std::vector<std::string> strings_expected = {"one", "two"};
513 EXPECT_CALL(*mock_kwallet_proxy_.get(),
514 MockCallMethodAndBlock(
515 AllOf(Calls(kKWalletInterface, "entryList"),
516 ArgumentsAreIntStringString(123, "folder", "app")),
517 _))
518 .WillOnce(Return(RespondArrayOfStrings(strings_expected)));
519
520 std::vector<std::string> strings;
521 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
522 kwallet_dbus_.EntryList(123, "folder", "app", &strings));
523 EXPECT_EQ(strings_expected, strings);
524 }
525
526 TEST_P(KWalletDBusTest, EntryListErrorRead) {
527 std::vector<std::string> strings_expected = {"one", "two"};
528 EXPECT_CALL(*mock_kwallet_proxy_.get(),
529 MockCallMethodAndBlock(Calls(kKWalletInterface, "entryList"), _))
530 .WillOnce(Return(RespondEmpty()));
531
532 std::vector<std::string> strings;
533 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
534 kwallet_dbus_.EntryList(123, "folder", "app", &strings));
535 }
536
537 TEST_P(KWalletDBusTest, EntryListErrorContact) {
538 std::vector<std::string> strings_expected = {"one", "two"};
539 EXPECT_CALL(*mock_kwallet_proxy_.get(),
540 MockCallMethodAndBlock(Calls(kKWalletInterface, "entryList"), _))
541 .WillOnce(Return(nullptr));
542
543 std::vector<std::string> strings;
544 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
545 kwallet_dbus_.EntryList(123, "folder", "app", &strings));
546 }
547
548 TEST_P(KWalletDBusTest, RemoveEntry) {
549 EXPECT_CALL(
550 *mock_kwallet_proxy_.get(),
551 MockCallMethodAndBlock(AllOf(Calls(kKWalletInterface, "removeEntry"),
552 ArgumentsAreIntStringStringString(
553 123, "folder", "realm", "app")),
554 _))
555 .WillOnce(Return(RespondInt32(0)));
556
557 int ret;
558 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
559 kwallet_dbus_.RemoveEntry(123, "folder", "realm", "app", &ret));
560 EXPECT_EQ(0, ret);
561 }
562
563 TEST_P(KWalletDBusTest, RemoveEntryErrorRead) {
564 EXPECT_CALL(
565 *mock_kwallet_proxy_.get(),
566 MockCallMethodAndBlock(Calls(kKWalletInterface, "removeEntry"), _))
567 .WillOnce(Return(RespondEmpty()));
568
569 int ret;
570 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
571 kwallet_dbus_.RemoveEntry(123, "folder", "realm", "app", &ret));
572 }
573
574 TEST_P(KWalletDBusTest, RemoveEntryErrorContact) {
575 EXPECT_CALL(
576 *mock_kwallet_proxy_.get(),
577 MockCallMethodAndBlock(Calls(kKWalletInterface, "removeEntry"), _))
578 .WillOnce(Return(nullptr));
579
580 int ret;
581 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
582 kwallet_dbus_.RemoveEntry(123, "folder", "realm", "app", &ret));
583 }
584
585 TEST_P(KWalletDBusTest, WriteEntry) {
586 std::vector<uint8_t> bytes = {1, 2, 3, 1};
587 EXPECT_CALL(
588 *mock_kwallet_proxy_.get(),
589 MockCallMethodAndBlock(AllOf(Calls(kKWalletInterface, "writeEntry"),
590 ArgumentsAreIntStringStringBytesString(
591 123, "folder", "realm", bytes, "app")),
592 _))
593 .WillOnce(Return(RespondInt32(0)));
594
595 int ret;
596 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
597 kwallet_dbus_.WriteEntry(123, "folder", "realm", "app",
598 bytes.data(), bytes.size(), &ret));
599 EXPECT_EQ(0, ret);
600 }
601
602 TEST_P(KWalletDBusTest, WriteEntryErrorRead) {
603 std::vector<uint8_t> bytes = {1, 2, 3, 1};
604 EXPECT_CALL(*mock_kwallet_proxy_.get(),
605 MockCallMethodAndBlock(Calls(kKWalletInterface, "writeEntry"), _))
606 .WillOnce(Return(RespondEmpty()));
607
608 int ret;
609 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
610 kwallet_dbus_.WriteEntry(123, "folder", "realm", "app",
611 bytes.data(), bytes.size(), &ret));
612 }
613
614 TEST_P(KWalletDBusTest, WriteEntryErrorContact) {
615 std::vector<uint8_t> bytes = {1, 2, 3, 1};
616 EXPECT_CALL(*mock_kwallet_proxy_.get(),
617 MockCallMethodAndBlock(Calls(kKWalletInterface, "writeEntry"), _))
618 .WillOnce(Return(nullptr));
619
620 int ret;
621 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
622 kwallet_dbus_.WriteEntry(123, "folder", "realm", "app",
623 bytes.data(), bytes.size(), &ret));
624 }
625
626 TEST_P(KWalletDBusTest, HasFolder) {
627 EXPECT_CALL(*mock_kwallet_proxy_.get(),
628 MockCallMethodAndBlock(
629 AllOf(Calls(kKWalletInterface, "hasFolder"),
630 ArgumentsAreIntStringString(123, "wallet", "app")),
631 _))
632 .WillOnce(Return(RespondBool(true)));
633
634 bool has_folder = false;
635 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
636 kwallet_dbus_.HasFolder(123, "wallet", "app", &has_folder));
637 EXPECT_EQ(true, has_folder);
638 }
639
640 TEST_P(KWalletDBusTest, HasFolderErrorRead) {
641 EXPECT_CALL(*mock_kwallet_proxy_.get(),
642 MockCallMethodAndBlock(Calls(kKWalletInterface, "hasFolder"), _))
643 .WillOnce(Return(RespondEmpty()));
644
645 bool has_folder = false;
646 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
647 kwallet_dbus_.HasFolder(123, "wallet", "app", &has_folder));
648 }
649
650 TEST_P(KWalletDBusTest, HasFolderErrorContact) {
651 EXPECT_CALL(*mock_kwallet_proxy_.get(),
652 MockCallMethodAndBlock(Calls(kKWalletInterface, "hasFolder"), _))
653 .WillOnce(Return(nullptr));
654
655 bool has_folder = false;
656 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
657 kwallet_dbus_.HasFolder(123, "wallet", "app", &has_folder));
658 }
659
660 TEST_P(KWalletDBusTest, CreateFolder) {
661 EXPECT_CALL(*mock_kwallet_proxy_.get(),
662 MockCallMethodAndBlock(
663 AllOf(Calls(kKWalletInterface, "createFolder"),
664 ArgumentsAreIntStringString(123, "folder", "app")),
665 _))
666 .WillOnce(Return(RespondBool(true)));
667
668 bool created_folder = false;
669 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
670 kwallet_dbus_.CreateFolder(123, "folder", "app", &created_folder));
671 EXPECT_EQ(true, created_folder);
672 }
673
674 TEST_P(KWalletDBusTest, CreateFolderErrorRead) {
675 EXPECT_CALL(
676 *mock_kwallet_proxy_.get(),
677 MockCallMethodAndBlock(Calls(kKWalletInterface, "createFolder"), _))
678 .WillOnce(Return(RespondEmpty()));
679
680 bool created_folder = false;
681 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
682 kwallet_dbus_.CreateFolder(123, "folder", "app", &created_folder));
683 }
684
685 TEST_P(KWalletDBusTest, CreateFolderErrorContact) {
686 EXPECT_CALL(
687 *mock_kwallet_proxy_.get(),
688 MockCallMethodAndBlock(Calls(kKWalletInterface, "createFolder"), _))
689 .WillOnce(Return(nullptr));
690
691 bool created_folder = false;
692 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
693 kwallet_dbus_.CreateFolder(123, "folder", "app", &created_folder));
694 }
695
696 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/password_manager/kwallet_dbus.cc ('k') | chrome/browser/password_manager/native_backend_kwallet_x.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698