コード例 #1
0
        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"]);
                    }
        }
コード例 #2
0
        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"]);
                    }
        }