[#271] object: Add UserAttributes
method
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
This commit is contained in:
parent
d342c0bc16
commit
29bdb885aa
2 changed files with 58 additions and 0 deletions
|
@ -3,7 +3,10 @@ package object
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs"
|
||||
v2session "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/session"
|
||||
|
@ -312,6 +315,26 @@ func (o *Object) Attributes() []Attribute {
|
|||
return res
|
||||
}
|
||||
|
||||
// UserAttributes returns object user attributes.
|
||||
func (o *Object) UserAttributes() []Attribute {
|
||||
attrs := (*object.Object)(o).
|
||||
GetHeader().
|
||||
GetAttributes()
|
||||
|
||||
res := make([]Attribute, 0, len(attrs))
|
||||
|
||||
for _, attr := range attrs {
|
||||
key := attr.GetKey()
|
||||
|
||||
if !strings.HasPrefix(key, container.SysAttributePrefix) &&
|
||||
!strings.HasPrefix(key, container.SysAttributePrefixNeoFS) {
|
||||
res = append(res, *NewAttributeFromV2(&attr))
|
||||
}
|
||||
}
|
||||
|
||||
return slices.Clip(res)
|
||||
}
|
||||
|
||||
// SetAttributes sets object attributes.
|
||||
func (o *Object) SetAttributes(v ...Attribute) {
|
||||
attrs := make([]object.Attribute, len(v))
|
||||
|
|
|
@ -3,9 +3,12 @@ package object_test
|
|||
import (
|
||||
"testing"
|
||||
|
||||
v2container "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/container"
|
||||
cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test"
|
||||
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object"
|
||||
objecttest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/test"
|
||||
usertest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/user/test"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -24,3 +27,35 @@ func TestInitCreation(t *testing.T) {
|
|||
require.Equal(t, cnr, cID)
|
||||
require.Equal(t, own, o.OwnerID())
|
||||
}
|
||||
|
||||
func Test_Attributes(t *testing.T) {
|
||||
obj := objecttest.Object()
|
||||
|
||||
var (
|
||||
attr *object.Attribute
|
||||
sysAttrs []object.Attribute
|
||||
)
|
||||
|
||||
attr = object.NewAttribute()
|
||||
attr.SetKey(v2container.SysAttributePrefix + "key")
|
||||
attr.SetValue("value")
|
||||
sysAttrs = append(sysAttrs, *attr)
|
||||
|
||||
attr = object.NewAttribute()
|
||||
attr.SetKey(v2container.SysAttributePrefixNeoFS + "key")
|
||||
attr.SetValue("value")
|
||||
sysAttrs = append(sysAttrs, *attr)
|
||||
|
||||
userAttrs := obj.Attributes()
|
||||
obj.SetAttributes(append(userAttrs, sysAttrs...)...)
|
||||
|
||||
t.Run("get attributes", func(t *testing.T) {
|
||||
attrs := obj.Attributes()
|
||||
assert.ElementsMatch(t, attrs, append(userAttrs, sysAttrs...))
|
||||
})
|
||||
|
||||
t.Run("get user attributes", func(t *testing.T) {
|
||||
attrs := obj.UserAttributes()
|
||||
assert.ElementsMatch(t, attrs, userAttrs)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue