xref: /spdk/go/rpc/client/client_test.go (revision cf151d60e64ad49fcad18dc82ca4f02500b6f07d)
1/*   SPDX-License-Identifier: BSD-3-Clause
2 *   Copyright (c) 2023 Dell Inc, or its subsidiaries.
3 *   All rights reserved.
4 */
5
6package client
7
8import (
9	"reflect"
10	"testing"
11)
12
13func 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