package layer import ( "testing" "time" "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/object" "git.frostfs.info/TrueCloudLab/frostfs-s3-gw/api/data" "github.com/stretchr/testify/require" ) func TestObjectLockAttributes(t *testing.T) { tc := prepareContext(t) err := tc.layer.PutBucketSettings(tc.ctx, &PutSettingsParams{ BktInfo: tc.bktInfo, Settings: &data.BucketSettings{Versioning: data.VersioningEnabled}, }) require.NoError(t, err) obj := tc.putObject([]byte("content obj1 v1")) p := &PutLockInfoParams{ ObjVersion: &data.ObjectVersion{ BktInfo: tc.bktInfo, ObjectName: obj.Name, VersionID: obj.VersionID(), }, NewLock: &data.ObjectLock{ Retention: &data.RetentionLock{ Until: time.Now(), }, }, CopiesNumbers: []uint32{0}, } err = tc.layer.PutLockInfo(tc.ctx, p) require.NoError(t, err) foundLock, err := tc.layer.GetLockInfo(tc.ctx, p.ObjVersion) require.NoError(t, err) lockObj := tc.getObjectByID(foundLock.Retention()) require.NotNil(t, lockObj) expEpoch := false for _, attr := range lockObj.Attributes() { if attr.Key() == object.SysAttributeExpEpoch { expEpoch = true } } require.Truef(t, expEpoch, "system header __SYSTEM__EXPIRATION_EPOCH presence") }