-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathRpcRequest_test.go
More file actions
101 lines (83 loc) · 2.42 KB
/
Copy pathRpcRequest_test.go
File metadata and controls
101 lines (83 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package jrm1
import (
"bytes"
"encoding/json"
"io"
"testing"
"github.com/vault-thirteen/auxie/tester"
)
func Test_NewRpcRequest(t *testing.T) {
aTest := tester.New(t)
var err error
var rr, rrExpected *RpcRequest
var data io.ReadCloser
// Test #1. Positive.
dataStr := `{"id": "12345"}`
data = io.NopCloser(bytes.NewReader([]byte(dataStr)))
id := "12345"
rrExpected = &RpcRequest{Id: &id}
//
rr, err = NewRpcRequest(data)
aTest.MustBeNoError(err)
aTest.MustBeEqual(rr, rrExpected)
// Test #2. Negative. Not a JSON format.
dataStr = `x`
data = io.NopCloser(bytes.NewReader([]byte(dataStr)))
rrExpected = (*RpcRequest)(nil)
//
rr, err = NewRpcRequest(data)
aTest.MustBeAnError(err)
aTest.MustBeEqual(rr, rrExpected)
// Test #3. Negative. Bad closing.
dataStr = `{}`
data = _badCloser{bytes.NewBufferString(dataStr)}
rrExpected = (*RpcRequest)(nil)
//
rr, err = NewRpcRequest(data)
aTest.MustBeAnError(err)
aTest.MustBeEqual(rr, rrExpected)
}
func Test_RpcRequest_HasAllRootFields(t *testing.T) {
aTest := tester.New(t)
var rr *RpcRequest
// Common data.
pn := "PN"
id := "12345"
m := "m"
p := json.RawMessage([]byte{})
// Test #1. Positive.
rr = &RpcRequest{ProtocolName: &pn, Id: &id, Method: &m, Parameters: &p}
aTest.MustBeEqual(rr.HasAllRootFields(), true)
// Test #2. Field 1 is null.
rr = &RpcRequest{ProtocolName: nil, Id: &id, Method: &m, Parameters: &p}
aTest.MustBeEqual(rr.HasAllRootFields(), false)
// Test #3. Field 2 is null.
rr = &RpcRequest{ProtocolName: &pn, Id: nil, Method: &m, Parameters: &p}
aTest.MustBeEqual(rr.HasAllRootFields(), false)
// Test #4. Field 3 is null.
rr = &RpcRequest{ProtocolName: &pn, Id: &id, Method: nil, Parameters: &p}
aTest.MustBeEqual(rr.HasAllRootFields(), false)
// Test #5. Field 4 is null.
rr = &RpcRequest{ProtocolName: &pn, Id: &id, Method: &m, Parameters: nil}
aTest.MustBeEqual(rr.HasAllRootFields(), false)
}
func Test_RpcRequest_CheckProtocolVersion(t *testing.T) {
aTest := tester.New(t)
var rr *RpcRequest
var err error
// Common data.
pn := ProtocolNameM1
// Test #1. Positive.
rr = &RpcRequest{ProtocolName: &pn}
err = rr.CheckProtocolVersion()
aTest.MustBeNoError(err)
// Test #2. Protocol is not set.
rr = &RpcRequest{}
err = rr.CheckProtocolVersion()
aTest.MustBeAnError(err)
// Test #3. Protocol is not correct.
pn2 := "x"
rr = &RpcRequest{ProtocolName: &pn2}
err = rr.CheckProtocolVersion()
aTest.MustBeAnError(err)
}