예제 #1
0
        public async Task ThrowsForUnknownStatus()
        {
            var stage = 0;
            var testMessageHandler = new TestMessageHandler(async message =>
            {
                // First PUT request
                if (stage == 0)
                {
                    Assert.Equal(HttpMethod.Put, message.Method);
                    Assert.Equal("https://host/container/blob/path?query=1&comp=appendblock", message.RequestUri.ToString());
                    Assert.Equal(new byte[] { 0, 2, 3 }, await message.Content.ReadAsByteArrayAsync());
                    Assert.Equal(3, message.Content.Headers.ContentLength);

                    AssertDefaultHeaders(message);

                    stage++;
                    return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
                }

                throw new NotImplementedException();
            });

            var blob = new BlobAppendReferenceWrapper(_containerUrl, _blobName, new HttpClient(testMessageHandler));
            await Assert.ThrowsAsync <HttpRequestException>(() => blob.AppendAsync(new ArraySegment <byte>(new byte[] { 0, 2, 3 }), CancellationToken.None));

            Assert.Equal(1, stage);
        }
예제 #2
0
        public async Task CreatesBlobIfNotExist(HttpStatusCode createStatusCode)
        {
            var stage = 0;
            var testMessageHandler = new TestMessageHandler(async message =>
            {
                // First PUT request
                if (stage == 0)
                {
                    Assert.Equal(HttpMethod.Put, message.Method);
                    Assert.Equal("https://host/container/blob/path?query=1&comp=appendblock", message.RequestUri.ToString());
                    Assert.Equal(new byte[] { 0, 2, 3 }, await message.Content.ReadAsByteArrayAsync());
                    Assert.Equal(3, message.Content.Headers.ContentLength);

                    AssertDefaultHeaders(message);

                    stage++;
                    return(new HttpResponseMessage(HttpStatusCode.NotFound));
                }
                // Create request
                if (stage == 1)
                {
                    Assert.Equal(HttpMethod.Put, message.Method);
                    Assert.Equal("https://host/container/blob/path?query=1", message.RequestUri.ToString());
                    Assert.Equal(0, message.Content.Headers.ContentLength);
                    Assert.Equal(new[] { "*" }, message.Headers.GetValues("If-None-Match"));

                    AssertDefaultHeaders(message);

                    stage++;
                    return(new HttpResponseMessage(createStatusCode));
                }
                // First PUT request
                if (stage == 2)
                {
                    Assert.Equal(HttpMethod.Put, message.Method);
                    Assert.Equal("https://host/container/blob/path?query=1&comp=appendblock", message.RequestUri.ToString());
                    Assert.Equal(new byte[] { 0, 2, 3 }, await message.Content.ReadAsByteArrayAsync());
                    Assert.Equal(3, message.Content.Headers.ContentLength);

                    AssertDefaultHeaders(message);

                    stage++;
                    return(new HttpResponseMessage(HttpStatusCode.Created));
                }
                throw new NotImplementedException();
            });

            var blob = new BlobAppendReferenceWrapper(_containerUrl, _blobName, new HttpClient(testMessageHandler));
            await blob.AppendAsync(new ArraySegment <byte>(new byte[] { 0, 2, 3 }), CancellationToken.None);

            Assert.Equal(3, stage);
        }
예제 #3
0
        public async Task SendsDataAsStream()
        {
            var testMessageHandler = new TestMessageHandler(async message =>
            {
                Assert.Equal(HttpMethod.Put, message.Method);
                Assert.Equal("https://host/container/blob/path?query=1&comp=appendblock", message.RequestUri.ToString());
                Assert.Equal(new byte[] { 0, 2, 3 }, await message.Content.ReadAsByteArrayAsync());
                AssertDefaultHeaders(message);

                return(new HttpResponseMessage(HttpStatusCode.OK));
            });

            var blob = new BlobAppendReferenceWrapper(_containerUrl, _blobName, new HttpClient(testMessageHandler));
            await blob.AppendAsync(new ArraySegment <byte>(new byte[] { 0, 2, 3 }), CancellationToken.None);
        }