[#1286] services/object: Validate object when created with sesssion token

All fields set by a user should be verified.

Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
Evgenii Stratonikov 2022-04-04 16:04:18 +03:00 committed by LeL
parent c6a9c5cd8c
commit 5736b834c3
4 changed files with 89 additions and 71 deletions

View file

@ -64,20 +64,20 @@ func TestFormatValidator_Validate(t *testing.T) {
require.NoError(t, err)
t.Run("nil input", func(t *testing.T) {
require.Error(t, v.Validate(nil))
require.Error(t, v.Validate(nil, true))
})
t.Run("nil identifier", func(t *testing.T) {
obj := object.New()
require.True(t, errors.Is(v.Validate(obj), errNilID))
require.True(t, errors.Is(v.Validate(obj, false), errNilID))
})
t.Run("nil container identifier", func(t *testing.T) {
obj := object.New()
obj.SetID(testObjectID(t))
require.True(t, errors.Is(v.Validate(obj), errNilCID))
require.True(t, errors.Is(v.Validate(obj, true), errNilCID))
})
t.Run("unsigned object", func(t *testing.T) {
@ -85,7 +85,7 @@ func TestFormatValidator_Validate(t *testing.T) {
obj.SetContainerID(cidtest.ID())
obj.SetID(testObjectID(t))
require.Error(t, v.Validate(obj))
require.Error(t, v.Validate(obj, true))
})
t.Run("correct w/ session token", func(t *testing.T) {
@ -101,7 +101,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.NoError(t, object.SetIDWithSignature(&ownerKey.PrivateKey, obj))
require.NoError(t, v.Validate(obj))
require.NoError(t, v.Validate(obj, false))
})
t.Run("correct w/o session token", func(t *testing.T) {
@ -109,7 +109,7 @@ func TestFormatValidator_Validate(t *testing.T) {
require.NoError(t, object.SetIDWithSignature(&ownerKey.PrivateKey, obj))
require.NoError(t, v.Validate(obj))
require.NoError(t, v.Validate(obj, false))
})
t.Run("tombstone content", func(t *testing.T) {
@ -197,19 +197,19 @@ func TestFormatValidator_Validate(t *testing.T) {
t.Run("invalid attribute value", func(t *testing.T) {
val := "text"
err := v.Validate(fn(val))
err := v.Validate(fn(val), false)
require.Error(t, err)
})
t.Run("expired object", func(t *testing.T) {
val := strconv.FormatUint(curEpoch-1, 10)
err := v.Validate(fn(val))
err := v.Validate(fn(val), false)
require.True(t, errors.Is(err, errExpired))
})
t.Run("alive object", func(t *testing.T) {
val := strconv.FormatUint(curEpoch, 10)
err := v.Validate(fn(val))
err := v.Validate(fn(val), true)
require.NoError(t, err)
})
})