forked from TrueCloudLab/frostfs-node
[#1400] owner: Upgrade SDK package
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
f8ac4632f8
commit
bb25ecbd15
60 changed files with 379 additions and 327 deletions
|
@ -2,13 +2,13 @@ package persistent
|
|||
|
||||
import (
|
||||
"context"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/session"
|
||||
"github.com/nspcc-dev/neofs-node/pkg/services/session/storage"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/owner"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/user"
|
||||
"go.etcd.io/bbolt"
|
||||
)
|
||||
|
||||
|
@ -18,9 +18,16 @@ import (
|
|||
// Returns response that is filled with just created token's
|
||||
// ID and public key for it.
|
||||
func (s *TokenStore) Create(ctx context.Context, body *session.CreateRequestBody) (*session.CreateResponseBody, error) {
|
||||
ownerBytes, err := owner.NewIDFromV2(body.GetOwnerID()).Marshal()
|
||||
idV2 := body.GetOwnerID()
|
||||
if idV2 == nil {
|
||||
return nil, errors.New("missing owner")
|
||||
}
|
||||
|
||||
var id user.ID
|
||||
|
||||
err := id.ReadFromV2(*idV2)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return nil, fmt.Errorf("invalid owner: %w", err)
|
||||
}
|
||||
|
||||
uidBytes, err := storage.NewTokenID()
|
||||
|
@ -41,21 +48,15 @@ func (s *TokenStore) Create(ctx context.Context, body *session.CreateRequestBody
|
|||
err = s.db.Update(func(tx *bbolt.Tx) error {
|
||||
rootBucket := tx.Bucket(sessionsBucket)
|
||||
|
||||
ownerBucket, err := rootBucket.CreateBucketIfNotExists(ownerBytes)
|
||||
ownerBucket, err := rootBucket.CreateBucketIfNotExists(id.WalletBytes())
|
||||
if err != nil {
|
||||
return fmt.Errorf(
|
||||
"could not get/create %s owner bucket: %w",
|
||||
hex.EncodeToString(ownerBytes),
|
||||
err,
|
||||
)
|
||||
"could not get/create %s owner bucket: %w", id, err)
|
||||
}
|
||||
|
||||
err = ownerBucket.Put(uidBytes, value)
|
||||
if err != nil {
|
||||
return fmt.Errorf("could not put session token for %s oid: %w",
|
||||
hex.EncodeToString(ownerBytes),
|
||||
err,
|
||||
)
|
||||
return fmt.Errorf("could not put session token for %s oid: %w", id, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
@ -11,7 +11,7 @@ import (
|
|||
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/refs"
|
||||
"github.com/nspcc-dev/neofs-api-go/v2/session"
|
||||
ownerSDK "github.com/nspcc-dev/neofs-sdk-go/owner"
|
||||
usertest "github.com/nspcc-dev/neofs-sdk-go/user/test"
|
||||
"github.com/stretchr/testify/require"
|
||||
"go.etcd.io/bbolt"
|
||||
)
|
||||
|
@ -22,11 +22,13 @@ func TestTokenStore(t *testing.T) {
|
|||
|
||||
defer ts.Close()
|
||||
|
||||
owner := new(refs.OwnerID)
|
||||
owner.SetValue([]byte{0, 1, 2, 3, 4, 5})
|
||||
owner := usertest.ID()
|
||||
|
||||
var ownerV2 refs.OwnerID
|
||||
owner.WriteToV2(&ownerV2)
|
||||
|
||||
req := new(session.CreateRequestBody)
|
||||
req.SetOwnerID(owner)
|
||||
req.SetOwnerID(&ownerV2)
|
||||
|
||||
const tokenNumber = 5
|
||||
|
||||
|
@ -50,7 +52,7 @@ func TestTokenStore(t *testing.T) {
|
|||
}
|
||||
|
||||
for i, token := range tokens {
|
||||
savedToken := ts.Get(ownerSDK.NewIDFromV2(owner), token.id)
|
||||
savedToken := ts.Get(owner, token.id)
|
||||
|
||||
require.Equal(t, uint64(i), savedToken.ExpiredAt())
|
||||
|
||||
|
@ -64,13 +66,15 @@ func TestTokenStore_Persistent(t *testing.T) {
|
|||
ts, err := NewTokenStore(path)
|
||||
require.NoError(t, err)
|
||||
|
||||
owner := new(refs.OwnerID)
|
||||
owner.SetValue([]byte{0, 1, 2, 3, 4, 5})
|
||||
idOwner := usertest.ID()
|
||||
|
||||
var idOwnerV2 refs.OwnerID
|
||||
idOwner.WriteToV2(&idOwnerV2)
|
||||
|
||||
const exp = 12345
|
||||
|
||||
req := new(session.CreateRequestBody)
|
||||
req.SetOwnerID(owner)
|
||||
req.SetOwnerID(&idOwnerV2)
|
||||
req.SetExpiration(exp)
|
||||
|
||||
res, err := ts.Create(context.Background(), req)
|
||||
|
@ -88,7 +92,7 @@ func TestTokenStore_Persistent(t *testing.T) {
|
|||
|
||||
defer ts.Close()
|
||||
|
||||
savedToken := ts.Get(ownerSDK.NewIDFromV2(owner), id)
|
||||
savedToken := ts.Get(idOwner, id)
|
||||
|
||||
equalKeys(t, pubKey, savedToken.SessionKey())
|
||||
}
|
||||
|
@ -123,11 +127,13 @@ func TestTokenStore_RemoveOld(t *testing.T) {
|
|||
|
||||
defer ts.Close()
|
||||
|
||||
owner := new(refs.OwnerID)
|
||||
owner.SetValue([]byte{0, 1, 2, 3, 4, 5})
|
||||
owner := usertest.ID()
|
||||
|
||||
var ownerV2 refs.OwnerID
|
||||
owner.WriteToV2(&ownerV2)
|
||||
|
||||
req := new(session.CreateRequestBody)
|
||||
req.SetOwnerID(owner)
|
||||
req.SetOwnerID(&ownerV2)
|
||||
|
||||
for _, test := range tests {
|
||||
req.SetExpiration(test.epoch)
|
||||
|
@ -144,7 +150,7 @@ func TestTokenStore_RemoveOld(t *testing.T) {
|
|||
ts.RemoveOld(currEpoch)
|
||||
|
||||
for _, test := range tests {
|
||||
token := ts.Get(ownerSDK.NewIDFromV2(owner), test.id)
|
||||
token := ts.Get(owner, test.id)
|
||||
|
||||
if test.epoch <= currEpoch {
|
||||
require.Nil(t, token)
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/pkg/services/session/storage"
|
||||
ownerSDK "github.com/nspcc-dev/neofs-sdk-go/owner"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/user"
|
||||
"go.etcd.io/bbolt"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
@ -83,16 +83,11 @@ func NewTokenStore(path string, opts ...Option) (*TokenStore, error) {
|
|||
// Get returns private token corresponding to the given identifiers.
|
||||
//
|
||||
// Returns nil is there is no element in storage.
|
||||
func (s *TokenStore) Get(ownerID *ownerSDK.ID, tokenID []byte) (t *storage.PrivateToken) {
|
||||
ownerBytes, err := ownerID.Marshal()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = s.db.View(func(tx *bbolt.Tx) error {
|
||||
func (s *TokenStore) Get(ownerID *user.ID, tokenID []byte) (t *storage.PrivateToken) {
|
||||
err := s.db.View(func(tx *bbolt.Tx) error {
|
||||
rootBucket := tx.Bucket(sessionsBucket)
|
||||
|
||||
ownerBucket := rootBucket.Bucket(ownerBytes)
|
||||
ownerBucket := rootBucket.Bucket(ownerID.WalletBytes())
|
||||
if ownerBucket == nil {
|
||||
return nil
|
||||
}
|
||||
|
@ -102,6 +97,8 @@ func (s *TokenStore) Get(ownerID *ownerSDK.ID, tokenID []byte) (t *storage.Priva
|
|||
return nil
|
||||
}
|
||||
|
||||
var err error
|
||||
|
||||
t, err = s.unpackToken(rawToken)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue