[#53] session: move XHeader from neofs-api-go

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
remotes/fyrchik/master
Evgenii Stratonikov 2021-10-27 13:00:18 +03:00 committed by Alex Vanin
parent ee47683848
commit ff54fb7647
2 changed files with 113 additions and 0 deletions

55
session/xheader.go 100644
View File

@ -0,0 +1,55 @@
package session
import (
"github.com/nspcc-dev/neofs-api-go/v2/session"
)
// XHeader represents v2-compatible XHeader.
type XHeader session.XHeader
// NewXHeaderFromV2 wraps v2 XHeader message to XHeader.
//
// Nil session.XHeader converts to nil.
func NewXHeaderFromV2(v *session.XHeader) *XHeader {
return (*XHeader)(v)
}
// NewXHeader creates, initializes and returns blank XHeader instance.
//
// Defaults:
// - key: "";
// - value: "".
func NewXHeader() *XHeader {
return NewXHeaderFromV2(new(session.XHeader))
}
// ToV2 converts XHeader to v2 XHeader message.
//
// Nil XHeader converts to nil.
func (x *XHeader) ToV2() *session.XHeader {
return (*session.XHeader)(x)
}
// Key returns key to X-Header.
func (x *XHeader) Key() string {
return (*session.XHeader)(x).
GetKey()
}
// SetKey sets key to X-Header.
func (x *XHeader) SetKey(k string) {
(*session.XHeader)(x).
SetKey(k)
}
// Value returns value of X-Header.
func (x *XHeader) Value() string {
return (*session.XHeader)(x).
GetValue()
}
// SetValue sets value of X-Header.
func (x *XHeader) SetValue(k string) {
(*session.XHeader)(x).
SetValue(k)
}

View File

@ -0,0 +1,58 @@
package session
import (
"testing"
"github.com/nspcc-dev/neofs-api-go/v2/session"
"github.com/stretchr/testify/require"
)
func TestXHeader(t *testing.T) {
x := NewXHeader()
key := "some key"
val := "some value"
x.SetKey(key)
x.SetValue(val)
require.Equal(t, key, x.Key())
require.Equal(t, val, x.Value())
xV2 := x.ToV2()
require.Equal(t, key, xV2.GetKey())
require.Equal(t, val, xV2.GetValue())
}
func TestNewXHeaderFromV2(t *testing.T) {
t.Run("from nil", func(t *testing.T) {
var x *session.XHeader
require.Nil(t, NewXHeaderFromV2(x))
})
}
func TestXHeader_ToV2(t *testing.T) {
t.Run("nil", func(t *testing.T) {
var x *XHeader
require.Nil(t, x.ToV2())
})
}
func TestNewXHeader(t *testing.T) {
t.Run("default values", func(t *testing.T) {
xh := NewXHeader()
// check initial values
require.Empty(t, xh.Value())
require.Empty(t, xh.Key())
// convert to v2 message
xhV2 := xh.ToV2()
require.Empty(t, xhV2.GetValue())
require.Empty(t, xhV2.GetKey())
})
}