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

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

Issue 2057123002: Refactor native_backend_kwallet_x (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup 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::Return;
24 using testing::Invoke;
25 using testing::DoAll;
26 using testing::ElementsAreArray;
27
28 const char kKWalletInterface[] = "org.kde.KWallet";
29 const char kKLauncherInterface[] = "org.kde.KLauncher";
30
31 dbus::Response* RespondBool(bool value) {
32 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
33 dbus::MessageWriter writer(response.get());
34 writer.AppendBool(value);
35 return response.release();
36 }
37
38 dbus::Response* RespondString(const std::string& value) {
39 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
40 dbus::MessageWriter writer(response.get());
41 writer.AppendString(value);
42 return response.release();
43 }
44
45 dbus::Response* RespondBytes(const uint8_t* bytes, int count) {
vasilii 2016/06/17 14:43:41 Why not passing const::vector here?
cfroussios 2016/06/20 13:00:43 Done.
46 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
47 dbus::MessageWriter writer(response.get());
48 writer.AppendArrayOfBytes(bytes, count);
49 return response.release();
50 }
51
52 dbus::Response* RespondArrayOfStrings(const std::vector<std::string>& strings) {
53 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
54 dbus::MessageWriter writer(response.get());
55 writer.AppendArrayOfStrings(strings);
56 return response.release();
57 }
58
59 dbus::Response* RespondInt32(int value) {
60 std::unique_ptr<dbus::Response> response(dbus::Response::CreateEmpty());
61 dbus::MessageWriter writer(response.get());
62 writer.AppendInt32(value);
63 return response.release();
64 }
65
66 dbus::Response* RespondEmpty() {
67 return dbus::Response::CreateEmpty().release();
68 }
69
70 class KWalletDBusTest
71 : public testing::TestWithParam<base::nix::DesktopEnvironment> {
72 public:
73 KWalletDBusTest() : desktop_env_(GetParam()), kwallet_dbus_(desktop_env_) {
74 if (desktop_env_ == base::nix::DESKTOP_ENVIRONMENT_KDE5) {
75 dbus_service_name_ = "org.kde.kwalletd5";
76 dbus_path_ = "/modules/kwalletd5";
77 kwalletd_name_ = "kwalletd5";
78 } else {
79 dbus_service_name_ = "org.kde.kwalletd";
80 dbus_path_ = "/modules/kwalletd";
81 kwalletd_name_ = "kwalletd";
82 }
83
84 dbus::Bus::Options options;
85 options.bus_type = dbus::Bus::SESSION;
86 mock_session_bus_ = new dbus::MockBus(options);
87
88 mock_klauncher_proxy_ =
89 new dbus::MockObjectProxy(mock_session_bus_.get(), "org.kde.klauncher",
90 dbus::ObjectPath("/KLauncher"));
91 mock_kwallet_proxy_ =
92 new dbus::MockObjectProxy(mock_session_bus_.get(), dbus_service_name_,
93 dbus::ObjectPath(dbus_path_));
94
95 // The kwallet proxy is aquired once, when preparing |kwallet_dbus_|
96 EXPECT_CALL(
97 *mock_session_bus_.get(),
98 GetObjectProxy(dbus_service_name_, dbus::ObjectPath(dbus_path_)))
99 .WillOnce(Return(mock_kwallet_proxy_.get()));
100
101 kwallet_dbus_.SetSessionBus(mock_session_bus_);
102
103 // No unexpected calls.
104 EXPECT_CALL(*mock_kwallet_proxy_.get(), MockCallMethodAndBlock(_, _))
105 .Times(0);
106
107 testing::Mock::VerifyAndClearExpectations(mock_session_bus_.get());
108 }
109
110 protected:
111 const base::nix::DesktopEnvironment desktop_env_;
112 scoped_refptr<dbus::MockBus> mock_session_bus_;
113 scoped_refptr<dbus::MockObjectProxy> mock_klauncher_proxy_;
114 scoped_refptr<dbus::MockObjectProxy> mock_kwallet_proxy_;
115 KWalletDBus kwallet_dbus_;
116
117 std::string dbus_service_name_;
118 std::string dbus_path_;
119 std::string kwalletd_name_;
120
121 private:
122 DISALLOW_COPY_AND_ASSIGN(KWalletDBusTest);
123 };
124
125 INSTANTIATE_TEST_CASE_P(,
126 KWalletDBusTest,
127 ::testing::Values(base::nix::DESKTOP_ENVIRONMENT_KDE4,
128 base::nix::DESKTOP_ENVIRONMENT_KDE5));
129
130 // Matches a method call to the specified dbus target.
131 MATCHER_P2(Calls, interface, member, "") {
132 return arg->GetMember() == member && arg->GetInterface() == interface;
133 }
134
135 // Pops items from the dbus message and compares them to the expected values.
136 ACTION_P3(PopIntStringString, int_1, str_2, str_3) {
137 dbus::MessageReader reader(arg0);
138
139 int i;
140 EXPECT_TRUE(reader.PopInt32(&i));
141 EXPECT_EQ(int_1, i);
142
143 std::string str;
144 EXPECT_TRUE(reader.PopString(&str));
145 EXPECT_EQ(str_2, str);
146
147 EXPECT_TRUE(reader.PopString(&str));
148 EXPECT_EQ(str_3, str);
149 }
150
151 // Pops items from the dbus message and compares them to the expected values.
152 ACTION_P4(PopIntStringStringString, int_1, str_2, str_3, str_4) {
153 dbus::MessageReader reader(arg0);
154
155 int i;
156 EXPECT_TRUE(reader.PopInt32(&i));
157 EXPECT_EQ(int_1, i);
158 std::string str;
159
160 EXPECT_TRUE(reader.PopString(&str));
161 EXPECT_EQ(str_2, str);
162
163 EXPECT_TRUE(reader.PopString(&str));
164 EXPECT_EQ(str_3, str);
165
166 EXPECT_TRUE(reader.PopString(&str));
167 EXPECT_EQ(str_4, str);
168 }
169
170 // Pops items from the dbus message and compares them to the expected values.
171 ACTION_P5(PopIntStringStringVectorString, int_1, str_2, str_3, vec_4, str_5) {
172 dbus::MessageReader reader(arg0);
173
174 int i;
175 EXPECT_TRUE(reader.PopInt32(&i));
176 EXPECT_EQ(int_1, i);
177
178 std::string str;
179 EXPECT_TRUE(reader.PopString(&str));
180 EXPECT_EQ(str_2, str);
181
182 EXPECT_TRUE(reader.PopString(&str));
183 EXPECT_EQ(str_3, str);
184
185 const uint8_t* bytes = nullptr;
186 size_t length = 0;
187 EXPECT_TRUE(reader.PopArrayOfBytes(&bytes, &length));
188 EXPECT_EQ(vec_4.size(), length);
189 EXPECT_THAT(vec_4, ElementsAreArray(bytes, length));
190
191 EXPECT_TRUE(reader.PopString(&str));
192 EXPECT_EQ(str_5, str);
193 }
194
195 // Pops items from the dbus message and compares them to the expected values.
196 ACTION_P3(PopStringInt64String, str_1, int_2, str_3) {
197 dbus::MessageReader reader(arg0);
198
199 std::string str;
200 EXPECT_TRUE(reader.PopString(&str));
201 EXPECT_EQ(str_1, str);
202
203 int64_t i;
204 EXPECT_TRUE(reader.PopInt64(&i));
205 EXPECT_EQ(int_2, i);
206
207 EXPECT_TRUE(reader.PopString(&str));
208 EXPECT_EQ(str_3, str);
209 }
210
211 // Pops items from the dbus message and compares them to the expected values.
212 ACTION_P5(PopStringStringsStringsStringBool,
213 str_1,
214 vec_2,
215 vec_3,
216 str_4,
217 bool_5) {
218 dbus::MessageReader reader(arg0);
219
220 std::string str;
221 EXPECT_TRUE(reader.PopString(&str));
222 EXPECT_EQ(str_1, str);
223
224 std::vector<std::string> strings;
225 EXPECT_TRUE(reader.PopArrayOfStrings(&strings));
226 EXPECT_EQ(vec_2, strings);
227
228 EXPECT_TRUE(reader.PopArrayOfStrings(&strings));
229 EXPECT_EQ(vec_3, strings);
230
231 EXPECT_TRUE(reader.PopString(&str));
232 EXPECT_EQ(str_4, str);
233
234 bool b;
235 EXPECT_TRUE(reader.PopBool(&b));
236 EXPECT_EQ(bool_5, b);
237 }
238
239 TEST_P(KWalletDBusTest, StartWalletd) {
240 // The receiver of the message takes ownership of the response object.
241 dbus::Response* response_success = dbus::Response::CreateEmpty().release();
vasilii 2016/06/17 14:43:41 RespondEmpty()?
cfroussios 2016/06/20 13:00:43 Done.
242 dbus::MessageWriter writer(response_success);
243 writer.AppendInt32(0); // return code
244 writer.AppendString("dbus_name");
245 writer.AppendString(std::string()); // error message
246 writer.AppendInt32(100); // pid
247
248 const std::vector<std::string> empty;
vasilii 2016/06/17 14:43:41 I don't think it makes test more readable.
cfroussios 2016/06/20 13:00:43 Done.
249
250 EXPECT_CALL(
251 *mock_session_bus_.get(),
252 GetObjectProxy("org.kde.klauncher", dbus::ObjectPath("/KLauncher")))
253 .WillOnce(Return(mock_klauncher_proxy_.get()));
254
255 EXPECT_CALL(
256 *mock_klauncher_proxy_.get(),
257 MockCallMethodAndBlock(
258 Calls(kKLauncherInterface, "start_service_by_desktop_name"), _))
259 .WillOnce(DoAll(PopStringStringsStringsStringBool(
260 kwalletd_name_, empty, empty, std::string(), false),
261 Return(response_success)));
262
263 EXPECT_TRUE(kwallet_dbus_.StartKWalletd());
264 }
265
266 TEST_P(KWalletDBusTest, StartWalletdErrors) {
267 EXPECT_CALL(
268 *mock_session_bus_.get(),
269 GetObjectProxy("org.kde.klauncher", dbus::ObjectPath("/KLauncher")))
270 .Times(2)
271 .WillRepeatedly(Return(mock_klauncher_proxy_.get()));
272
273 EXPECT_CALL(
274 *mock_klauncher_proxy_.get(),
275 MockCallMethodAndBlock(
276 Calls(kKLauncherInterface, "start_service_by_desktop_name"), _))
277 .WillOnce(Return(RespondEmpty()))
278 .WillOnce(Return(nullptr));
vasilii 2016/06/17 14:43:41 You definitely merged two tests together here. The
cfroussios 2016/06/20 13:00:43 Done.
279
280 EXPECT_FALSE(kwallet_dbus_.StartKWalletd());
281 EXPECT_FALSE(kwallet_dbus_.StartKWalletd());
282 }
283
284 TEST_P(KWalletDBusTest, IsEnabled) {
285 EXPECT_CALL(*mock_kwallet_proxy_.get(),
286 MockCallMethodAndBlock(Calls(kKWalletInterface, "isEnabled"), _))
287 .WillOnce(Return(RespondBool(false)))
288 .WillOnce(Return(RespondBool(true)));
289
290 bool is_enabled = true;
291 EXPECT_EQ(KWalletDBus::Error::SUCCESS, kwallet_dbus_.IsEnabled(&is_enabled));
292 EXPECT_FALSE(is_enabled);
293
294 is_enabled = false;
295 EXPECT_EQ(KWalletDBus::Error::SUCCESS, kwallet_dbus_.IsEnabled(&is_enabled));
296 EXPECT_TRUE(is_enabled);
297 }
298
299 TEST_P(KWalletDBusTest, IsEnabledErrors) {
300 EXPECT_CALL(*mock_kwallet_proxy_.get(),
301 MockCallMethodAndBlock(Calls(kKWalletInterface, "isEnabled"), _))
302 .WillOnce(Return(RespondEmpty()))
303 .WillOnce(Return(nullptr));
304
305 bool is_enabled = true;
306 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
307 kwallet_dbus_.IsEnabled(&is_enabled));
308 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
309 kwallet_dbus_.IsEnabled(&is_enabled));
310 }
311
312 TEST_P(KWalletDBusTest, NetworkWallet) {
313 EXPECT_CALL(
314 *mock_kwallet_proxy_.get(),
315 MockCallMethodAndBlock(Calls(kKWalletInterface, "networkWallet"), _))
316 .WillOnce(Return(RespondString("mock_wallet")));
317
318 std::string wallet;
319 EXPECT_EQ(KWalletDBus::Error::SUCCESS, kwallet_dbus_.NetworkWallet(&wallet));
320 EXPECT_EQ("mock_wallet", wallet);
321 }
322
323 TEST_P(KWalletDBusTest, Open) {
324 EXPECT_CALL(*mock_kwallet_proxy_.get(),
325 MockCallMethodAndBlock(Calls(kKWalletInterface, "open"), _))
326 .WillOnce(DoAll(PopStringInt64String("wallet", 0, "app"),
327 Return(RespondInt32(1234))));
328
329 int ret;
330 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
331 kwallet_dbus_.Open("wallet", "app", &ret));
332 EXPECT_EQ(1234, ret);
333 }
334
335 TEST_P(KWalletDBusTest, OpenErrors) {
336 EXPECT_CALL(*mock_kwallet_proxy_.get(),
337 MockCallMethodAndBlock(Calls(kKWalletInterface, "open"), _))
338 .WillOnce(Return(RespondEmpty()))
339 .WillOnce(Return(nullptr));
340
341 int ret;
342 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
343 kwallet_dbus_.Open("wallet", "app", &ret));
344 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
345 kwallet_dbus_.Open("wallet", "app", &ret));
346 }
347
348 TEST_P(KWalletDBusTest, NetworkWalletErrors) {
349 EXPECT_CALL(
350 *mock_kwallet_proxy_.get(),
351 MockCallMethodAndBlock(Calls(kKWalletInterface, "networkWallet"), _))
352 .WillOnce(Return(RespondEmpty()))
353 .WillOnce(Return(nullptr));
354
355 std::string wallet;
356 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
357 kwallet_dbus_.NetworkWallet(&wallet));
358 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
359 kwallet_dbus_.NetworkWallet(&wallet));
360 }
361
362 TEST_P(KWalletDBusTest, HasEntry) {
363 EXPECT_CALL(*mock_kwallet_proxy_.get(),
364 MockCallMethodAndBlock(Calls(kKWalletInterface, "hasEntry"), _))
365 .WillOnce(DoAll(PopIntStringStringString(123, "folder", "realm", "app"),
366 Return(RespondBool(true))));
367
368 bool has_entry = false;
369 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
370 kwallet_dbus_.HasEntry(123, "folder", "realm", "app", &has_entry));
371 EXPECT_TRUE(has_entry);
372 }
373
374 TEST_P(KWalletDBusTest, HasEntryErrors) {
375 EXPECT_CALL(*mock_kwallet_proxy_.get(),
376 MockCallMethodAndBlock(Calls(kKWalletInterface, "hasEntry"), _))
377 .WillOnce(Return(RespondEmpty()))
378 .WillOnce(Return(nullptr));
379
380 bool has_entry = false;
381 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
382 kwallet_dbus_.HasEntry(123, "folder", "realm", "app", &has_entry));
383 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
384 kwallet_dbus_.HasEntry(123, "folder", "realm", "app", &has_entry));
385 }
386
387 TEST_P(KWalletDBusTest, ReadEntry) {
388 std::vector<uint8_t> bytes_expected = {1, 2, 1, 2};
389 EXPECT_CALL(*mock_kwallet_proxy_.get(),
390 MockCallMethodAndBlock(Calls(kKWalletInterface, "readEntry"), _))
391 .WillOnce(DoAll(
392 PopIntStringStringString(123, "folder", "realm", "app"),
393 Return(RespondBytes(bytes_expected.data(), bytes_expected.size()))));
394
395 std::vector<uint8_t> bytes;
396 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
397 kwallet_dbus_.ReadEntry(123, "folder", "realm", "app", &bytes));
398 EXPECT_EQ(bytes_expected, bytes);
399 }
400
401 TEST_P(KWalletDBusTest, ReadEntryErrors) {
402 std::vector<uint8_t> bytes_expected = {1, 2, 1, 2};
403 EXPECT_CALL(*mock_kwallet_proxy_.get(),
404 MockCallMethodAndBlock(Calls(kKWalletInterface, "readEntry"), _))
405 .WillOnce(Return(RespondEmpty()))
406 .WillOnce(Return(nullptr));
407
408 std::vector<uint8_t> bytes;
409 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
410 kwallet_dbus_.ReadEntry(123, "folder", "realm", "app", &bytes));
411 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
412 kwallet_dbus_.ReadEntry(123, "folder", "realm", "app", &bytes));
413 }
414
415 TEST_P(KWalletDBusTest, EntryList) {
416 std::vector<std::string> strings_expected = {"one", "two"};
417 EXPECT_CALL(*mock_kwallet_proxy_.get(),
418 MockCallMethodAndBlock(Calls(kKWalletInterface, "entryList"), _))
419 .WillOnce(DoAll(PopIntStringString(123, "folder", "app"),
420 Return(RespondArrayOfStrings(strings_expected))));
421
422 std::vector<std::string> strings;
423 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
424 kwallet_dbus_.EntryList(123, "folder", "app", &strings));
425 EXPECT_EQ(strings_expected, strings);
426 }
427
428 TEST_P(KWalletDBusTest, EntryListErrors) {
429 std::vector<std::string> strings_expected = {"one", "two"};
430 EXPECT_CALL(*mock_kwallet_proxy_.get(),
431 MockCallMethodAndBlock(Calls(kKWalletInterface, "entryList"), _))
432 .WillOnce(Return(RespondEmpty()))
433 .WillOnce(Return(nullptr));
434
435 std::vector<std::string> strings;
436 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
437 kwallet_dbus_.EntryList(123, "folder", "app", &strings));
438 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
439 kwallet_dbus_.EntryList(123, "folder", "app", &strings));
440 }
441
442 TEST_P(KWalletDBusTest, RemoveEntry) {
443 EXPECT_CALL(
444 *mock_kwallet_proxy_.get(),
445 MockCallMethodAndBlock(Calls(kKWalletInterface, "removeEntry"), _))
446 .WillOnce(DoAll(PopIntStringStringString(123, "folder", "realm", "app"),
447 Return(RespondInt32(0))));
448
449 int ret;
450 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
451 kwallet_dbus_.RemoveEntry(123, "folder", "realm", "app", &ret));
452 EXPECT_EQ(0, ret);
453 }
454
455 TEST_P(KWalletDBusTest, RemoveEntryErrors) {
456 EXPECT_CALL(
457 *mock_kwallet_proxy_.get(),
458 MockCallMethodAndBlock(Calls(kKWalletInterface, "removeEntry"), _))
459 .WillOnce(Return(RespondEmpty()))
460 .WillOnce(Return(nullptr));
461
462 int ret;
463 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
464 kwallet_dbus_.RemoveEntry(123, "folder", "realm", "app", &ret));
465 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
466 kwallet_dbus_.RemoveEntry(123, "folder", "realm", "app", &ret));
467 }
468
469 TEST_P(KWalletDBusTest, WriteEntry) {
470 std::vector<uint8_t> bytes = {1, 2, 3, 1};
471 EXPECT_CALL(*mock_kwallet_proxy_.get(),
472 MockCallMethodAndBlock(Calls(kKWalletInterface, "writeEntry"), _))
473 .WillOnce(DoAll(
474 PopIntStringStringVectorString(123, "folder", "realm", bytes, "app"),
475 Return(RespondInt32(0))));
476
477 int ret;
478 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
479 kwallet_dbus_.WriteEntry(123, "folder", "realm", "app",
480 bytes.data(), bytes.size(), &ret));
481 EXPECT_EQ(0, ret);
482 }
483
484 TEST_P(KWalletDBusTest, WriteEntryErrors) {
485 std::vector<uint8_t> bytes = {1, 2, 3, 1};
486 EXPECT_CALL(*mock_kwallet_proxy_.get(),
487 MockCallMethodAndBlock(Calls(kKWalletInterface, "writeEntry"), _))
488 .WillOnce(Return(RespondEmpty()))
489 .WillOnce(Return(nullptr));
490
491 int ret;
492 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
493 kwallet_dbus_.WriteEntry(123, "folder", "realm", "app",
494 bytes.data(), bytes.size(), &ret));
495 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
496 kwallet_dbus_.WriteEntry(123, "folder", "realm", "app",
497 bytes.data(), bytes.size(), &ret));
498 }
499
500 TEST_P(KWalletDBusTest, HasFolder) {
501 EXPECT_CALL(*mock_kwallet_proxy_.get(),
502 MockCallMethodAndBlock(Calls(kKWalletInterface, "hasFolder"), _))
503 .WillOnce(DoAll(PopIntStringString(123, "wallet", "app"),
504 Return(RespondBool(true))));
505
506 bool has_folder = false;
507 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
508 kwallet_dbus_.HasFolder(123, "wallet", "app", &has_folder));
509 EXPECT_EQ(true, has_folder);
510 }
511
512 TEST_P(KWalletDBusTest, HasFolderErrors) {
513 EXPECT_CALL(*mock_kwallet_proxy_.get(),
514 MockCallMethodAndBlock(Calls(kKWalletInterface, "hasFolder"), _))
515 .WillOnce(Return(RespondEmpty()))
516 .WillOnce(Return(nullptr));
517
518 bool has_folder = false;
519 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
520 kwallet_dbus_.HasFolder(123, "wallet", "app", &has_folder));
521 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
522 kwallet_dbus_.HasFolder(123, "wallet", "app", &has_folder));
523 }
524
525 TEST_P(KWalletDBusTest, CreateFolder) {
526 EXPECT_CALL(
527 *mock_kwallet_proxy_.get(),
528 MockCallMethodAndBlock(Calls(kKWalletInterface, "createFolder"), _))
529 .WillOnce(DoAll(PopIntStringString(123, "folder", "app"),
530 Return(RespondBool(true))));
531
532 bool created_folder = false;
533 EXPECT_EQ(KWalletDBus::Error::SUCCESS,
534 kwallet_dbus_.CreateFolder(123, "folder", "app", &created_folder));
535 EXPECT_EQ(true, created_folder);
536 }
537
538 TEST_P(KWalletDBusTest, CreateFolderErrors) {
539 EXPECT_CALL(
540 *mock_kwallet_proxy_.get(),
541 MockCallMethodAndBlock(Calls(kKWalletInterface, "createFolder"), _))
542 .WillOnce(Return(RespondEmpty()))
543 .WillOnce(Return(nullptr));
544
545 bool created_folder = false;
546 EXPECT_EQ(KWalletDBus::Error::CANNOT_READ,
547 kwallet_dbus_.CreateFolder(123, "folder", "app", &created_folder));
548 EXPECT_EQ(KWalletDBus::Error::CANNOT_CONTACT,
549 kwallet_dbus_.CreateFolder(123, "folder", "app", &created_folder));
550 }
551
552 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698