frostfs-node/pkg/morph/event/neofs/unbind_test.go
Leonard Lyubich f76083484b [] morph/container: Do not parse public key in Put event parser
Morph event structures defined in `pkg/morph/event` should only carry
notification values without any additional interpretation. All logical work
should be concentrated on app-side. Change `Bind.User` / `Unbind.User` to
return byte slice. Change `Bind.Keys` / `Unbind.Keys` to return `[][]byte`.
`ParseBind` / `ParseUnbind` don't decode data from now.

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
2021-06-02 10:50:44 +03:00

63 lines
1.3 KiB
Go

package neofs
import (
"testing"
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
"github.com/nspcc-dev/neofs-node/pkg/morph/event"
"github.com/stretchr/testify/require"
)
func TestParseUnbind(t *testing.T) {
var (
user = []byte{0x1, 0x2, 0x3}
publicKeys = [][]byte{
[]byte("key1"),
[]byte("key2"),
[]byte("key3"),
}
)
t.Run("wrong number of parameters", func(t *testing.T) {
prms := []stackitem.Item{
stackitem.NewMap(),
}
_, err := ParseUnbind(prms)
require.EqualError(t, err, event.WrongNumberOfParameters(2, len(prms)).Error())
})
t.Run("wrong first parameter", func(t *testing.T) {
_, err := ParseUnbind([]stackitem.Item{
stackitem.NewMap(),
})
require.Error(t, err)
})
t.Run("wrong second parameter", func(t *testing.T) {
_, err := ParseUnbind([]stackitem.Item{
stackitem.NewByteArray(user),
stackitem.NewMap(),
})
require.Error(t, err)
})
t.Run("correct", func(t *testing.T) {
ev, err := ParseUnbind([]stackitem.Item{
stackitem.NewByteArray(user),
stackitem.NewArray([]stackitem.Item{
stackitem.NewByteArray(publicKeys[0]),
stackitem.NewByteArray(publicKeys[1]),
stackitem.NewByteArray(publicKeys[2]),
}),
})
require.NoError(t, err)
e := ev.(Unbind)
require.Equal(t, user, e.User())
require.Equal(t, publicKeys, e.Keys())
})
}