public void Remove_previously_saved_S3_object(string s3ObjectKey, S3Object s3Object = null)
        {
            "And a S3 Object with given key is saved"
            .x(async() =>
            {
                s3Object = new S3Object
                {
                    Bucket       = BucketId,
                    Key          = s3ObjectKey,
                    CreationDate = DateTime.UtcNow,
                    Content      = new byte[] { 0x01, 0x02, 0x03 },
                    ContentType  = "application/octet-stream"
                };
                await _storage.AddObjectAsync(s3Object);
            });

            "When method RemoveS3ObjectAsync() will be called with given key"
            .x(async() => await _storage.DeleteObjectAsync(BucketId, s3ObjectKey));

            "Then the corresponding reliable dictionaries are removed"
            .x(async() =>
            {
                using (var tx = _stateManager.CreateTransaction())
                {
                    var uriPrefix  = $"fabric://mocks/{S3EntriesKey}:{s3Object.Bucket}:";
                    var enumerator = _stateManager.GetAsyncEnumerator();
                    while (await enumerator.MoveNextAsync(CancellationToken.None))
                    {
                        var uriStr = enumerator.Current.Name.ToString();
                        Assert.False(uriStr.StartsWith(uriPrefix));
                    }
                }
            });
        }
        public async Task <IActionResult> Delete(string bucket, string key, CancellationToken cancellationToken)
        {
            await _storage.DeleteObjectAsync(bucket, key, cancellationToken);

            return(NoContent());
        }