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"]); } }
public void ApiConnectionAction() { var localSettings = $@" {{ ""IsEncrypted"": false, ""Values"": {{ ""AzureWebJobsStorage"": ""UseDevelopmentStorage=true"", ""FUNCTIONS_WORKER_RUNTIME"": ""node"", ""arm-connectionRuntimeUrl"": ""{TestEnvironment.FlowV2MockTestHostUri}/apim/arm/foobar"", ""arm-connectionKey"": ""foobar"" }} }} "; var mockedResourceGroups = @" { ""value"": [ { ""id"": ""/subscriptions/someSubscription/resourceGroups/someResourceGroup1"", ""name"": ""someResourceGroup1"", ""location"": ""eastus"", ""properties"": { ""provisioningState"": ""Succeeded"" } }, { ""id"": ""/subscriptions/someSubscription/resourceGroups/someResourceGroup2"", ""name"": ""someResourceGroup2"", ""location"": ""westus"", ""properties"": { ""provisioningState"": ""Succeeded"" } } ] }"; var workflowName = "apiconnectionactionworkflow"; var workflowDefinition = File.ReadAllText($"TestFiles\\{workflowName}.json"); var connections = File.ReadAllText($"TestFiles\\connections.json"); using (new WorkflowTestHost(new WorkflowTestInput[] { new WorkflowTestInput(workflowName, workflowDefinition) }, localSettings: localSettings, connectionDetails: connections)) 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(mockedResourceGroups); 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(mockedResourceGroups, 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("List_resource_groups")).FirstOrDefault()["properties"]["status"]); } }