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"]); }
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)); }