Ejemplo n.º 1
0
        public async Task ReadFileAsync_ReadsFile_WhenBlobExists()
        {
            var testData     = Encoding.ASCII.GetBytes("{\"id\":325}");
            var azureBlobApi = _simulation
                               .AddApi()
                               .AddHandler("HEAD /devaccount1/books", new ApiResponse(500)) // retry policy
                               .AddHandler("HEAD /devaccount1/books", ApiResponse.Ok())
                                                                                            // see https://docs.microsoft.com/en-us/rest/api/storageservices/get-blob
                               .AddHandler("GET /devaccount1/books/sample.json", _ => {
                var headers = Headers.FromString("x-ms-blob-type: BlockBlob");
                var body    = Body.FromStream(new MemoryStream(testData));
                return(ApiResponse.Ok(headers, body));
            })
                               .Build();
            await azureBlobApi.StartAsync();

            var testSettings = new AzureBlobSettings
            {
                ConnectionString = $"DefaultEndpointsProtocol=http;AccountName=devaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:{azureBlobApi.Port}/devaccount1;",
                ContainerName    = "books"
            };
            var blobReader = new AzureBlobReader(testSettings);

            var blobFile = await blobReader.ReadFileAsync("sample.json");

            var apiCalls = azureBlobApi.ReceivedApiCalls.ToList();

            Assert.Multiple(() => {
                Assert.AreEqual(testData, blobFile.ToArray());
                StringAssert.StartsWith("HEAD /devaccount1/books", apiCalls[0].Action);
                Assert.AreEqual(500, apiCalls[0].Response.StatusCode);
                StringAssert.StartsWith("HEAD /devaccount1/books", apiCalls[1].Action);
                Assert.AreEqual(200, apiCalls[1].Response.StatusCode);
            });
        }
Ejemplo n.º 2
0
        public async Task ReadFileAsync_Throws_WhenBlobContainerDoesNotExist()
        {
            var azureBlobApi = _simulation
                               .AddApi()
                               .AddHandler("HEAD /devaccount1/magazines", ApiResponse.NotFound())
                               .Build();
            await azureBlobApi.StartAsync();

            var testSettings = new AzureBlobSettings
            {
                ConnectionString = $"DefaultEndpointsProtocol=http;AccountName=devaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint=http://127.0.0.1:{azureBlobApi.Port}/devaccount1;",
                ContainerName    = "magazines"
            };
            var blobReader = new AzureBlobReader(testSettings);

            var exception = Assert.ThrowsAsync <InvalidOperationException>(async() => await blobReader.ReadFileAsync("abc.json"));

            Assert.AreEqual("Container 'magazines' does not exist.", exception.Message);
        }