jsonrpc: use testify in tests

This commit is contained in:
Łukasz Magiera 2019-07-22 22:28:15 +02:00
parent ff4d1b5819
commit 790ed0730e

View File

@ -9,6 +9,8 @@ import (
"sync" "sync"
"testing" "testing"
"time" "time"
"github.com/stretchr/testify/assert"
) )
type SimpleServerHandler struct { type SimpleServerHandler struct {
@ -71,62 +73,37 @@ func TestRPC(t *testing.T) {
StringMatch func(t TestType, i2 int64) (out TestOut, err error) StringMatch func(t TestType, i2 int64) (out TestOut, err error)
} }
closer, err := NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &client) closer, err := NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &client)
if err != nil { assert.NoError(t, err)
t.Fatal(err)
}
defer closer() defer closer()
// Add(int) error // Add(int) error
if err := client.Add(2); err != nil { assert.NoError(t, client.Add(2))
t.Fatal(err) assert.Equal(t, 2, serverHandler.n)
}
if serverHandler.n != 2 {
t.Error("expected 2")
}
err = client.Add(-3546) err = client.Add(-3546)
if err == nil { assert.EqualError(t, err, "test")
t.Fatal("expected error")
}
if err.Error() != "test" {
t.Fatal("wrong error", err)
}
// AddGet(int) int // AddGet(int) int
n := client.AddGet(3) n := client.AddGet(3)
if n != 5 { assert.Equal(t, 5, n)
t.Error("wrong n") assert.Equal(t, 5, serverHandler.n)
}
if serverHandler.n != 5 {
t.Error("expected 5")
}
// StringMatch // StringMatch
o, err := client.StringMatch(TestType{S: "0"}, 0) o, err := client.StringMatch(TestType{S: "0"}, 0)
if err != nil { assert.NoError(t, err)
t.Error(err) assert.Equal(t, "0", o.S)
} assert.Equal(t, 0, o.I)
if o.S != "0" || o.I != 0 {
t.Error("wrong result")
}
_, err = client.StringMatch(TestType{S: "5"}, 5) _, err = client.StringMatch(TestType{S: "5"}, 5)
if err == nil || err.Error() != ":(" { assert.EqualError(t, err, ":(")
t.Error("wrong err")
}
o, err = client.StringMatch(TestType{S: "8", I: 8}, 8) o, err = client.StringMatch(TestType{S: "8", I: 8}, 8)
if err != nil { assert.NoError(t, err)
t.Error(err) assert.Equal(t, "8", o.S)
} assert.Equal(t, 8, o.I)
if o.S != "8" || o.I != 8 {
t.Error("wrong result")
}
// Invalid client handlers // Invalid client handlers
@ -134,24 +111,18 @@ func TestRPC(t *testing.T) {
Add func(int) Add func(int)
} }
closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &noret) closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &noret)
if err != nil { assert.NoError(t, err)
t.Fatal(err)
}
// this one should actually work // this one should actually work
noret.Add(4) noret.Add(4)
if serverHandler.n != 9 { assert.Equal(t, 9, serverHandler.n)
t.Error("expected 9")
}
closer() closer()
var noparam struct { var noparam struct {
Add func() Add func()
} }
closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &noparam) closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &noparam)
if err != nil { assert.NoError(t, err)
t.Fatal(err)
}
// shouldn't panic // shouldn't panic
noparam.Add() noparam.Add()
@ -161,9 +132,7 @@ func TestRPC(t *testing.T) {
AddGet func() (int, error) AddGet func() (int, error)
} }
closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &erronly) closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &erronly)
if err != nil { assert.NoError(t, err)
t.Fatal(err)
}
_, err = erronly.AddGet() _, err = erronly.AddGet()
if err == nil || err.Error() != "RPC error (-32602): wrong param count" { if err == nil || err.Error() != "RPC error (-32602): wrong param count" {
@ -175,9 +144,7 @@ func TestRPC(t *testing.T) {
Add func(string) error Add func(string) error
} }
closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &wrongtype) closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &wrongtype)
if err != nil { assert.NoError(t, err)
t.Fatal(err)
}
err = wrongtype.Add("not an int") err = wrongtype.Add("not an int")
if err == nil || !strings.Contains(err.Error(), "RPC error (-32700):") || !strings.Contains(err.Error(), "json: cannot unmarshal string into Go value of type int") { if err == nil || !strings.Contains(err.Error(), "RPC error (-32700):") || !strings.Contains(err.Error(), "json: cannot unmarshal string into Go value of type int") {
@ -189,9 +156,7 @@ func TestRPC(t *testing.T) {
NotThere func(string) error NotThere func(string) error
} }
closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &notfound) closer, err = NewClient("ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &notfound)
if err != nil { assert.NoError(t, err)
t.Fatal(err)
}
err = notfound.NotThere("hello?") err = notfound.NotThere("hello?")
if err == nil || err.Error() != "RPC error (-32601): method 'SimpleServerHandler.NotThere' not found" { if err == nil || err.Error() != "RPC error (-32601): method 'SimpleServerHandler.NotThere' not found" {
@ -238,9 +203,7 @@ func TestCtx(t *testing.T) {
Test func(ctx context.Context) Test func(ctx context.Context)
} }
closer, err := NewClient("ws://"+testServ.Listener.Addr().String(), "CtxHandler", &client) closer, err := NewClient("ws://"+testServ.Listener.Addr().String(), "CtxHandler", &client)
if err != nil { assert.NoError(t, err)
t.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond) ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
defer cancel() defer cancel()