Пример #1
0
        public async Task UploadObjectAsync_InvalidHash_ThrowOnly()
        {
            var client      = StorageClient.Create();
            var interceptor = new BreakUploadInterceptor();

            client.Service.HttpClient.MessageHandler.AddExecuteInterceptor(interceptor);
            var stream  = GenerateData(50);
            var name    = IdGenerator.FromGuid();
            var bucket  = _fixture.MultiVersionBucket;
            var options = new UploadObjectOptions {
                UploadValidationMode = UploadValidationMode.ThrowOnly
            };
            await Assert.ThrowsAsync <UploadValidationException>(() => client.UploadObjectAsync(bucket, name, null, stream, options));

            // We don't delete the object, so it's still present.
            ValidateData(bucket, name, new MemoryStream(interceptor.UploadedBytes));
        }
Пример #2
0
        public async Task UploadObjectAsync_InvalidHash_None()
        {
            var client      = StorageClient.Create();
            var interceptor = new BreakUploadInterceptor();

            client.Service.HttpClient.MessageHandler.AddExecuteInterceptor(interceptor);
            var stream  = GenerateData(50);
            var name    = IdGenerator.FromGuid();
            var bucket  = _fixture.MultiVersionBucket;
            var options = new UploadObjectOptions {
                UploadValidationMode = UploadValidationMode.None
            };
            // Upload succeeds despite the data being broken.
            await client.UploadObjectAsync(bucket, name, null, stream, options);

            // The object should contain our "wrong" bytes.
            ValidateData(bucket, name, new MemoryStream(interceptor.UploadedBytes));
        }
Пример #3
0
        public void UploadObject_InvalidHash_DeleteAndThrow()
        {
            var client      = StorageClient.Create();
            var interceptor = new BreakUploadInterceptor();

            client.Service.HttpClient.MessageHandler.AddExecuteInterceptor(interceptor);
            var stream  = GenerateData(50);
            var name    = IdGenerator.FromGuid();
            var bucket  = _fixture.MultiVersionBucket;
            var options = new UploadObjectOptions {
                UploadValidationMode = UploadValidationMode.DeleteAndThrow
            };

            Assert.Throws <UploadValidationException>(() => client.UploadObject(bucket, name, null, stream, options));
            var notFound = Assert.Throws <GoogleApiException>(() => _fixture.Client.GetObject(bucket, name));

            Assert.Equal(HttpStatusCode.NotFound, notFound.HttpStatusCode);
        }
Пример #4
0
        public async Task UploadObjectAsync_InvalidHash_DeleteAndThrow_DeleteFails()
        {
            var client      = StorageClient.Create();
            var interceptor = new BreakUploadInterceptor();

            client.Service.HttpClient.MessageHandler.AddExecuteInterceptor(interceptor);
            client.Service.HttpClient.MessageHandler.AddExecuteInterceptor(new BreakDeleteInterceptor());
            var stream  = GenerateData(50);
            var name    = IdGenerator.FromGuid();
            var bucket  = _fixture.MultiVersionBucket;
            var options = new UploadObjectOptions {
                UploadValidationMode = UploadValidationMode.DeleteAndThrow
            };
            var ex = await Assert.ThrowsAsync <UploadValidationException>(() => client.UploadObjectAsync(bucket, name, null, stream, options));

            Assert.NotNull(ex.AdditionalFailures);
            // The deletion failed, so the uploaded object still exists.
            ValidateData(bucket, name, new MemoryStream(interceptor.UploadedBytes));
        }