From 27553a14d79c37bc3aa1aa4a6bbebab29e6e8ed1 Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Sat, 20 Apr 2019 10:05:36 +0200 Subject: [PATCH] adds mock of wpf_request --- CMakeLists.txt | 2 ++ test/mock_request.cc | 37 ++++++++++++++++++++++++++++++++++ test/mock_request.hpp | 35 ++++++++++++++++++++++++++++++++ test/test_static_filesystem.cc | 29 ++++++++++++++++++++++++++ 4 files changed, 103 insertions(+) create mode 100644 test/mock_request.cc create mode 100644 test/mock_request.hpp create mode 100644 test/test_static_filesystem.cc diff --git a/CMakeLists.txt b/CMakeLists.txt index e06322e..de24dd3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -290,6 +290,7 @@ pkg_check_modules(GMOCK gmock) add_executable(alltests test/msleep.cc test/mock_authenticator.cc + test/mock_request.cc test/test_container_of.cc test/test_response_parser.cc test/test_server.cc @@ -302,6 +303,7 @@ add_executable(alltests test/test_string.cc test/test_slist.cc test/test_path.cc + test/test_static_filesystem.cc ) target_link_libraries(alltests PUBLIC webfuse-adapter-static webfuse-provider-static webfuse-core ${EXTRA_LIBS} ${GMOCK_LIBRARIES} ${GTEST_LIBRARIES}) diff --git a/test/mock_request.cc b/test/mock_request.cc new file mode 100644 index 0000000..0792d59 --- /dev/null +++ b/test/mock_request.cc @@ -0,0 +1,37 @@ +#include "mock_request.hpp" +#include + +namespace +{ + +extern "C" void +respond( + json_t * response, + void * user_data) +{ + (void) response; + + webfuse_test::Request * request = reinterpret_cast(user_data); + request->respond_error(nullptr, 0); +} + + +} + +namespace webfuse_test +{ + +struct wfp_request * +request_create( + Request * req, + int id) +{ + struct wfp_request * request = reinterpret_cast(malloc(sizeof(struct wfp_request))); + request->id = id; + request->user_data = reinterpret_cast(req); + request->respond = &respond; +} + + + +} \ No newline at end of file diff --git a/test/mock_request.hpp b/test/mock_request.hpp new file mode 100644 index 0000000..e836304 --- /dev/null +++ b/test/mock_request.hpp @@ -0,0 +1,35 @@ +#ifndef WF_MOCK_REQUEST_HPP +#define WF_MOCK_REQUEST_HPP + +#include +#include +#include "webfuse/provider/impl/request.h" + + +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 +{ +public: + 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); + +} + + +#endif diff --git a/test/test_static_filesystem.cc b/test/test_static_filesystem.cc new file mode 100644 index 0000000..acea6a4 --- /dev/null +++ b/test/test_static_filesystem.cc @@ -0,0 +1,29 @@ +#include + +#include "webfuse/provider/impl/static_filesystem.h" +#include "webfuse/provider/client_config.h" +#include "webfuse/provider/impl/client_config.h" + +#include "mock_request.hpp" + +using webfuse_test::request_create; +using webfuse_test::MockRequest; +using testing::_; + +TEST(wfp_static_filesystem, init) +{ + struct wfp_client_config * config = wfp_client_config_create(); + struct wfp_static_filesystem * filesystem = wfp_impl_static_filesystem_create(config); + + MockRequest mock; + struct wfp_request * request = request_create(&mock, 42); + + EXPECT_CALL(mock, respond_error(_,_)).Times(1); + + config->provider.getattr(request, 1, config->user_data); + + + + wfp_impl_static_filesystem_dispose(filesystem); + wfp_client_config_dispose(config); +} \ No newline at end of file