package blobstortest import ( "context" "testing" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/blobstor/common" "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client" oidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id/test" "github.com/stretchr/testify/require" ) func TestDelete(t *testing.T, cons Constructor, min, max uint64) { s := cons(t) require.NoError(t, s.Open(false)) require.NoError(t, s.Init()) defer func() { require.NoError(t, s.Close()) }() objects := prepare(t, 4, s, min, max) t.Run("delete non-existent", func(t *testing.T) { var prm common.DeletePrm prm.Address = oidtest.Address() _, err := s.Delete(context.Background(), prm) require.True(t, client.IsErrObjectNotFound(err)) }) t.Run("with storage ID", func(t *testing.T) { var prm common.DeletePrm prm.Address = objects[0].addr prm.StorageID = objects[0].storageID _, err := s.Delete(context.Background(), prm) require.NoError(t, err) t.Run("exists fail", func(t *testing.T) { prm := common.ExistsPrm{Address: oidtest.Address()} res, err := s.Exists(context.Background(), prm) require.NoError(t, err) require.False(t, res.Exists) }) t.Run("get fail", func(t *testing.T) { prm := common.GetPrm{Address: oidtest.Address()} _, err := s.Get(context.Background(), prm) require.True(t, client.IsErrObjectNotFound(err)) }) t.Run("getrange fail", func(t *testing.T) { prm := common.GetRangePrm{Address: oidtest.Address()} _, err := s.GetRange(context.Background(), prm) require.True(t, client.IsErrObjectNotFound(err)) }) }) t.Run("without storage ID", func(t *testing.T) { var prm common.DeletePrm prm.Address = objects[1].addr _, err := s.Delete(context.Background(), prm) require.NoError(t, err) }) t.Run("delete twice", func(t *testing.T) { var prm common.DeletePrm prm.Address = objects[2].addr prm.StorageID = objects[2].storageID _, err := s.Delete(context.Background(), prm) require.NoError(t, err) _, err = s.Delete(context.Background(), prm) require.True(t, client.IsErrObjectNotFound(err)) }) t.Run("non-deleted object is still available", func(t *testing.T) { var prm common.GetPrm prm.Address = objects[3].addr prm.Raw = true res, err := s.Get(context.Background(), prm) require.NoError(t, err) require.Equal(t, objects[3].raw, res.RawData) }) }