mirror of
https://github.com/eosswedenorg/thalos
synced 2026-07-03 11:53:41 +02:00
api/client_test.go: Adding test for reading rollback messages.
Because these don't happen that often on a real ship node. Test as much as possible with unit tests.
This commit is contained in:
parent
9d79bb8315
commit
a4954ab949
1 changed files with 41 additions and 2 deletions
|
|
@ -1,16 +1,28 @@
|
||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/eosswedenorg/thalos/api/message"
|
"github.com/eosswedenorg/thalos/api/message"
|
||||||
|
_ "github.com/eosswedenorg/thalos/api/message/json"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
type mockReader struct{}
|
type mockReader struct {
|
||||||
|
r io.Reader
|
||||||
|
}
|
||||||
|
|
||||||
func (m mockReader) Read(channel Channel) ([]byte, error) {
|
func (m mockReader) Read(channel Channel) ([]byte, error) {
|
||||||
return []byte{}, nil
|
if m.r != nil {
|
||||||
|
b, err := io.ReadAll(m.r)
|
||||||
|
if err == nil && len(b) < 1 {
|
||||||
|
err = io.EOF
|
||||||
|
}
|
||||||
|
return b, err
|
||||||
|
}
|
||||||
|
return []byte{}, io.EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m mockReader) Close() error {
|
func (m mockReader) Close() error {
|
||||||
|
|
@ -59,3 +71,30 @@ func TestClient_SubscribeWithNilHandler(t *testing.T) {
|
||||||
|
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestClient_ReadRollback(t *testing.T) {
|
||||||
|
called := false
|
||||||
|
expected := message.RollbackMessage{
|
||||||
|
OldBlockNum: 1000,
|
||||||
|
NewBlockNum: 50,
|
||||||
|
}
|
||||||
|
|
||||||
|
codec, err := message.GetCodec("json")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
payload, err := codec.Encoder(expected)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
client := NewClient(mockReader{bytes.NewReader(payload)}, codec.Decoder)
|
||||||
|
client.OnRollback = func(rb message.RollbackMessage) {
|
||||||
|
assert.Equal(t, rb, expected)
|
||||||
|
called = true
|
||||||
|
}
|
||||||
|
|
||||||
|
err = client.Subscribe(RollbackChannel)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
client.Run()
|
||||||
|
|
||||||
|
assert.True(t, called, "Rollback callback not called when it should have been")
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue