-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathprocapi_test.go
More file actions
110 lines (95 loc) · 2.88 KB
/
procapi_test.go
File metadata and controls
110 lines (95 loc) · 2.88 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
102
103
104
105
106
107
108
109
110
package procapi
import (
"fmt"
"testing"
// "github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
)
func (ss *ServerSuite) TestMethod() {
var mGot, mWant []Method
cfg := ss.cfg
for _, name := range []string{cfg.IndexFunc, cfg.InDefFunc, cfg.OutDefFunc} {
if m, ok := ss.srv.Method(name); ok {
m.Class = "rpc"
if name == cfg.IndexFunc {
var s = "rpc.func_def"
m.Result = &s
}
mGot = append(mGot, m)
}
}
helperCheckTestUpdate("methods.golden", mGot)
helperLoadJSON(ss.T(), "methods.golden", &mWant)
assert.Equal(ss.T(), mWant, mGot)
}
func (ss *ServerSuite) TestMethodIsRO() {
m, ok := ss.srv.Method(ss.cfg.OutDefFunc)
assert.True(ss.T(), ok && m.IsRO)
}
func (ss *ServerSuite) TestCallError() {
ss.hook.Reset()
var n *string
a := map[string]interface{}{"code": n}
aErr := map[string]interface{}{"args": []string{"code"}}
tests := []struct {
name string
method string
args map[string]interface{}
err string
rvCode string
rvData map[string]interface{}
rvIsNotFound bool
rvIsBadRequest bool
}{
{name: "RequiredArgsMissed", method: ss.cfg.OutDefFunc,
err: "Required arg(s) missed (map[args:[code]])",
rvIsBadRequest: true, rvData: aErr},
{name: "RequiredArgsMissed", method: ss.cfg.OutDefFunc, args: a,
err: "Required arg(s) missed (map[args:[code]])",
rvIsBadRequest: true, rvData: aErr},
{name: "MethodNotFound", method: "unknown", err: "Method not found (map[name:unknown])", rvIsNotFound: true,
rvData: map[string]interface{}{"name": "unknown"}},
}
for _, tt := range tests {
_, err := ss.srv.CallTx(ss.tx, tt.method, tt.args)
require.NotNil(ss.T(), err)
assert.Equal(ss.T(), tt.err, err.Error())
cerr, ok := err.(*callError)
assert.True(ss.T(), ok)
if ok {
assert.Equal(ss.T(), tt.name, cerr.Code())
assert.Equal(ss.T(), tt.rvData, cerr.Data())
assert.Equal(ss.T(), tt.rvIsNotFound, cerr.IsNotFound())
assert.Equal(ss.T(), tt.rvIsBadRequest, cerr.IsBadRequest())
}
}
// Two debug lines about required arg
assert.Equal(ss.T(), 2, len(ss.hook.Entries))
// assert.Equal(ss.T(), logrus.DebugLevel, ss.hook.LastEntry().Level)
}
/* TODO
func (ss *ServerSuite) TestDBHIsNill() {
db := New(ss.srv.config, ss.srv.log, nil)
err := db.LoadMethodsTx(nil)
require.NotNil(ss.T(), err)
cerr, ok := err.(*callError)
assert.True(ss.T(), ok)
assert.Equal(ss.T(), "NilDB", cerr.Code())
_, err = db.Call(ss.req, "any", nil)
require.NotNil(ss.T(), err)
cerr, ok = err.(*callError)
assert.True(ss.T(), ok)
assert.Equal(ss.T(), "NilDB", cerr.Code())
}
*/
func TestSuite(t *testing.T) {
myTest := &ServerSuite{}
suite.Run(t, myTest)
}
func (ss *ServerSuite) printLogs() {
for _, e := range ss.hook.Entries {
fmt.Printf("ENT[%s]: %s\n", e.Level, e.Message)
}
}