mirror of
https://github.com/falk-werner/webfuse-provider
synced 2026-03-02 04:09:18 +00:00
put wf_client into a separate thread for testing
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
#include <gtest/gtest.h>
|
||||
#include <gmock/gmock.h>
|
||||
|
||||
#include "webfuse/adapter/client.h"
|
||||
#include "webfuse/adapter/credentials.h"
|
||||
#include "webfuse/utils/adapter_client.hpp"
|
||||
|
||||
#include "webfuse/adapter/credentials.h"
|
||||
#include "webfuse/core/protocol_names.h"
|
||||
#include "webfuse/utils/ws_server2.hpp"
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "webfuse/mocks/mock_invokation_handler.hpp"
|
||||
#include "webfuse/utils/timeout_watcher.hpp"
|
||||
|
||||
using webfuse_test::AdapterClient;
|
||||
using webfuse_test::WsServer2;
|
||||
using webfuse_test::MockInvokationHander;
|
||||
using webfuse_test::MockAdapterClientCallback;
|
||||
@@ -34,79 +35,6 @@ void GetCredentials(wf_client *, int, void * arg)
|
||||
wf_credentials_add(creds, "password", "secret");
|
||||
}
|
||||
|
||||
enum class connection_state
|
||||
{
|
||||
disconnected,
|
||||
connected,
|
||||
connecting
|
||||
};
|
||||
|
||||
struct context
|
||||
{
|
||||
connection_state state;
|
||||
};
|
||||
|
||||
void callback(
|
||||
wf_client * client,
|
||||
int reason,
|
||||
void * args)
|
||||
{
|
||||
auto * ctx = reinterpret_cast<context*>(wf_client_get_userdata(client));
|
||||
|
||||
switch (reason)
|
||||
{
|
||||
case WF_CLIENT_CREATED:
|
||||
ctx->state = connection_state::connecting;
|
||||
wf_client_connect(client, "ws://dummy-server/");
|
||||
break;
|
||||
case WF_CLIENT_CONNECTED:
|
||||
ctx->state = connection_state::connected;
|
||||
wf_client_authenticate(client);
|
||||
break;
|
||||
case WF_CLIENT_AUTHENTICATED:
|
||||
wf_client_add_filesystem(client, ".", "test");
|
||||
break;
|
||||
case WF_CLIENT_AUTHENTICATION_FAILED:
|
||||
wf_client_disconnect(client);
|
||||
break;
|
||||
case WF_CLIENT_AUTHENTICATE_GET_CREDENTIALS:
|
||||
{
|
||||
auto * credentials = reinterpret_cast<wf_credentials*>(args);
|
||||
wf_credentials_set_type(credentials, "username");
|
||||
wf_credentials_add(credentials, "user", "bob");
|
||||
wf_credentials_add(credentials, "password", "secret");
|
||||
}
|
||||
break;
|
||||
case WF_CLIENT_FILESYSTEM_ADDED:
|
||||
// operational
|
||||
break;
|
||||
case WF_CLIENT_FILESYSTEM_ADD_FAILED:
|
||||
wf_client_disconnect(client);
|
||||
break;
|
||||
case WF_CLIENT_DISCONNECTED:
|
||||
ctx->state = connection_state::disconnected;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
TEST(AdapterClient, GeneralUsage)
|
||||
{
|
||||
context ctx;
|
||||
ctx.state = connection_state::connecting;
|
||||
|
||||
wf_client * client = wf_client_create(
|
||||
&callback, reinterpret_cast<void*>(&ctx));
|
||||
|
||||
while (ctx.state != connection_state::disconnected)
|
||||
{
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_dispose(client);
|
||||
}
|
||||
|
||||
TEST(AdapterClient, CreateAndDispose)
|
||||
@@ -141,25 +69,19 @@ TEST(AdapterClient, Connect)
|
||||
EXPECT_CALL(callback, Invoke(_, WF_CLIENT_CONNECTED, nullptr)).Times(1);
|
||||
EXPECT_CALL(callback, Invoke(_, WF_CLIENT_DISCONNECTED, nullptr)).Times(1);
|
||||
|
||||
AdapterClient client(callback.GetCallbackFn(), callback.GetUserData(), server.GetUrl());
|
||||
|
||||
wf_client * client = wf_client_create(
|
||||
callback.GetCallbackFn(), callback.GetUserData());
|
||||
|
||||
wf_client_connect(client, server.GetUrl().c_str());
|
||||
client.Connect();
|
||||
while (!server.IsConnected())
|
||||
{
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_disconnect(client);
|
||||
client.Disconnect();
|
||||
while (server.IsConnected())
|
||||
{
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_dispose(client);
|
||||
}
|
||||
|
||||
TEST(AdapterClient, Authenticate)
|
||||
@@ -181,31 +103,24 @@ TEST(AdapterClient, Authenticate)
|
||||
called = true;
|
||||
}));
|
||||
|
||||
wf_client * client = wf_client_create(
|
||||
callback.GetCallbackFn(), callback.GetUserData());
|
||||
AdapterClient client(callback.GetCallbackFn(), callback.GetUserData(), server.GetUrl());
|
||||
|
||||
|
||||
wf_client_connect(client, server.GetUrl().c_str());
|
||||
client.Connect();
|
||||
while (!server.IsConnected())
|
||||
{
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_authenticate(client);
|
||||
client.Authenticate();
|
||||
while (!called) {
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_disconnect(client);
|
||||
client.Disconnect();
|
||||
while (server.IsConnected())
|
||||
{
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_dispose(client);
|
||||
}
|
||||
|
||||
TEST(AdapterClient, AuthenticateFailedWithoutConnect)
|
||||
@@ -222,17 +137,12 @@ TEST(AdapterClient, AuthenticateFailedWithoutConnect)
|
||||
called = true;
|
||||
}));
|
||||
|
||||
wf_client * client = wf_client_create(
|
||||
callback.GetCallbackFn(), callback.GetUserData());
|
||||
AdapterClient client(callback.GetCallbackFn(), callback.GetUserData(), "");
|
||||
|
||||
|
||||
wf_client_authenticate(client);
|
||||
client.Authenticate();
|
||||
while (!called) {
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_dispose(client);
|
||||
}
|
||||
|
||||
TEST(AdapterClient, AuthenticationFailed)
|
||||
@@ -254,29 +164,22 @@ TEST(AdapterClient, AuthenticationFailed)
|
||||
called = true;
|
||||
}));
|
||||
|
||||
wf_client * client = wf_client_create(
|
||||
callback.GetCallbackFn(), callback.GetUserData());
|
||||
AdapterClient client(callback.GetCallbackFn(), callback.GetUserData(), server.GetUrl());
|
||||
|
||||
|
||||
wf_client_connect(client, server.GetUrl().c_str());
|
||||
client.Connect();
|
||||
while (!server.IsConnected())
|
||||
{
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_authenticate(client);
|
||||
client.Authenticate();
|
||||
while (!called) {
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_disconnect(client);
|
||||
client.Disconnect();
|
||||
while (server.IsConnected())
|
||||
{
|
||||
watcher.check();
|
||||
wf_client_service(client);
|
||||
}
|
||||
|
||||
wf_client_dispose(client);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user