github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/smartcontract/manifest/group_test.go (about) 1 package manifest 2 3 import ( 4 "testing" 5 6 "github.com/nspcc-dev/neo-go/internal/testserdes" 7 "github.com/nspcc-dev/neo-go/pkg/crypto/keys" 8 "github.com/nspcc-dev/neo-go/pkg/util" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestGroupJSONInOut(t *testing.T) { 13 priv, err := keys.NewPrivateKey() 14 require.NoError(t, err) 15 pub := priv.PublicKey() 16 sig := make([]byte, keys.SignatureLen) 17 g := Group{pub, sig} 18 testserdes.MarshalUnmarshalJSON(t, &g, new(Group)) 19 } 20 21 func TestGroupsAreValid(t *testing.T) { 22 h := util.Uint160{42, 42, 42} 23 priv, err := keys.NewPrivateKey() 24 require.NoError(t, err) 25 priv2, err := keys.NewPrivateKey() 26 require.NoError(t, err) 27 pub := priv.PublicKey() 28 pub2 := priv2.PublicKey() 29 gcorrect := Group{pub, priv.Sign(h.BytesBE())} 30 gcorrect2 := Group{pub2, priv2.Sign(h.BytesBE())} 31 gincorrect := Group{pub, priv.Sign(h.BytesLE())} 32 gps := Groups{gcorrect} 33 require.NoError(t, gps.AreValid(h)) 34 35 gps = Groups{gincorrect} 36 require.Error(t, gps.AreValid(h)) 37 38 gps = Groups{gcorrect, gcorrect2} 39 require.NoError(t, gps.AreValid(h)) 40 41 gps = Groups{gcorrect, gcorrect} 42 require.Error(t, gps.AreValid(h)) 43 44 gps = Groups{gincorrect} 45 require.NoError(t, gps.AreValid(util.Uint160{})) // empty hash. 46 } 47 48 func TestGroupsContains(t *testing.T) { 49 priv, err := keys.NewPrivateKey() 50 require.NoError(t, err) 51 priv2, err := keys.NewPrivateKey() 52 require.NoError(t, err) 53 priv3, err := keys.NewPrivateKey() 54 require.NoError(t, err) 55 g1 := Group{priv.PublicKey(), nil} 56 g2 := Group{priv2.PublicKey(), nil} 57 gps := Groups{g1, g2} 58 require.True(t, gps.Contains(priv2.PublicKey())) 59 require.False(t, gps.Contains(priv3.PublicKey())) 60 }