100 lines
2.4 KiB
Go
100 lines
2.4 KiB
Go
package grpc
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/wormhole-foundation/wormhole/sdk/vaa"
|
|
"go.uber.org/zap/zaptest"
|
|
)
|
|
|
|
var emitterAddr = vaa.Address{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4}
|
|
|
|
func createVAA(chainID vaa.ChainID, emitterAddr vaa.Address) *vaa.VAA {
|
|
var payload = []byte{97, 97, 97, 97, 97, 97}
|
|
|
|
vaa := &vaa.VAA{
|
|
Version: vaa.SupportedVAAVersion,
|
|
GuardianSetIndex: uint32(1),
|
|
Signatures: nil,
|
|
Timestamp: time.Unix(0, 0),
|
|
Nonce: uint32(1),
|
|
Sequence: uint64(1),
|
|
ConsistencyLevel: uint8(32),
|
|
EmitterChain: chainID,
|
|
EmitterAddress: emitterAddr,
|
|
Payload: payload,
|
|
}
|
|
|
|
return vaa
|
|
}
|
|
|
|
func TestSignedVaaSubscribers_Register(t *testing.T) {
|
|
logger := zaptest.NewLogger(t)
|
|
var fi []filterSignedVaa
|
|
svs := NewSignedVaaSubscribers(logger)
|
|
sub := svs.Register(fi)
|
|
assert.NotNil(t, sub)
|
|
assert.NotEmpty(t, sub.id)
|
|
}
|
|
|
|
func TestSignedVaaSubscribers_Unregister(t *testing.T) {
|
|
logger := zaptest.NewLogger(t)
|
|
var fi []filterSignedVaa
|
|
svs := NewSignedVaaSubscribers(logger)
|
|
sub := svs.Register(fi)
|
|
assert.Equal(t, 1, len(svs.addSubscriber))
|
|
svs.Unregister(sub)
|
|
assert.Equal(t, 1, len(svs.removeSubscriber))
|
|
}
|
|
|
|
func TestSignedVaaSubscribers_HandleVAA(t *testing.T) {
|
|
|
|
t.Run("empty filters", func(t *testing.T) {
|
|
logger := zaptest.NewLogger(t)
|
|
var fi []filterSignedVaa
|
|
svs := NewSignedVaaSubscribers(logger)
|
|
svs.Register(fi)
|
|
|
|
vaas := []byte{0x0, 0x1, 0x2, 0x3}
|
|
err := svs.HandleVAA(vaas)
|
|
assert.Nil(t, err)
|
|
vaaBytes := <-svs.source
|
|
assert.Equal(t, vaas, vaaBytes)
|
|
})
|
|
|
|
t.Run("invalid vaa", func(t *testing.T) {
|
|
logger := zaptest.NewLogger(t)
|
|
fi := []filterSignedVaa{
|
|
{
|
|
chainId: 18,
|
|
emitterAddr: vaa.Address{0x0, 0x1},
|
|
},
|
|
}
|
|
svs := NewSignedVaaSubscribers(logger)
|
|
_ = svs.Register(fi)
|
|
|
|
vaas := []byte{0x0, 0x1, 0x2, 0x3}
|
|
err := svs.HandleVAA(vaas)
|
|
assert.Nil(t, err)
|
|
})
|
|
|
|
t.Run("filter doesn't apply", func(t *testing.T) {
|
|
logger := zaptest.NewLogger(t)
|
|
fi := []filterSignedVaa{
|
|
{
|
|
chainId: 18,
|
|
emitterAddr: vaa.Address{0x0, 0x1},
|
|
},
|
|
}
|
|
svs := NewSignedVaaSubscribers(logger)
|
|
sub := svs.Register(fi)
|
|
vaa := createVAA(vaa.ChainIDEthereum, emitterAddr)
|
|
vaaBytes, _ := vaa.MarshalBinary()
|
|
err := svs.HandleVAA(vaaBytes)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, 0, len(sub.ch))
|
|
})
|
|
}
|