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  }