xref: /spdk/go/rpc/client/client_test.go (revision b02581a89058ebaebe03bd0e16e3b58adfe406c1)
1 /*   SPDX-License-Identifier: BSD-3-Clause
2  *   Copyright (c) 2023 Dell Inc, or its subsidiaries.
3  *   All rights reserved.
4  */
5 
6 package client
7 
8 import (
9 	"reflect"
10 	"testing"
11 )
12 
13 func Test_createRequest(t *testing.T) {
14 	tests := map[string]struct {
15 		params  any
16 		wantErr bool
17 	}{
18 		"nil params": {
19 			params:  nil,
20 			wantErr: false,
21 		},
22 		"reflect.Pointer": {
23 			params:  &struct{}{},
24 			wantErr: false,
25 		},
26 		"reflect.Array": {
27 			params:  [3]string{"a", "b", "c"},
28 			wantErr: false,
29 		},
30 		"reflect.Map": {
31 			params:  map[string]int{"a": 1, "b": 2, "c": 3},
32 			wantErr: false,
33 		},
34 		"reflect.Slice": {
35 			params:  []string{"a", "b", "c"},
36 			wantErr: false,
37 		},
38 		"reflect.Struct": {
39 			params:  struct{}{},
40 			wantErr: false,
41 		},
42 		"invalid param": {
43 			params:  "invalidParam",
44 			wantErr: true,
45 		},
46 	}
47 
48 	for testName, tt := range tests {
49 		t.Run(testName, func(t *testing.T) {
50 			const method = "some method"
51 			const requestId = 17
52 			gotRequest, err := createRequest(method, requestId, tt.params)
53 			wantRequest := &Request{
54 				Version: jsonRPCVersion,
55 				Method:  method,
56 				Params:  tt.params,
57 				ID:      requestId,
58 			}
59 			if tt.wantErr {
60 				wantRequest = nil
61 			}
62 			if (err != nil) != tt.wantErr {
63 				t.Errorf("Expect error: %v, received: %v", nil, err)
64 			}
65 			if !reflect.DeepEqual(gotRequest, wantRequest) {
66 				t.Errorf("Expect %v request, received %v", wantRequest, gotRequest)
67 			}
68 		})
69 	}
70 }
71