[#1377] oid, cid: Upgrade SDK package

Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
Leonard Lyubich 2022-05-12 19:37:46 +03:00 committed by LeL
parent f65898a354
commit f15e6e888f
118 changed files with 1455 additions and 886 deletions

View file

@ -89,9 +89,15 @@ func NewFormatValidator(opts ...FormatValidatorOption) *FormatValidator {
func (v *FormatValidator) Validate(obj *object.Object, unprepared bool) error {
if obj == nil {
return errNilObject
} else if !unprepared && obj.ID() == nil {
}
_, idSet := obj.ID()
if !unprepared && !idSet {
return errNilID
} else if obj.ContainerID() == nil {
}
_, cnrSet := obj.ContainerID()
if !cnrSet {
return errNilCID
}
@ -180,14 +186,18 @@ func (v *FormatValidator) ValidateContent(o *object.Object) error {
}
// mark all objects from the tombstone body as removed in the storage engine
cid := o.ContainerID()
cnr, ok := o.ContainerID()
if !ok {
return errors.New("missing container ID")
}
idList := tombstone.Members()
addrList := make([]*addressSDK.Address, 0, len(idList))
for i := range idList {
a := addressSDK.NewAddress()
a.SetContainerID(cid)
a.SetObjectID(&idList[i])
a.SetContainerID(cnr)
a.SetObjectID(idList[i])
addrList = append(addrList, a)
}
@ -213,6 +223,16 @@ func (v *FormatValidator) ValidateContent(o *object.Object) error {
return errors.New("empty payload in lock")
}
cnr, ok := o.ContainerID()
if !ok {
return errors.New("missing container")
}
id, ok := o.ID()
if !ok {
return errors.New("missing ID")
}
var lock object.Lock
err := lock.Unmarshal(o.Payload())
@ -230,7 +250,7 @@ func (v *FormatValidator) ValidateContent(o *object.Object) error {
locklist := make([]oid.ID, num)
lock.ReadMembers(locklist)
err = v.locker.Lock(*o.ContainerID(), *o.ID(), locklist)
err = v.locker.Lock(cnr, id, locklist)
if err != nil {
return fmt.Errorf("lock objects from %s object content: %w", o.Type(), err)
}

View file

@ -12,6 +12,7 @@ import (
cidtest "github.com/nspcc-dev/neofs-sdk-go/container/id/test"
"github.com/nspcc-dev/neofs-sdk-go/object"
oidSDK "github.com/nspcc-dev/neofs-sdk-go/object/id"
oidtest "github.com/nspcc-dev/neofs-sdk-go/object/id/test"
"github.com/nspcc-dev/neofs-sdk-go/owner"
sessiontest "github.com/nspcc-dev/neofs-sdk-go/session/test"
"github.com/nspcc-dev/neofs-sdk-go/storagegroup"
@ -27,13 +28,6 @@ func testSHA(t *testing.T) [sha256.Size]byte {
return cs
}
func testObjectID(t *testing.T) *oidSDK.ID {
id := oidSDK.NewID()
id.SetSHA256(testSHA(t))
return id
}
func blankValidObject(key *ecdsa.PrivateKey) *object.Object {
obj := object.New()
obj.SetContainerID(cidtest.ID())
@ -74,7 +68,7 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("nil container identifier", func(t *testing.T) {
obj := object.New()
obj.SetID(testObjectID(t))
obj.SetID(oidtest.ID())
require.ErrorIs(t, v.Validate(obj, true), errNilCID)
})
@ -82,7 +76,7 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("unsigned object", func(t *testing.T) {
obj := object.New()
obj.SetContainerID(cidtest.ID())
obj.SetID(testObjectID(t))
obj.SetID(oidtest.ID())
require.Error(t, v.Validate(obj, true))
})
@ -98,7 +92,7 @@ func TestFormatValidator_Validate(t *testing.T) {
obj.SetSessionToken(sessiontest.Token())
obj.SetOwnerID(tok.OwnerID())
require.NoError(t, object.SetIDWithSignature(&ownerKey.PrivateKey, obj))
require.NoError(t, object.SetIDWithSignature(ownerKey.PrivateKey, obj))
require.NoError(t, v.Validate(obj, false))
})
@ -106,7 +100,7 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("correct w/o session token", func(t *testing.T) {
obj := blankValidObject(&ownerKey.PrivateKey)
require.NoError(t, object.SetIDWithSignature(&ownerKey.PrivateKey, obj))
require.NoError(t, object.SetIDWithSignature(ownerKey.PrivateKey, obj))
require.NoError(t, v.Validate(obj, false))
})
@ -114,11 +108,12 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("tombstone content", func(t *testing.T) {
obj := object.New()
obj.SetType(object.TypeTombstone)
obj.SetContainerID(cidtest.ID())
require.Error(t, v.ValidateContent(obj)) // no tombstone content
content := object.NewTombstone()
content.SetMembers([]oidSDK.ID{*testObjectID(t)})
content.SetMembers([]oidSDK.ID{oidtest.ID()})
data, err := content.Marshal()
require.NoError(t, err)
@ -127,7 +122,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.Error(t, v.ValidateContent(obj)) // no members in tombstone
content.SetMembers([]oidSDK.ID{*testObjectID(t)})
content.SetMembers([]oidSDK.ID{oidtest.ID()})
data, err = content.Marshal()
require.NoError(t, err)
@ -169,7 +164,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.Error(t, v.ValidateContent(obj))
content.SetMembers([]oidSDK.ID{*testObjectID(t)})
content.SetMembers([]oidSDK.ID{oidtest.ID()})
data, err = content.Marshal()
require.NoError(t, err)
@ -189,7 +184,7 @@ func TestFormatValidator_Validate(t *testing.T) {
obj.SetAttributes(a)
require.NoError(t, object.SetIDWithSignature(&ownerKey.PrivateKey, obj))
require.NoError(t, object.SetIDWithSignature(ownerKey.PrivateKey, obj))
return obj
}

View file

@ -9,8 +9,16 @@ import (
func AddressOf(obj *object.Object) *addressSDK.Address {
if obj != nil {
addr := addressSDK.NewAddress()
addr.SetObjectID(obj.ID())
addr.SetContainerID(obj.ContainerID())
id, ok := obj.ID()
if ok {
addr.SetObjectID(id)
}
cnr, ok := obj.ContainerID()
if ok {
addr.SetContainerID(cnr)
}
return addr
}