session: implement function for receiving session public key bytes

After recent changes PrivateToken cannot directly return public key
bytes. In order to provide this ability, this commit implements
a function over PrivateToken interface.
This commit is contained in:
Leonard Lyubich 2020-05-18 13:14:18 +03:00
parent af28735ca6
commit 291d512840
3 changed files with 49 additions and 1 deletions

View file

@ -3,6 +3,7 @@ package session
import (
"testing"
crypto "github.com/nspcc-dev/neofs-crypto"
"github.com/stretchr/testify/require"
)
@ -49,3 +50,27 @@ func TestPrivateTokenKey_SetTokenID(t *testing.T) {
require.Equal(t, tokenID, s.token)
}
func TestPublicSessionToken(t *testing.T) {
var err error
// nil PrivateToken
_, err = PublicSessionToken(nil)
require.EqualError(t, err, ErrNilPrivateToken.Error())
// empty private key
var pToken PrivateToken = new(pToken)
_, err = PublicSessionToken(pToken)
require.EqualError(t, err, crypto.ErrEmptyPrivateKey.Error())
// correct PrivateToken
pToken, err = NewPrivateToken(0)
require.NoError(t, err)
key := pToken.PrivateKey()
require.NotNil(t, key)
res, err := PublicSessionToken(pToken)
require.NoError(t, err)
require.Equal(t, res, crypto.MarshalPublicKey(&key.PublicKey))
}