From 2a0ac6d2dd16473200011bbf527be28a2752b67c Mon Sep 17 00:00:00 2001 From: Falk Werner Date: Thu, 16 Jul 2020 19:30:18 +0200 Subject: [PATCH] refactor: use wf_jsonrpc_error struct instead of json_t to express errors --- lib/webfuse/impl/client_protocol.c | 4 +- lib/webfuse/impl/jsonrpc/error.c | 51 +++++++++++++++++--- lib/webfuse/impl/jsonrpc/error.h | 16 +++++- lib/webfuse/impl/jsonrpc/proxy_finished_fn.h | 4 +- lib/webfuse/impl/jsonrpc/response.c | 22 ++++----- lib/webfuse/impl/jsonrpc/response_intern.h | 4 +- lib/webfuse/impl/operation/getattr.c | 2 +- lib/webfuse/impl/operation/getattr.h | 4 +- lib/webfuse/impl/operation/lookup.c | 2 +- lib/webfuse/impl/operation/lookup.h | 4 +- lib/webfuse/impl/operation/open.c | 2 +- lib/webfuse/impl/operation/open.h | 4 +- lib/webfuse/impl/operation/read.c | 2 +- lib/webfuse/impl/operation/read.h | 4 +- lib/webfuse/impl/operation/readdir.c | 2 +- lib/webfuse/impl/operation/readdir.h | 4 +- lib/webfuse/impl/util/json_util.c | 5 +- lib/webfuse/impl/util/json_util.h | 4 +- test/webfuse/jsonrpc/test_proxy.cc | 25 +++++----- test/webfuse/jsonrpc/test_response.cc | 17 ++++--- test/webfuse/jsonrpc/test_response_parser.cc | 3 +- test/webfuse/operation/test_getattr.cc | 6 +-- test/webfuse/operation/test_lookup.cc | 6 +-- test/webfuse/operation/test_open.cc | 6 +-- test/webfuse/operation/test_read.cc | 6 +-- test/webfuse/operation/test_readdir.cc | 6 +-- 26 files changed, 141 insertions(+), 74 deletions(-) diff --git a/lib/webfuse/impl/client_protocol.c b/lib/webfuse/impl/client_protocol.c index 2eac597..273df2c 100644 --- a/lib/webfuse/impl/client_protocol.c +++ b/lib/webfuse/impl/client_protocol.c @@ -102,7 +102,7 @@ static void wf_impl_client_protocol_on_authenticate_finished( void * user_data, json_t const * result, - json_t const * WF_UNUSED_PARAM(error)) + struct wf_jsonrpc_error const * WF_UNUSED_PARAM(error)) { struct wf_client_protocol * protocol = user_data; int const reason = (NULL != result) ? WF_CLIENT_AUTHENTICATED : WF_CLIENT_AUTHENTICATION_FAILED; @@ -114,7 +114,7 @@ static void wf_impl_client_protocol_on_add_filesystem_finished( void * user_data, json_t const * result, - json_t const * WF_UNUSED_PARAM(error)) + struct wf_jsonrpc_error const * WF_UNUSED_PARAM(error)) { struct wf_impl_client_protocol_add_filesystem_context * context = user_data; struct wf_client_protocol * protocol = context->protocol; diff --git a/lib/webfuse/impl/jsonrpc/error.c b/lib/webfuse/impl/jsonrpc/error.c index b54c4bc..a8dd8c4 100644 --- a/lib/webfuse/impl/jsonrpc/error.c +++ b/lib/webfuse/impl/jsonrpc/error.c @@ -1,17 +1,51 @@ #include "webfuse/impl/jsonrpc/error.h" -json_t * +#include +#include + +struct wf_jsonrpc_error +{ + int code; + char * message; +}; + +struct wf_jsonrpc_error * wf_impl_jsonrpc_error( int code, char const * message) { - json_t * error = json_object(); - json_object_set_new(error, "code", json_integer(code)); - json_object_set_new(error, "message", json_string(message)); + struct wf_jsonrpc_error * error = malloc(sizeof(struct wf_jsonrpc_error)); + error->code = code; + error->message = strdup(message); return error; } +void +wf_impl_jsonrpc_error_dispose( + struct wf_jsonrpc_error * error) +{ + if (NULL != error) + { + free(error->message); + free(error); + } +} + +int +wf_impl_jsonrpc_error_code( + struct wf_jsonrpc_error const * error) +{ + return error->code; +} + +char const * +wf_impl_jsonrpc_error_message( + struct wf_jsonrpc_error const * error) +{ + return error->message; +} + void wf_impl_jsonrpc_propate_error( wf_jsonrpc_proxy_finished_fn * finised, @@ -19,9 +53,12 @@ wf_impl_jsonrpc_propate_error( int code, char const * message) { - json_t * error = wf_impl_jsonrpc_error(code, message); - finised(user_data, NULL, error); + struct wf_jsonrpc_error error = + { + .code = code, + .message = (char*) message + }; - json_decref(error); + finised(user_data, NULL, &error); } diff --git a/lib/webfuse/impl/jsonrpc/error.h b/lib/webfuse/impl/jsonrpc/error.h index 6a0cf2c..db781d4 100644 --- a/lib/webfuse/impl/jsonrpc/error.h +++ b/lib/webfuse/impl/jsonrpc/error.h @@ -9,11 +9,25 @@ extern "C" { #endif -extern json_t * +struct wf_jsonrpc_error; + +extern struct wf_jsonrpc_error * wf_impl_jsonrpc_error( int code, char const * message); +extern void +wf_impl_jsonrpc_error_dispose( + struct wf_jsonrpc_error * error); + +extern int +wf_impl_jsonrpc_error_code( + struct wf_jsonrpc_error const * error); + +extern char const * +wf_impl_jsonrpc_error_message( + struct wf_jsonrpc_error const * error); + extern void wf_impl_jsonrpc_propate_error( wf_jsonrpc_proxy_finished_fn * finised, diff --git a/lib/webfuse/impl/jsonrpc/proxy_finished_fn.h b/lib/webfuse/impl/jsonrpc/proxy_finished_fn.h index 0ea5a97..c782c1d 100644 --- a/lib/webfuse/impl/jsonrpc/proxy_finished_fn.h +++ b/lib/webfuse/impl/jsonrpc/proxy_finished_fn.h @@ -8,10 +8,12 @@ extern "C" { #endif +struct wf_jsonrpc_error; + typedef void wf_jsonrpc_proxy_finished_fn( void * user_data, json_t const * result, - json_t const * error); + struct wf_jsonrpc_error const * error); #ifdef __cplusplus } diff --git a/lib/webfuse/impl/jsonrpc/response.c b/lib/webfuse/impl/jsonrpc/response.c index 7661828..649cfaf 100644 --- a/lib/webfuse/impl/jsonrpc/response.c +++ b/lib/webfuse/impl/jsonrpc/response.c @@ -39,16 +39,19 @@ wf_impl_jsonrpc_response_init( } else { + int code = WF_BAD_FORMAT; + char const * message = "invalid format: invalid error object"; + json_t * error = json_object_get(response, "error"); - if ((json_is_object(error)) && (json_is_integer(json_object_get(error, "code")))) + json_t * code_holder = json_object_get(error, "code"); + if (json_is_integer(code_holder)) { - result->error = error; - json_incref(result->error); - } - else - { - result->error = wf_impl_jsonrpc_error(WF_BAD_FORMAT, "invalid format: invalid error object"); + code = json_integer_value(json_object_get(error, "code")); + json_t * message_holder = json_object_get(error, "message"); + message = json_is_string(message_holder) ? json_string_value(message_holder) : ""; } + + result->error = wf_impl_jsonrpc_error(code, message); } } @@ -61,8 +64,5 @@ wf_impl_jsonrpc_response_cleanup( json_decref(response->result); } - if (NULL != response->error) - { - json_decref(response->error); - } + wf_impl_jsonrpc_error_dispose(response->error); } diff --git a/lib/webfuse/impl/jsonrpc/response_intern.h b/lib/webfuse/impl/jsonrpc/response_intern.h index 9c48e2b..06d0516 100644 --- a/lib/webfuse/impl/jsonrpc/response_intern.h +++ b/lib/webfuse/impl/jsonrpc/response_intern.h @@ -14,10 +14,12 @@ using std::size_t; extern "C" { #endif +struct wf_jsonrpc_error; + struct wf_jsonrpc_response { json_t * result; - json_t * error; + struct wf_jsonrpc_error * error; int id; }; diff --git a/lib/webfuse/impl/operation/getattr.c b/lib/webfuse/impl/operation/getattr.c index a943bc9..3c79f41 100644 --- a/lib/webfuse/impl/operation/getattr.c +++ b/lib/webfuse/impl/operation/getattr.c @@ -15,7 +15,7 @@ void wf_impl_operation_getattr_finished( void * user_data, json_t const * result, - json_t const * error) + struct wf_jsonrpc_error const * error) { wf_status status = wf_impl_jsonrpc_get_status(error); struct wf_impl_operation_getattr_context * context = user_data; diff --git a/lib/webfuse/impl/operation/getattr.h b/lib/webfuse/impl/operation/getattr.h index b3841a5..af5c7f9 100644 --- a/lib/webfuse/impl/operation/getattr.h +++ b/lib/webfuse/impl/operation/getattr.h @@ -11,6 +11,8 @@ extern "C" { #endif +struct wf_jsonrpc_error; + struct wf_impl_operation_getattr_context { fuse_req_t request; @@ -23,7 +25,7 @@ struct wf_impl_operation_getattr_context extern void wf_impl_operation_getattr_finished( void * user_data, json_t const * result, - json_t const * error); + struct wf_jsonrpc_error const * error); extern void wf_impl_operation_getattr ( fuse_req_t request, diff --git a/lib/webfuse/impl/operation/lookup.c b/lib/webfuse/impl/operation/lookup.c index 99f8fbb..49aa649 100644 --- a/lib/webfuse/impl/operation/lookup.c +++ b/lib/webfuse/impl/operation/lookup.c @@ -18,7 +18,7 @@ void wf_impl_operation_lookup_finished( void * user_data, json_t const * result, - json_t const * error + struct wf_jsonrpc_error const * error ) { wf_status status = wf_impl_jsonrpc_get_status(error); diff --git a/lib/webfuse/impl/operation/lookup.h b/lib/webfuse/impl/operation/lookup.h index ba738b7..5a99d46 100644 --- a/lib/webfuse/impl/operation/lookup.h +++ b/lib/webfuse/impl/operation/lookup.h @@ -11,6 +11,8 @@ extern "C" { #endif +struct wf_jsonrpc_error; + struct wf_impl_operation_lookup_context { fuse_req_t request; @@ -22,7 +24,7 @@ struct wf_impl_operation_lookup_context extern void wf_impl_operation_lookup_finished( void * user_data, json_t const * result, - json_t const * error); + struct wf_jsonrpc_error const * error); extern void wf_impl_operation_lookup ( fuse_req_t req, diff --git a/lib/webfuse/impl/operation/open.c b/lib/webfuse/impl/operation/open.c index d947678..9c61bca 100644 --- a/lib/webfuse/impl/operation/open.c +++ b/lib/webfuse/impl/operation/open.c @@ -12,7 +12,7 @@ void wf_impl_operation_open_finished( void * user_data, json_t const * result, - json_t const * error) + struct wf_jsonrpc_error const * error) { wf_status status = wf_impl_jsonrpc_get_status(error); fuse_req_t request = user_data; diff --git a/lib/webfuse/impl/operation/open.h b/lib/webfuse/impl/operation/open.h index 1ef6104..e5e3f56 100644 --- a/lib/webfuse/impl/operation/open.h +++ b/lib/webfuse/impl/operation/open.h @@ -9,6 +9,8 @@ extern "C" { #endif +struct wf_jsonrpc_error; + extern void wf_impl_operation_open( fuse_req_t request, fuse_ino_t inode, @@ -17,7 +19,7 @@ extern void wf_impl_operation_open( extern void wf_impl_operation_open_finished( void * user_data, json_t const * result, - json_t const * error); + struct wf_jsonrpc_error const * error); #ifdef __cplusplus } diff --git a/lib/webfuse/impl/operation/read.c b/lib/webfuse/impl/operation/read.c index 3721f1b..d4ce7f4 100644 --- a/lib/webfuse/impl/operation/read.c +++ b/lib/webfuse/impl/operation/read.c @@ -62,7 +62,7 @@ char * wf_impl_fill_buffer( void wf_impl_operation_read_finished( void * user_data, json_t const * result, - json_t const * error) + struct wf_jsonrpc_error const * error) { wf_status status = wf_impl_jsonrpc_get_status(error); fuse_req_t request = user_data; diff --git a/lib/webfuse/impl/operation/read.h b/lib/webfuse/impl/operation/read.h index e675492..a66960a 100644 --- a/lib/webfuse/impl/operation/read.h +++ b/lib/webfuse/impl/operation/read.h @@ -11,6 +11,8 @@ extern "C" { #endif +struct wf_jsonrpc_error; + extern void wf_impl_operation_read( fuse_req_t request, fuse_ino_t ino, size_t size, off_t off, @@ -26,7 +28,7 @@ extern char * wf_impl_fill_buffer( extern void wf_impl_operation_read_finished( void * user_data, json_t const * result, - json_t const * error); + struct wf_jsonrpc_error const * error); #ifdef __cplusplus diff --git a/lib/webfuse/impl/operation/readdir.c b/lib/webfuse/impl/operation/readdir.c index 78f99ab..adbad37 100644 --- a/lib/webfuse/impl/operation/readdir.c +++ b/lib/webfuse/impl/operation/readdir.c @@ -69,7 +69,7 @@ static size_t wf_impl_min(size_t a, size_t b) void wf_impl_operation_readdir_finished( void * user_data, json_t const * result, - json_t const * error) + struct wf_jsonrpc_error const * error) { wf_status status = wf_impl_jsonrpc_get_status(error); struct wf_impl_operation_readdir_context * context = user_data; diff --git a/lib/webfuse/impl/operation/readdir.h b/lib/webfuse/impl/operation/readdir.h index b5bc097..acce4a1 100644 --- a/lib/webfuse/impl/operation/readdir.h +++ b/lib/webfuse/impl/operation/readdir.h @@ -9,6 +9,8 @@ extern "C" { #endif +struct wf_jsonrpc_error; + struct wf_impl_operation_readdir_context { fuse_req_t request; @@ -26,7 +28,7 @@ extern void wf_impl_operation_readdir ( extern void wf_impl_operation_readdir_finished( void * user_data, json_t const * result, - json_t const * error); + struct wf_jsonrpc_error const * error); #ifdef __cplusplus } diff --git a/lib/webfuse/impl/util/json_util.c b/lib/webfuse/impl/util/json_util.c index b2fdc77..e87ef32 100644 --- a/lib/webfuse/impl/util/json_util.c +++ b/lib/webfuse/impl/util/json_util.c @@ -1,4 +1,5 @@ #include "webfuse/impl/util/json_util.h" +#include "webfuse/impl/jsonrpc/error.h" int wf_impl_json_get_int(json_t const * object, char const * key, int default_value) { @@ -15,12 +16,12 @@ int wf_impl_json_get_int(json_t const * object, char const * key, int default_va wf_status wf_impl_jsonrpc_get_status( - json_t const * error) + struct wf_jsonrpc_error const * error) { wf_status status = WF_GOOD; if (NULL != error) { - status = wf_impl_json_get_int(error, "code", WF_BAD_FORMAT); + status = wf_impl_jsonrpc_error_code(error); } return status; diff --git a/lib/webfuse/impl/util/json_util.h b/lib/webfuse/impl/util/json_util.h index 64b4eed..911e46e 100644 --- a/lib/webfuse/impl/util/json_util.h +++ b/lib/webfuse/impl/util/json_util.h @@ -9,6 +9,8 @@ extern "C" { #endif +struct wf_jsonrpc_error; + extern int wf_impl_json_get_int( json_t const * object, @@ -17,7 +19,7 @@ wf_impl_json_get_int( extern wf_status wf_impl_jsonrpc_get_status( - json_t const * error); + struct wf_jsonrpc_error const * error); #ifdef __cplusplus } diff --git a/test/webfuse/jsonrpc/test_proxy.cc b/test/webfuse/jsonrpc/test_proxy.cc index acaf720..e680066 100644 --- a/test/webfuse/jsonrpc/test_proxy.cc +++ b/test/webfuse/jsonrpc/test_proxy.cc @@ -1,5 +1,6 @@ #include #include "webfuse/impl/jsonrpc/proxy.h" +#include "webfuse/impl/jsonrpc/error.h" #include "webfuse/impl/message.h" #include "webfuse/status.h" #include "webfuse/impl/timer/manager.h" @@ -20,12 +21,6 @@ using testing::SaveArg; namespace { - int jsonrpc_get_status(json_t * error) - { - json_t * code = json_object_get(error, "code"); - return (json_is_integer(code)) ? json_integer_value(code) : WF_BAD_FORMAT; - } - struct SendContext { json_t * response; @@ -65,7 +60,7 @@ namespace { bool is_called; json_t * result; - json_t * error; + wf_jsonrpc_error * error; FinishedContext() : is_called(false) @@ -82,22 +77,24 @@ namespace json_decref(result); } - if (nullptr != error) - { - json_decref(error); - } + wf_impl_jsonrpc_error_dispose(error); } }; void jsonrpc_finished( void * user_data, json_t const * result, - json_t const * error) + wf_jsonrpc_error const * error) { FinishedContext * context = reinterpret_cast(user_data); context->is_called = true; context->result = json_deep_copy(result); - context->error = json_deep_copy(error); + + if (nullptr != error) + { + context->error = wf_impl_jsonrpc_error(wf_impl_jsonrpc_error_code(error), + wf_impl_jsonrpc_error_message(error)); + } } } @@ -305,7 +302,7 @@ TEST(wf_jsonrpc_proxy, timeout) wf_impl_timer_manager_check(timer_manager); ASSERT_TRUE(finished_context.is_called); - ASSERT_EQ(WF_BAD_TIMEOUT, jsonrpc_get_status(finished_context.error)); + ASSERT_EQ(WF_BAD_TIMEOUT, wf_impl_jsonrpc_error_code(finished_context.error)); wf_impl_jsonrpc_proxy_dispose(proxy); wf_impl_timer_manager_dispose(timer_manager); diff --git a/test/webfuse/jsonrpc/test_response.cc b/test/webfuse/jsonrpc/test_response.cc index 0a92b29..c60e669 100644 --- a/test/webfuse/jsonrpc/test_response.cc +++ b/test/webfuse/jsonrpc/test_response.cc @@ -1,5 +1,6 @@ #include #include "webfuse/impl/jsonrpc/response_intern.h" +#include "webfuse/impl/jsonrpc/error.h" #include "webfuse/status.h" TEST(wf_json_response, init_result) @@ -32,8 +33,8 @@ TEST(wf_json_response, init_error) struct wf_jsonrpc_response response; wf_impl_jsonrpc_response_init(&response, message); - ASSERT_EQ(42, json_integer_value(json_object_get(response.error, "code"))); - ASSERT_STREQ("Don't Panic!", json_string_value(json_object_get(response.error, "message"))); + ASSERT_EQ(42, wf_impl_jsonrpc_error_code(response.error)); + ASSERT_STREQ("Don't Panic!", wf_impl_jsonrpc_error_message(response.error)); ASSERT_EQ(nullptr, response.result); ASSERT_EQ(23, response.id); @@ -49,7 +50,7 @@ TEST(wf_json_response, init_fail_missing_result_and_error) struct wf_jsonrpc_response response; wf_impl_jsonrpc_response_init(&response, message); - ASSERT_EQ(WF_BAD_FORMAT, json_integer_value(json_object_get(response.error, "code"))); + ASSERT_EQ(WF_BAD_FORMAT, wf_impl_jsonrpc_error_code(response.error)); ASSERT_EQ(nullptr, response.result); ASSERT_EQ(12, response.id); @@ -65,7 +66,7 @@ TEST(wf_json_response, init_fail_missing_id) struct wf_jsonrpc_response response; wf_impl_jsonrpc_response_init(&response, message); - ASSERT_EQ(WF_BAD_FORMAT, json_integer_value(json_object_get(response.error, "code"))); + ASSERT_EQ(WF_BAD_FORMAT, wf_impl_jsonrpc_error_code(response.error)); ASSERT_EQ(nullptr, response.result); ASSERT_EQ(-1, response.id); @@ -82,7 +83,7 @@ TEST(wf_json_response, init_fail_wrong_id_type) struct wf_jsonrpc_response response; wf_impl_jsonrpc_response_init(&response, message); - ASSERT_EQ(WF_BAD_FORMAT, json_integer_value(json_object_get(response.error, "code"))); + ASSERT_EQ(WF_BAD_FORMAT, wf_impl_jsonrpc_error_code(response.error)); ASSERT_EQ(nullptr, response.result); ASSERT_EQ(-1, response.id); @@ -101,7 +102,7 @@ TEST(wf_json_response, init_fail_error_missing_code) struct wf_jsonrpc_response response; wf_impl_jsonrpc_response_init(&response, message); - ASSERT_EQ(WF_BAD_FORMAT, json_integer_value(json_object_get(response.error, "code"))); + ASSERT_EQ(WF_BAD_FORMAT, wf_impl_jsonrpc_error_code(response.error)); ASSERT_EQ(nullptr, response.result); ASSERT_EQ(23, response.id); @@ -121,7 +122,7 @@ TEST(wf_json_response, init_fail_error_wrong_code_type) struct wf_jsonrpc_response response; wf_impl_jsonrpc_response_init(&response, message); - ASSERT_EQ(WF_BAD_FORMAT, json_integer_value(json_object_get(response.error, "code"))); + ASSERT_EQ(WF_BAD_FORMAT, wf_impl_jsonrpc_error_code(response.error)); ASSERT_EQ(nullptr, response.result); ASSERT_EQ(23, response.id); @@ -138,7 +139,7 @@ TEST(wf_json_response, init_fail_error_wrong_type) struct wf_jsonrpc_response response; wf_impl_jsonrpc_response_init(&response, message); - ASSERT_EQ(WF_BAD_FORMAT, json_integer_value(json_object_get(response.error, "code"))); + ASSERT_EQ(WF_BAD_FORMAT, wf_impl_jsonrpc_error_code(response.error)); ASSERT_EQ(nullptr, response.result); ASSERT_EQ(23, response.id); diff --git a/test/webfuse/jsonrpc/test_response_parser.cc b/test/webfuse/jsonrpc/test_response_parser.cc index 7d944d4..8c4e92e 100644 --- a/test/webfuse/jsonrpc/test_response_parser.cc +++ b/test/webfuse/jsonrpc/test_response_parser.cc @@ -2,6 +2,7 @@ #include #include "webfuse/impl/jsonrpc/response_intern.h" +#include "webfuse/impl/jsonrpc/error.h" static void response_parse_str( @@ -44,7 +45,7 @@ TEST(response_parser, test) // custom error code response_parse_str("{\"error\":{\"code\": 42}, \"id\": 42}", &response); ASSERT_NE(nullptr, response.error); - ASSERT_EQ(42, json_integer_value(json_object_get(response.error, "code"))); + ASSERT_EQ(42, wf_impl_jsonrpc_error_code(response.error)); ASSERT_EQ(42, response.id); ASSERT_EQ(nullptr, response.result); wf_impl_jsonrpc_response_cleanup(&response); diff --git a/test/webfuse/operation/test_getattr.cc b/test/webfuse/operation/test_getattr.cc index f3ea09c..a8c3dee 100644 --- a/test/webfuse/operation/test_getattr.cc +++ b/test/webfuse/operation/test_getattr.cc @@ -1,4 +1,5 @@ #include "webfuse/impl/operation/getattr.h" +#include "webfuse/impl/jsonrpc/error.h" #include "webfuse/status.h" @@ -201,13 +202,12 @@ TEST(wf_impl_operation_getattr, finished_error) EXPECT_CALL(fuse, fuse_reply_open(_,_)).Times(0); EXPECT_CALL(fuse, fuse_reply_err(_, ENOENT)).Times(1).WillOnce(Return(0)); - json_t * error = json_object(); - json_object_set_new(error, "code", json_integer(WF_BAD)); + wf_jsonrpc_error * error = wf_impl_jsonrpc_error(WF_BAD, ""); auto * context = reinterpret_cast(malloc(sizeof(wf_impl_operation_getattr_context))); context->inode = 1; context->gid = 0; context->uid = 0; wf_impl_operation_getattr_finished(context, nullptr, error); - json_decref(error); + wf_impl_jsonrpc_error_dispose(error); } diff --git a/test/webfuse/operation/test_lookup.cc b/test/webfuse/operation/test_lookup.cc index 09dc985..5a15f64 100644 --- a/test/webfuse/operation/test_lookup.cc +++ b/test/webfuse/operation/test_lookup.cc @@ -1,4 +1,5 @@ #include "webfuse/impl/operation/lookup.h" +#include "webfuse/impl/jsonrpc/error.h" #include "webfuse/status.h" @@ -243,13 +244,12 @@ TEST(wf_impl_operation_lookup, finished_error) EXPECT_CALL(fuse, fuse_reply_open(_,_)).Times(0); EXPECT_CALL(fuse, fuse_reply_err(_, ENOENT)).Times(1).WillOnce(Return(0)); - json_t * error = json_object(); - json_object_set_new(error, "code", json_integer(WF_BAD)); + struct wf_jsonrpc_error * error = wf_impl_jsonrpc_error(WF_BAD, ""); auto * context = reinterpret_cast(malloc(sizeof(wf_impl_operation_lookup_context))); context->timeout = 1.0; context->gid = 0; context->uid = 0; wf_impl_operation_lookup_finished(context, nullptr, error); - json_decref(error); + wf_impl_jsonrpc_error_dispose(error); } diff --git a/test/webfuse/operation/test_open.cc b/test/webfuse/operation/test_open.cc index e509653..bc2b25d 100644 --- a/test/webfuse/operation/test_open.cc +++ b/test/webfuse/operation/test_open.cc @@ -1,4 +1,5 @@ #include "webfuse/impl/operation/open.h" +#include "webfuse/impl/jsonrpc/error.h" #include "webfuse/status.h" @@ -70,10 +71,9 @@ TEST(wf_impl_operation_open, finished_fail_error) EXPECT_CALL(fuse, fuse_reply_open(_,_)).Times(0); EXPECT_CALL(fuse, fuse_reply_err(_, ENOENT)).Times(1).WillOnce(Return(0)); - json_t * error = json_object(); - json_object_set_new(error, "code", json_integer(WF_BAD)); + struct wf_jsonrpc_error * error = wf_impl_jsonrpc_error(WF_BAD, ""); wf_impl_operation_open_finished(nullptr, nullptr, error); - json_decref(error); + wf_impl_jsonrpc_error_dispose(error); } TEST(wf_impl_operation_open, finished_fail_no_handle) diff --git a/test/webfuse/operation/test_read.cc b/test/webfuse/operation/test_read.cc index c719c62..537588b 100644 --- a/test/webfuse/operation/test_read.cc +++ b/test/webfuse/operation/test_read.cc @@ -1,4 +1,5 @@ #include "webfuse/impl/operation/read.h" +#include "webfuse/impl/jsonrpc/error.h" #include "webfuse/mocks/mock_fuse.hpp" #include "webfuse/mocks/mock_operation_context.hpp" @@ -230,8 +231,7 @@ TEST(wf_impl_operation_read, finished_fail_error) EXPECT_CALL(fuse, fuse_reply_buf(_,_,_)).Times(0); EXPECT_CALL(fuse, fuse_reply_err(_, _)).Times(1).WillOnce(Return(0)); - json_t * error = json_object(); - json_object_set_new(error, "code", json_integer(WF_BAD)); + struct wf_jsonrpc_error * error = wf_impl_jsonrpc_error(WF_BAD, ""); wf_impl_operation_read_finished(nullptr, nullptr, error); - json_decref(error); + wf_impl_jsonrpc_error_dispose(error); } diff --git a/test/webfuse/operation/test_readdir.cc b/test/webfuse/operation/test_readdir.cc index deef623..c78e897 100644 --- a/test/webfuse/operation/test_readdir.cc +++ b/test/webfuse/operation/test_readdir.cc @@ -1,4 +1,5 @@ #include "webfuse/impl/operation/readdir.h" +#include "webfuse/impl/jsonrpc/error.h" #include "webfuse/status.h" @@ -142,15 +143,14 @@ TEST(wf_impl_operation_readdir, finished_fail_error) EXPECT_CALL(fuse, fuse_reply_buf(_,_,_)).Times(0); EXPECT_CALL(fuse, fuse_reply_err(_, ENOENT)).Times(1).WillOnce(Return(0)); - json_t * error = json_array(); - json_object_set_new(error, "code", json_integer(WF_BAD)); + struct wf_jsonrpc_error * error = wf_impl_jsonrpc_error(WF_BAD, ""); auto * context = reinterpret_cast(malloc(sizeof(wf_impl_operation_readdir_context))); context->request = nullptr; context->size = 1; context->offset = 0; wf_impl_operation_readdir_finished(reinterpret_cast(context), nullptr, error); - json_decref(error); + wf_impl_jsonrpc_error_dispose(error); } TEST(wf_impl_operation_readdir, finished_fail_invalid_result_type)