mirror of
				https://github.com/falk-werner/webfuse
				synced 2025-06-13 12:54:15 +00:00 
			
		
		
		
	adds tests of jsonrpc request
This commit is contained in:
		
							parent
							
								
									86c41d7359
								
							
						
					
					
						commit
						0d5bf13c97
					
				| @ -308,6 +308,8 @@ add_executable(alltests | ||||
| 	test/adapter/test_authenticator.cc | ||||
| 	test/adapter/test_authenticators.cc | ||||
| 	test/adapter/jsonrpc/test_util.cc | ||||
| 	test/adapter/jsonrpc/test_is_request.cc | ||||
| 	test/adapter/jsonrpc/test_request.cc | ||||
| 	test/adapter/test_fuse_req.cc | ||||
| 	test/provider/test_url.cc | ||||
| 	test/provider/test_static_filesystem.cc | ||||
|  | ||||
							
								
								
									
										112
									
								
								test/adapter/jsonrpc/test_is_request.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								test/adapter/jsonrpc/test_is_request.cc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,112 @@ | ||||
| #include <gtest/gtest.h> | ||||
| #include "webfuse/adapter/impl/jsonrpc/request.h" | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, request_with_object_params) | ||||
| { | ||||
|     json_t * request = json_object(); | ||||
|     json_object_set_new(request, "method", json_string("method")); | ||||
|     json_object_set_new(request, "params", json_object()); | ||||
|     json_object_set_new(request, "id", json_integer(42)); | ||||
| 
 | ||||
|     ASSERT_TRUE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, request_with_array_params) | ||||
| { | ||||
|     json_t * request = json_object(); | ||||
|     json_object_set_new(request, "method", json_string("method")); | ||||
|     json_object_set_new(request, "params", json_array()); | ||||
|     json_object_set_new(request, "id", json_integer(42)); | ||||
| 
 | ||||
|     ASSERT_TRUE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, null_request) | ||||
| { | ||||
|     ASSERT_FALSE(wf_impl_jsonrpc_is_request(nullptr)); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, invalid_request) | ||||
| { | ||||
|     json_t * request = json_array(); | ||||
|     json_array_append_new(request, json_string("method")); | ||||
|     json_array_append_new(request, json_object()); | ||||
|     json_array_append_new(request, json_integer(42)); | ||||
| 
 | ||||
|     ASSERT_FALSE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, invalid_request_without_id) | ||||
| { | ||||
|     json_t * request = json_object(); | ||||
|     json_object_set_new(request, "method", json_string("method")); | ||||
|     json_object_set_new(request, "params", json_object()); | ||||
| 
 | ||||
|     ASSERT_FALSE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, invalid_request_due_to_invalid_id) | ||||
| { | ||||
|     json_t * request = json_object(); | ||||
|     json_object_set_new(request, "method", json_string("method")); | ||||
|     json_object_set_new(request, "params", json_object()); | ||||
|     json_object_set_new(request, "id", json_string("42")); | ||||
| 
 | ||||
|     ASSERT_FALSE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, invalid_request_without_method) | ||||
| { | ||||
|     json_t * request = json_object(); | ||||
|     json_object_set_new(request, "params", json_object()); | ||||
|     json_object_set_new(request, "id", json_integer(42)); | ||||
| 
 | ||||
|     ASSERT_FALSE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, invalid_request_due_to_invalid_method) | ||||
| { | ||||
|     json_t * request = json_object(); | ||||
|     json_object_set_new(request, "method", json_integer(42)); | ||||
|     json_object_set_new(request, "params", json_object()); | ||||
|     json_object_set_new(request, "id", json_integer(42)); | ||||
| 
 | ||||
|     ASSERT_FALSE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, invalid_request_without_params) | ||||
| { | ||||
|     json_t * request = json_object(); | ||||
|     json_object_set_new(request, "method", json_string("method")); | ||||
|     json_object_set_new(request, "id", json_integer(42)); | ||||
| 
 | ||||
|     ASSERT_FALSE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_is_request, invalid_request_due_to_invalid_params) | ||||
| { | ||||
|     json_t * request = json_object(); | ||||
|     json_object_set_new(request, "methdo", json_string("method")); | ||||
|     json_object_set_new(request, "params", json_string("params")); | ||||
|     json_object_set_new(request, "id", json_integer(42)); | ||||
| 
 | ||||
|     ASSERT_FALSE(wf_impl_jsonrpc_is_request(request)); | ||||
| 
 | ||||
|     json_decref(request); | ||||
| } | ||||
							
								
								
									
										102
									
								
								test/adapter/jsonrpc/test_request.cc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								test/adapter/jsonrpc/test_request.cc
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,102 @@ | ||||
| #include <gtest/gtest.h> | ||||
| #include "webfuse/adapter/impl/jsonrpc/request.h" | ||||
| 
 | ||||
| namespace | ||||
| { | ||||
| 
 | ||||
| struct Context | ||||
| { | ||||
|     json_t * response; | ||||
| }; | ||||
| 
 | ||||
| bool jsonrpc_send( | ||||
| 	json_t * request, | ||||
|     void * user_data) | ||||
| { | ||||
|    Context * context = reinterpret_cast<Context*>(user_data); | ||||
|    context->response = request; | ||||
|    json_incref(request); | ||||
| 
 | ||||
|    return true; | ||||
| } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_request, create_dispose) | ||||
| { | ||||
|     Context context{nullptr}; | ||||
|     void * user_data = reinterpret_cast<void*>(&context); | ||||
| 
 | ||||
|     struct  wf_impl_jsonrpc_request * request =  | ||||
|             wf_impl_jsonrpc_request_create(42, &jsonrpc_send, user_data); | ||||
| 
 | ||||
|     ASSERT_NE(nullptr, request); | ||||
|     ASSERT_EQ(user_data, wf_impl_jsonrpc_request_get_userdata(request)); | ||||
| 
 | ||||
|     wf_impl_jsonrpc_request_dispose(request); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_request, respond) | ||||
| { | ||||
|     Context context{nullptr}; | ||||
|     void * user_data = reinterpret_cast<void*>(&context); | ||||
| 
 | ||||
|     struct  wf_impl_jsonrpc_request * request =  | ||||
|             wf_impl_jsonrpc_request_create(42, &jsonrpc_send, user_data); | ||||
| 
 | ||||
|     wf_impl_jsonrpc_respond(request, json_string("okay")); | ||||
| 
 | ||||
|     ASSERT_NE(nullptr, context.response); | ||||
| 
 | ||||
| 
 | ||||
|     json_t * response = reinterpret_cast<json_t*>(context.response); | ||||
|     ASSERT_TRUE(json_is_object(response)); | ||||
|      | ||||
|     json_t * id = json_object_get(response, "id"); | ||||
|     ASSERT_TRUE(json_is_integer(id)); | ||||
|     ASSERT_EQ(42, json_integer_value(id)); | ||||
| 
 | ||||
|     json_t * result = json_object_get(response, "result"); | ||||
|     ASSERT_TRUE(json_is_string(result)); | ||||
|     ASSERT_STREQ("okay", json_string_value(result)); | ||||
| 
 | ||||
|     ASSERT_EQ(nullptr, json_object_get(response, "error")); | ||||
| 
 | ||||
|     json_decref(response); | ||||
| } | ||||
| 
 | ||||
| TEST(jsonrpc_request, respond_error) | ||||
| { | ||||
|     Context context{nullptr}; | ||||
|     void * user_data = reinterpret_cast<void*>(&context); | ||||
| 
 | ||||
|     struct  wf_impl_jsonrpc_request * request =  | ||||
|             wf_impl_jsonrpc_request_create(42, &jsonrpc_send, user_data); | ||||
| 
 | ||||
|     wf_impl_jsonrpc_respond_error(request, WF_BAD); | ||||
| 
 | ||||
|     ASSERT_NE(nullptr, context.response); | ||||
| 
 | ||||
| 
 | ||||
|     json_t * response = reinterpret_cast<json_t*>(context.response); | ||||
|     ASSERT_TRUE(json_is_object(response)); | ||||
|      | ||||
|     json_t * id = json_object_get(response, "id"); | ||||
|     ASSERT_TRUE(json_is_integer(id)); | ||||
|     ASSERT_EQ(42, json_integer_value(id)); | ||||
| 
 | ||||
|     ASSERT_EQ(nullptr, json_object_get(response, "result")); | ||||
| 
 | ||||
|     json_t * err = json_object_get(response, "error"); | ||||
|     ASSERT_TRUE(json_is_object(err)); | ||||
| 
 | ||||
|     json_t * err_code = json_object_get(err, "code"); | ||||
|     ASSERT_TRUE(json_is_integer(err_code)); | ||||
|     ASSERT_EQ(WF_BAD, json_integer_value(err_code)); | ||||
| 
 | ||||
|     json_t * err_message = json_object_get(err, "message"); | ||||
|     ASSERT_TRUE(json_is_string(err_message)); | ||||
|     ASSERT_STREQ("Bad", json_string_value(err_message)); | ||||
| 
 | ||||
|     json_decref(response); | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user