frostfs-sdk-go/client/session_test.go
Evgenii Baidakov d1bcce5f79
client: Make MissingField error exported
Signed-off-by: Evgenii Baidakov <evgenii@nspcc.io>
2023-05-19 14:45:50 +04:00

73 lines
2 KiB
Go

package client
import (
"context"
"testing"
v2netmap "github.com/nspcc-dev/neofs-api-go/v2/netmap"
"github.com/nspcc-dev/neofs-api-go/v2/rpc/client"
"github.com/nspcc-dev/neofs-api-go/v2/session"
neofscrypto "github.com/nspcc-dev/neofs-sdk-go/crypto"
"github.com/nspcc-dev/neofs-sdk-go/crypto/test"
"github.com/stretchr/testify/require"
)
type sessionAPIServer struct {
signer neofscrypto.Signer
setBody func(body *session.CreateResponseBody)
}
func (m sessionAPIServer) netMapSnapshot(context.Context, v2netmap.SnapshotRequest) (*v2netmap.SnapshotResponse, error) {
return nil, nil
}
func (m sessionAPIServer) createSession(*client.Client, *session.CreateRequest, ...client.CallOption) (*session.CreateResponse, error) {
var body session.CreateResponseBody
m.setBody(&body)
var resp session.CreateResponse
resp.SetBody(&body)
if err := signServiceMessage(m.signer, &resp); err != nil {
return nil, err
}
return &resp, nil
}
func TestClient_SessionCreate(t *testing.T) {
ctx := context.Background()
signer := test.RandomSignerRFC6979(t)
var prmInit PrmInit
prmInit.SetDefaultSigner(signer)
var c Client
c.Init(prmInit)
var prmSessionCreate PrmSessionCreate
prmSessionCreate.UseSigner(signer)
prmSessionCreate.SetExp(1)
t.Run("missing session id", func(t *testing.T) {
c.setNeoFSAPIServer(&sessionAPIServer{signer: signer, setBody: func(body *session.CreateResponseBody) {
body.SetSessionKey([]byte{1})
}})
result, err := c.SessionCreate(ctx, prmSessionCreate)
require.Nil(t, result)
require.ErrorIs(t, err, ErrMissingResponseField)
require.Equal(t, "missing session id field in the response", err.Error())
})
t.Run("missing session key", func(t *testing.T) {
c.setNeoFSAPIServer(&sessionAPIServer{signer: signer, setBody: func(body *session.CreateResponseBody) {
body.SetID([]byte{1})
}})
result, err := c.SessionCreate(ctx, prmSessionCreate)
require.Nil(t, result)
require.ErrorIs(t, err, ErrMissingResponseField)
require.Equal(t, "missing session key field in the response", err.Error())
})
}