mirror of
https://github.com/falk-werner/webfuse
synced 2024-10-27 20:34:10 +00:00
added tests for wfp_impl_getattr
This commit is contained in:
parent
8d28da5e82
commit
70e9f0a278
@ -47,6 +47,7 @@ add_executable(alltests
|
||||
test/webfuse/tests/provider/test_url.cc
|
||||
test/webfuse/tests/provider/test_client_protocol.cc
|
||||
test/webfuse/tests/provider/operation/test_close.cc
|
||||
test/webfuse/tests/provider/operation/test_getattr.cc
|
||||
test/webfuse/tests/integration/test_integration.cc
|
||||
test/webfuse/tests/integration/server.cc
|
||||
test/webfuse/tests/integration/provider.cc
|
||||
|
@ -1,15 +1,14 @@
|
||||
#include "webfuse/mocks/mock_request.hpp"
|
||||
#include <cstdlib>
|
||||
|
||||
namespace
|
||||
extern "C"
|
||||
{
|
||||
|
||||
extern "C" void
|
||||
respond(
|
||||
static void webfuse_test_MockRequest_respond(
|
||||
json_t * response,
|
||||
void * user_data)
|
||||
{
|
||||
webfuse_test::Request * request = reinterpret_cast<webfuse_test::Request*>(user_data);
|
||||
auto * request = reinterpret_cast<webfuse_test::MockRequest*>(user_data);
|
||||
|
||||
json_t * result = json_object_get(response, "result");
|
||||
json_t * error = json_object_get(response, "error");
|
||||
@ -31,21 +30,17 @@ respond(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
namespace webfuse_test
|
||||
{
|
||||
|
||||
struct wfp_request *
|
||||
request_create(
|
||||
Request * req,
|
||||
int id)
|
||||
struct wfp_request * MockRequest::create_request(int id)
|
||||
{
|
||||
struct wfp_request * request = reinterpret_cast<struct wfp_request *>(malloc(sizeof(struct wfp_request)));
|
||||
auto * request = reinterpret_cast<wfp_request*>(malloc(sizeof(wfp_request)));
|
||||
request->respond = &webfuse_test_MockRequest_respond;
|
||||
request->user_data = reinterpret_cast<void*>(this);
|
||||
request->id = id;
|
||||
request->user_data = reinterpret_cast<void*>(req);
|
||||
request->respond = &respond;
|
||||
|
||||
return request;
|
||||
}
|
||||
|
@ -10,26 +10,14 @@
|
||||
namespace webfuse_test
|
||||
{
|
||||
|
||||
class Request
|
||||
{
|
||||
public:
|
||||
virtual ~Request() { }
|
||||
virtual void respond(json_t * result, int id) = 0;
|
||||
virtual void respond_error(json_t * error, int id) = 0;
|
||||
};
|
||||
|
||||
class MockRequest: public Request
|
||||
class MockRequest
|
||||
{
|
||||
public:
|
||||
struct wfp_request * create_request(int id);
|
||||
MOCK_METHOD2(respond, void(json_t * result, int id));
|
||||
MOCK_METHOD2(respond_error, void(json_t * error, int id));
|
||||
};
|
||||
|
||||
extern struct wfp_request *
|
||||
request_create(
|
||||
Request * req,
|
||||
int id);
|
||||
|
||||
MATCHER_P3(GetAttrMatcher, inode, mode, file_type, "")
|
||||
{
|
||||
json_t * inode_holder = json_object_get(arg, "inode");
|
||||
|
42
test/webfuse/tests/provider/operation/test_getattr.cc
Normal file
42
test/webfuse/tests/provider/operation/test_getattr.cc
Normal file
@ -0,0 +1,42 @@
|
||||
#include "webfuse/provider/impl/operation/getattr.h"
|
||||
#include "webfuse/mocks/mock_request.hpp"
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
using ::webfuse_test::MockRequest;
|
||||
using ::webfuse_test::GetAttrMatcher;
|
||||
using ::testing::_;
|
||||
|
||||
TEST(wfp_impl_getattr, default_responds_error)
|
||||
{
|
||||
MockRequest request;
|
||||
auto * req = request.create_request(42);
|
||||
EXPECT_CALL(request, respond_error(_,42)).Times(1);
|
||||
|
||||
wfp_impl_getattr_default(req, 0, nullptr);
|
||||
}
|
||||
|
||||
TEST(wfp_impl_getattr, respond_file)
|
||||
{
|
||||
MockRequest request;
|
||||
auto * req = request.create_request(42);
|
||||
EXPECT_CALL(request, respond(GetAttrMatcher(23, 0754, "file"), 42)).Times(1);
|
||||
|
||||
struct stat buffer;
|
||||
memset(&buffer, 0, sizeof(buffer));
|
||||
buffer.st_ino = 23;
|
||||
buffer.st_mode = S_IFREG | 0754;
|
||||
wfp_impl_respond_getattr(req, &buffer);
|
||||
}
|
||||
|
||||
TEST(wfp_impl_getattr, respond_dir)
|
||||
{
|
||||
MockRequest request;
|
||||
auto * req = request.create_request(42);
|
||||
EXPECT_CALL(request, respond(GetAttrMatcher(23, 0754, "dir"), 42)).Times(1);
|
||||
|
||||
struct stat buffer;
|
||||
memset(&buffer, 0, sizeof(buffer));
|
||||
buffer.st_ino = 23;
|
||||
buffer.st_mode = S_IFDIR | 0754;
|
||||
wfp_impl_respond_getattr(req, &buffer);
|
||||
}
|
Loading…
Reference in New Issue
Block a user