git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/eacl/target_test.go (about) 1 package eacl 2 3 import ( 4 "crypto/ecdsa" 5 "testing" 6 7 v2acl "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl" 8 "github.com/nspcc-dev/neo-go/pkg/crypto/keys" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestTarget(t *testing.T) { 13 pubs := []*ecdsa.PublicKey{ 14 randomPublicKey(t), 15 randomPublicKey(t), 16 } 17 18 target := NewTarget() 19 target.SetRole(RoleSystem) 20 SetTargetECDSAKeys(target, pubs...) 21 22 v2 := target.ToV2() 23 require.NotNil(t, v2) 24 require.Equal(t, v2acl.RoleSystem, v2.GetRole()) 25 require.Len(t, v2.GetKeys(), len(pubs)) 26 for i, key := range v2.GetKeys() { 27 require.Equal(t, key, (*keys.PublicKey)(pubs[i]).Bytes()) 28 } 29 30 newTarget := NewTargetFromV2(v2) 31 require.Equal(t, target, newTarget) 32 33 t.Run("from nil v2 target", func(t *testing.T) { 34 require.Equal(t, new(Target), NewTargetFromV2(nil)) 35 }) 36 } 37 38 func TestTargetEncoding(t *testing.T) { 39 tar := NewTarget() 40 tar.SetRole(RoleSystem) 41 SetTargetECDSAKeys(tar, randomPublicKey(t)) 42 43 t.Run("binary", func(t *testing.T) { 44 data, err := tar.Marshal() 45 require.NoError(t, err) 46 47 tar2 := NewTarget() 48 require.NoError(t, tar2.Unmarshal(data)) 49 50 require.Equal(t, tar, tar2) 51 }) 52 53 t.Run("json", func(t *testing.T) { 54 data, err := tar.MarshalJSON() 55 require.NoError(t, err) 56 57 tar2 := NewTarget() 58 require.NoError(t, tar2.UnmarshalJSON(data)) 59 60 require.Equal(t, tar, tar2) 61 }) 62 } 63 64 func TestTarget_ToV2(t *testing.T) { 65 t.Run("nil", func(t *testing.T) { 66 var x *Target 67 68 require.Nil(t, x.ToV2()) 69 }) 70 71 t.Run("default values", func(t *testing.T) { 72 target := NewTarget() 73 74 // check initial values 75 require.Equal(t, RoleUnknown, target.Role()) 76 require.Nil(t, target.BinaryKeys()) 77 78 // convert to v2 message 79 targetV2 := target.ToV2() 80 81 require.Equal(t, v2acl.RoleUnknown, targetV2.GetRole()) 82 require.Nil(t, targetV2.GetKeys()) 83 }) 84 }