21
21
#include <unity/storage/provider/testing/TestServer.h>
23
23
#include "TestProvider.h"
24
#include "ProviderClient.h"
26
#include <utils/DBusEnvironment.h>
25
#include <utils/ProviderFixture.h>
28
27
#include <gtest/gtest.h>
29
28
#include <OnlineAccounts/Account>
59
class ProviderInterfaceTest : public ::testing::Test
57
class ProviderInterfaceTest : public ProviderFixture
62
QDBusConnection const& connection()
64
return dbus_->connection();
67
void make_provider(unique_ptr<ProviderBase>&& provider)
69
account_manager_->waitForReady();
70
OnlineAccounts::Account* account = account_manager_->account(
72
ASSERT_NE(nullptr, account);
75
new TestServer(move(provider), account,
76
*service_connection_, BUS_PATH.toStdString()));
78
client_.reset(new ProviderClient(service_connection_->baseService(),
83
void wait_for(QDBusPendingCall const& call) {
84
QDBusPendingCallWatcher watcher(call);
85
QSignalSpy spy(&watcher, &QDBusPendingCallWatcher::finished);
86
ASSERT_TRUE(spy.wait());
90
60
void SetUp() override
92
dbus_.reset(new DBusEnvironment);
93
dbus_->start_services();
94
service_connection_.reset(
95
new QDBusConnection(QDBusConnection::connectToBus(
96
dbus_->busAddress(), SERVICE_CONNECTION_NAME)));
97
account_manager_.reset(new OnlineAccounts::Manager(
98
"", *service_connection_));
62
client_.reset(new ProviderClient(service_connection_->baseService(), BUS_PATH, connection()));
101
65
void TearDown() override
104
test_server_.reset();
105
service_connection_.reset();
106
QDBusConnection::disconnectFromBus(SERVICE_CONNECTION_NAME);
110
unique_ptr<DBusEnvironment> dbus_;
111
unique_ptr<QDBusConnection> service_connection_;
112
unique_ptr<OnlineAccounts::Manager> account_manager_;
113
unique_ptr<TestServer> test_server_;
114
unique_ptr<ProviderClient> client_;
70
std::unique_ptr<ProviderClient> client_;
118
73
TEST_F(ProviderInterfaceTest, roots)
120
make_provider(unique_ptr<ProviderBase>(new TestProvider));
75
set_provider(unique_ptr<ProviderBase>(new TestProvider));
122
77
auto reply = client_->Roots();
134
89
TEST_F(ProviderInterfaceTest, list)
136
make_provider(unique_ptr<ProviderBase>(new TestProvider));
91
set_provider(unique_ptr<ProviderBase>(new TestProvider));
138
93
auto reply = client_->List("root_id", "");
172
127
TEST_F(ProviderInterfaceTest, lookup)
174
make_provider(unique_ptr<ProviderBase>(new TestProvider));
129
set_provider(unique_ptr<ProviderBase>(new TestProvider));
176
131
auto reply = client_->Lookup("root_id", "Filename");
188
143
TEST_F(ProviderInterfaceTest, metadata)
190
make_provider(unique_ptr<ProviderBase>(new TestProvider));
145
set_provider(unique_ptr<ProviderBase>(new TestProvider));
192
147
auto reply = client_->Metadata("root_id");
202
157
TEST_F(ProviderInterfaceTest, create_folder)
204
make_provider(unique_ptr<ProviderBase>(new TestProvider));
159
set_provider(unique_ptr<ProviderBase>(new TestProvider));
206
161
auto reply = client_->CreateFolder("root_id", "New Folder");
216
171
TEST_F(ProviderInterfaceTest, create_file)
218
make_provider(unique_ptr<ProviderBase>(new TestProvider));
173
set_provider(unique_ptr<ProviderBase>(new TestProvider));
220
175
const std::string file_contents = "Hello world!";
221
176
QString upload_id;
264
219
TEST_F(ProviderInterfaceTest, update)
266
make_provider(unique_ptr<ProviderBase>(new TestProvider));
221
set_provider(unique_ptr<ProviderBase>(new TestProvider));
268
223
const std::string file_contents = "Hello world!";
269
224
QString upload_id;
310
265
TEST_F(ProviderInterfaceTest, upload_short_write)
312
make_provider(unique_ptr<ProviderBase>(new TestProvider));
267
set_provider(unique_ptr<ProviderBase>(new TestProvider));
314
269
QString upload_id;
315
270
QDBusUnixFileDescriptor socket;
330
285
TEST_F(ProviderInterfaceTest, upload_long_write)
332
make_provider(unique_ptr<ProviderBase>(new TestProvider));
287
set_provider(unique_ptr<ProviderBase>(new TestProvider));
334
289
const std::string file_contents = "Hello world!";
335
290
QString upload_id;
375
330
TEST_F(ProviderInterfaceTest, cancel_upload)
377
make_provider(unique_ptr<ProviderBase>(new TestProvider));
332
set_provider(unique_ptr<ProviderBase>(new TestProvider));
379
334
QString upload_id;
380
335
QDBusUnixFileDescriptor socket;
393
348
TEST_F(ProviderInterfaceTest, finish_upload_unknown)
395
make_provider(unique_ptr<ProviderBase>(new TestProvider));
350
set_provider(unique_ptr<ProviderBase>(new TestProvider));
397
352
auto reply = client_->FinishUpload("no-such-upload");
399
354
ASSERT_TRUE(reply.isError());
400
355
EXPECT_EQ(PROVIDER_ERROR + "UnknownException", reply.error().name());
401
EXPECT_EQ("map::at", reply.error().message());
356
EXPECT_EQ("unknown exception thrown by provider: map::at", reply.error().message());
404
359
TEST_F(ProviderInterfaceTest, download)
406
make_provider(unique_ptr<ProviderBase>(new TestProvider));
361
set_provider(unique_ptr<ProviderBase>(new TestProvider));
408
363
QString download_id;
409
364
QDBusUnixFileDescriptor socket;
447
402
TEST_F(ProviderInterfaceTest, download_short_read)
449
make_provider(unique_ptr<ProviderBase>(new TestProvider));
404
set_provider(unique_ptr<ProviderBase>(new TestProvider));
451
406
QString download_id;
452
407
QDBusUnixFileDescriptor socket;
467
422
TEST_F(ProviderInterfaceTest, finish_download_unknown)
469
make_provider(unique_ptr<ProviderBase>(new TestProvider));
424
set_provider(unique_ptr<ProviderBase>(new TestProvider));
471
426
auto reply = client_->FinishDownload("no-such-download");
473
428
ASSERT_TRUE(reply.isError());
474
429
EXPECT_EQ(PROVIDER_ERROR + "UnknownException", reply.error().name());
475
EXPECT_EQ("map::at", reply.error().message());
430
EXPECT_EQ("unknown exception thrown by provider: map::at", reply.error().message());
478
433
TEST_F(ProviderInterfaceTest, delete_)
480
make_provider(unique_ptr<ProviderBase>(new TestProvider));
435
set_provider(unique_ptr<ProviderBase>(new TestProvider));
482
437
auto reply = client_->Delete("item_id");
487
442
TEST_F(ProviderInterfaceTest, move)
489
make_provider(unique_ptr<ProviderBase>(new TestProvider));
444
set_provider(unique_ptr<ProviderBase>(new TestProvider));
491
446
auto reply = client_->Move("child_id", "new_parent_id", "New name");
501
456
TEST_F(ProviderInterfaceTest, copy)
503
make_provider(unique_ptr<ProviderBase>(new TestProvider));
458
set_provider(unique_ptr<ProviderBase>(new TestProvider));
505
460
auto reply = client_->Copy("child_id", "new_parent_id", "New name");