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