forked from TrueCloudLab/neoneo-go
0036b3e52b
Also implement Bytes/Fill routines for generating byte slices.
56 lines
1.4 KiB
Go
56 lines
1.4 KiB
Go
package context
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"testing"
|
|
|
|
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
|
"github.com/nspcc-dev/neo-go/pkg/internal/random"
|
|
"github.com/nspcc-dev/neo-go/pkg/internal/testserdes"
|
|
"github.com/nspcc-dev/neo-go/pkg/smartcontract"
|
|
"github.com/nspcc-dev/neo-go/pkg/util"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestContextItem_AddSignature(t *testing.T) {
|
|
item := &Item{Signatures: make(map[string][]byte)}
|
|
|
|
priv1, err := keys.NewPrivateKey()
|
|
require.NoError(t, err)
|
|
|
|
pub1 := priv1.PublicKey()
|
|
sig1 := []byte{1, 2, 3}
|
|
item.AddSignature(pub1, sig1)
|
|
require.Equal(t, sig1, item.GetSignature(pub1))
|
|
|
|
priv2, err := keys.NewPrivateKey()
|
|
require.NoError(t, err)
|
|
|
|
pub2 := priv2.PublicKey()
|
|
sig2 := []byte{5, 6, 7}
|
|
item.AddSignature(pub2, sig2)
|
|
require.Equal(t, sig2, item.GetSignature(pub2))
|
|
require.Equal(t, sig1, item.GetSignature(pub1))
|
|
}
|
|
|
|
func TestContextItem_MarshalJSON(t *testing.T) {
|
|
priv1, err := keys.NewPrivateKey()
|
|
require.NoError(t, err)
|
|
|
|
priv2, err := keys.NewPrivateKey()
|
|
require.NoError(t, err)
|
|
|
|
expected := &Item{
|
|
Script: util.Uint160{1, 2, 3},
|
|
Parameters: []smartcontract.Parameter{{
|
|
Type: smartcontract.SignatureType,
|
|
Value: random.Bytes(64),
|
|
}},
|
|
Signatures: map[string][]byte{
|
|
hex.EncodeToString(priv1.PublicKey().Bytes()): random.Bytes(64),
|
|
hex.EncodeToString(priv2.PublicKey().Bytes()): random.Bytes(64),
|
|
},
|
|
}
|
|
|
|
testserdes.MarshalUnmarshalJSON(t, expected, new(Item))
|
|
}
|