in LogicAppsSampleTestFramework/TestCases/TestCases.cs [60:113]
public void HttpAction()
{
var localSettings = $@"
{{
""IsEncrypted"": false,
""Values"": {{
""AzureWebJobsStorage"": ""UseDevelopmentStorage=true"",
""FUNCTIONS_WORKER_RUNTIME"": ""node"",
""httpuri"": ""{TestEnvironment.FlowV2MockTestHostUri}""
}}
}}
";
var workflowName = "httpactionworkflow";
var workflowDefinition = File.ReadAllText($"TestFiles\\{workflowName}.json");
using (new WorkflowTestHost(new WorkflowTestInput[] { new WorkflowTestInput(workflowName, workflowDefinition) }, localSettings: localSettings))
using (var host = new MockHttpHost())
using (var client = new HttpClient())
{
// Configure mocked response.
host.RequestHandler = request =>
{
var mockedResponse = new HttpResponseMessage(statusCode: HttpStatusCode.OK)
{
RequestMessage = request
};
mockedResponse.Content = new StringContent("Mocked Http Response");
return mockedResponse;
};
// Get workflow callback URL.
var response = client.PostAsync(TestEnvironment.GetTriggerCallbackRequestUri(flowName: workflowName, triggerName: "manual"), null).Result;
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
// Run the workflow.
response = client.PostAsync(response.Content.ReadAsAsync<CallbackUrlDefinition>().Result.Value, null).Result;
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
// Check workflow response.
Assert.AreEqual("Mocked Http Response", response.Content.ReadAsStringAsync().Result);
// Check workflow run status.
response = client.GetAsync(TestEnvironment.GetRunsRequestUriWithManagementHost(flowName: workflowName)).Result;
var responseContent = response.Content.ReadAsAsync<JToken>().Result;
Assert.AreEqual("Succeeded", responseContent["value"][0]["properties"]["status"].ToString());
var runId = responseContent["value"].FirstOrDefault()["name"].ToString();
// Check action result.
response = client.GetAsync(TestEnvironment.GetRunActionsRequestUri(flowName: workflowName, runName: runId)).Result;
responseContent = response.Content.ReadAsAsync<JToken>().Result;
Assert.AreEqual("Succeeded", responseContent["value"].Where(actionResult => actionResult["name"].ToString().Equals("HTTP")).FirstOrDefault()["properties"]["status"]);
}
}