public async Task HttpTrigger_CustomRoute_Post_ReturnsExpectedResponse()
        {
            TestHelpers.ClearFunctionLogs("HttpTrigger-CustomRoute-Post");

            string  id          = Guid.NewGuid().ToString();
            string  functionKey = "5u3pyihh8ldfelipm3qdabw69iah0oghgzw8n959";
            string  uri         = $"api/node/products/housewares/{id}?code={functionKey}";
            JObject product     = new JObject
            {
                { "id", id },
                { "name", "Waffle Maker Pro" },
                { "category", "Housewares" }
            };
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, uri)
            {
                Content = new StringContent(product.ToString())
            };

            HttpResponseMessage response = await this._fixture.HttpClient.SendAsync(request);

            Assert.Equal(HttpStatusCode.Created, response.StatusCode);

            // wait for function to execute and produce its result blob
            CloudBlobContainer outputContainer = _fixture.BlobClient.GetContainerReference("samples-output");
            string             path            = $"housewares/{id}";
            CloudBlockBlob     outputBlob      = outputContainer.GetBlockBlobReference(path);
            string             result          = await TestHelpers.WaitForBlobAndGetStringAsync(outputBlob);

            JObject resultProduct = JObject.Parse(TestHelpers.RemoveByteOrderMark(result));

            Assert.Equal(id, (string)resultProduct["id"]);
            Assert.Equal((string)product["name"], (string)resultProduct["name"]);
        }
Exemple #2
0
        public async Task MultipleOutputs()
        {
            string id1 = Guid.NewGuid().ToString();
            string id2 = Guid.NewGuid().ToString();
            string id3 = Guid.NewGuid().ToString();

            JObject input = new JObject
            {
                { "Id1", id1 },
                { "Id2", id2 },
                { "Id3", id3 }
            };
            Dictionary <string, object> arguments = new Dictionary <string, object>
            {
                { "input", input.ToString() }
            };
            await Fixture.Host.CallAsync("MultipleOutputs", arguments);

            // verify all 3 output blobs were written
            var blob = Fixture.TestOutputContainer.GetBlockBlobReference(id1);
            await TestHelpers.WaitForBlobAsync(blob);

            string blobContent = blob.DownloadText();

            Assert.Equal("Test Blob 1", TestHelpers.RemoveByteOrderMark(blobContent));

            blob = Fixture.TestOutputContainer.GetBlockBlobReference(id2);
            await TestHelpers.WaitForBlobAsync(blob);

            blobContent = blob.DownloadText();
            Assert.Equal("Test Blob 2", TestHelpers.RemoveByteOrderMark(blobContent));

            blob = Fixture.TestOutputContainer.GetBlockBlobReference(id3);
            await TestHelpers.WaitForBlobAsync(blob);

            blobContent = blob.DownloadText();
            Assert.Equal("Test Blob 3", TestHelpers.RemoveByteOrderMark(blobContent));
        }
        public async Task MultipleInputs()
        {
            string id = Guid.NewGuid().ToString();

            JObject input = new JObject
            {
                { "id", id },
                { "rk1", "001" },
                { "rk2", "002" }
            };
            Dictionary <string, object> arguments = new Dictionary <string, object>
            {
                { "input", input.ToString() }
            };
            await Fixture.Host.CallAsync("MultipleInputs", arguments);

            // verify the correct output blob was written
            var blob = Fixture.TestOutputContainer.GetBlockBlobReference(id);
            await TestHelpers.WaitForBlobAsync(blob);

            string blobContent = blob.DownloadText();

            Assert.Equal("Test Entity 1, Test Entity 2", TestHelpers.RemoveByteOrderMark(blobContent.Trim()));
        }
        public async Task ManualTrigger_CSharp_Invoke_Succeeds()
        {
            CloudBlobContainer outputContainer = _fixture.BlobClient.GetContainerReference("samples-output");
            string             inId            = Guid.NewGuid().ToString();
            string             outId           = Guid.NewGuid().ToString();
            CloudBlockBlob     statusBlob      = outputContainer.GetBlockBlobReference(inId);

            statusBlob.UploadText("Hello C#!");

            string             uri     = "admin/functions/manualtrigger-csharp";
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, uri);

            request.Headers.Add("x-functions-key", "t8laajal0a1ajkgzoqlfv5gxr4ebhqozebw4qzdy");
            JObject input = new JObject()
            {
                { "input", new JObject()
                  {
                      { "InId", inId },
                      { "OutId", outId }
                  }.ToString() }
            };
            string json = input.ToString();

            request.Content = new StringContent(json);
            request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            HttpResponseMessage response = await this._fixture.HttpClient.SendAsync(request);

            Assert.Equal(HttpStatusCode.Accepted, response.StatusCode);

            // wait for completion
            CloudBlockBlob outputBlob = outputContainer.GetBlockBlobReference(outId);
            string         result     = await TestHelpers.WaitForBlobAndGetStringAsync(outputBlob);

            Assert.Equal("Hello C#!", TestHelpers.RemoveByteOrderMark(result));
        }