package morph import ( "encoding/hex" "testing" "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neo-go/pkg/encoding/address" "github.com/spf13/viper" "github.com/stretchr/testify/require" ) func TestFrostfsIDConfig(t *testing.T) { pks := make([]*keys.PrivateKey, 4) for i := range pks { pk, err := keys.NewPrivateKey() require.NoError(t, err) pks[i] = pk } fmts := []string{ pks[0].GetScriptHash().StringLE(), address.Uint160ToString(pks[1].GetScriptHash()), hex.EncodeToString(pks[2].PublicKey().UncompressedBytes()), hex.EncodeToString(pks[3].PublicKey().Bytes()), } for i := range fmts { v := viper.New() v.Set("frostfsid.admin", fmts[i]) actual, found, err := getFrostfsIDAdmin(v) require.NoError(t, err) require.True(t, found) require.Equal(t, pks[i].GetScriptHash(), actual) } t.Run("bad key", func(t *testing.T) { v := viper.New() v.Set("frostfsid.admin", "abc") _, found, err := getFrostfsIDAdmin(v) require.Error(t, err) require.True(t, found) }) t.Run("missing key", func(t *testing.T) { v := viper.New() _, found, err := getFrostfsIDAdmin(v) require.NoError(t, err) require.False(t, found) }) }