public async Task BindAsync_Poco_FromRouteParameters() { ParameterInfo parameterInfo = GetType().GetMethod("TestPocoFunction").GetParameters()[0]; HttpTriggerAttributeBindingProvider.HttpTriggerBinding binding = new HttpTriggerAttributeBindingProvider.HttpTriggerBinding(new HttpTriggerAttribute(), parameterInfo, true); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://functions/myfunc"); Dictionary <string, object> routeData = new Dictionary <string, object> { { "Name", "Mathew Charles" }, { "Location", "Seattle" } }; request.Properties.Add(ScriptConstants.AzureFunctionsHttpRouteDataKey, routeData); FunctionBindingContext functionContext = new FunctionBindingContext(Guid.NewGuid(), CancellationToken.None, new TestTraceWriter(TraceLevel.Verbose)); ValueBindingContext context = new ValueBindingContext(functionContext, CancellationToken.None); ITriggerData triggerData = await binding.BindAsync(request, context); Assert.Equal(2, triggerData.BindingData.Count); Assert.Equal("Mathew Charles", triggerData.BindingData["Name"]); Assert.Equal("Seattle", triggerData.BindingData["Location"]); TestPoco testPoco = (TestPoco)triggerData.ValueProvider.GetValue(); Assert.Equal("Mathew Charles", testPoco.Name); Assert.Equal("Seattle", testPoco.Location); }
public async Task BindAsync_Poco_FromRequestBody() { ParameterInfo parameterInfo = GetType().GetMethod("TestPocoFunction").GetParameters()[0]; HttpTriggerAttributeBindingProvider.HttpTriggerBinding binding = new HttpTriggerAttributeBindingProvider.HttpTriggerBinding(new HttpTriggerAttribute(), parameterInfo, true); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://functions/myfunc?code=abc123"); JObject requestBody = new JObject { { "Name", "Mathew Charles" }, { "Location", "Seattle" } }; request.Content = new StringContent(requestBody.ToString()); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); FunctionBindingContext functionContext = new FunctionBindingContext(Guid.NewGuid(), CancellationToken.None, new TestTraceWriter(TraceLevel.Verbose)); ValueBindingContext context = new ValueBindingContext(functionContext, CancellationToken.None); ITriggerData triggerData = await binding.BindAsync(request, context); Assert.Equal(2, triggerData.BindingData.Count); Assert.Equal("Mathew Charles", triggerData.BindingData["Name"]); Assert.Equal("Seattle", triggerData.BindingData["Location"]); TestPoco testPoco = (TestPoco)triggerData.ValueProvider.GetValue(); Assert.Equal("Mathew Charles", testPoco.Name); Assert.Equal("Seattle", testPoco.Location); }
public async Task BindAsync_Poco_WebHookData() { ParameterInfo parameterInfo = GetType().GetMethod("TestPocoFunction").GetParameters()[0]; HttpTriggerAttributeBindingProvider.HttpTriggerBinding binding = new HttpTriggerAttributeBindingProvider.HttpTriggerBinding(new HttpTriggerAttribute(), parameterInfo, true); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://functions/myfunc?code=abc123"); TestPoco testPoco = new TestPoco { Name = "Mathew Charles", Location = "Seattle" }; request.Properties.Add(ScriptConstants.AzureFunctionsWebHookDataKey, testPoco); FunctionBindingContext functionContext = new FunctionBindingContext(Guid.NewGuid(), CancellationToken.None, new TestTraceWriter(TraceLevel.Verbose)); ValueBindingContext context = new ValueBindingContext(functionContext, CancellationToken.None); ITriggerData triggerData = await binding.BindAsync(request, context); Assert.Equal(2, triggerData.BindingData.Count); Assert.Equal("Mathew Charles", triggerData.BindingData["Name"]); Assert.Equal("Seattle", triggerData.BindingData["Location"]); TestPoco result = (TestPoco)triggerData.ValueProvider.GetValue(); Assert.Same(testPoco, result); }
public async Task BindAsync_Poco_FromQueryParameters() { ParameterInfo parameterInfo = GetType().GetMethod("TestPocoFunction").GetParameters()[0]; HttpTriggerAttributeBindingProvider.HttpTriggerBinding binding = new HttpTriggerAttributeBindingProvider.HttpTriggerBinding(new HttpTriggerAttribute(), parameterInfo, true); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://functions/myfunc?code=abc123&Name=Mathew%20Charles&Location=Seattle"); FunctionBindingContext functionContext = new FunctionBindingContext(Guid.NewGuid(), CancellationToken.None, new TestTraceWriter(TraceLevel.Verbose)); ValueBindingContext context = new ValueBindingContext(functionContext, CancellationToken.None); ITriggerData triggerData = await binding.BindAsync(request, context); Assert.Equal(2, triggerData.BindingData.Count); Assert.Equal("Mathew Charles", triggerData.BindingData["Name"]); Assert.Equal("Seattle", triggerData.BindingData["Location"]); TestPoco testPoco = (TestPoco)triggerData.ValueProvider.GetValue(); Assert.Equal("Mathew Charles", testPoco.Name); Assert.Equal("Seattle", testPoco.Location); }
public void TestPocoFunction(TestPoco poco) { }
public void TestPocoFunction(TestPoco poco) { }
public async Task BindAsync_Poco_WebHookData() { ParameterInfo parameterInfo = GetType().GetMethod("TestPocoFunction").GetParameters()[0]; HttpTriggerAttributeBindingProvider.HttpTriggerBinding binding = new HttpTriggerAttributeBindingProvider.HttpTriggerBinding(new HttpTriggerAttribute(), parameterInfo, true); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://functions/myfunc?code=abc123"); TestPoco testPoco = new TestPoco { Name = "Mathew Charles", Location = "Seattle" }; request.Properties.Add(ScriptConstants.AzureFunctionsWebHookDataKey, testPoco); FunctionBindingContext functionContext = new FunctionBindingContext(Guid.NewGuid(), CancellationToken.None, new TestTraceWriter(TraceLevel.Verbose)); ValueBindingContext context = new ValueBindingContext(functionContext, CancellationToken.None); ITriggerData triggerData = await binding.BindAsync(request, context); Assert.Equal(2, triggerData.BindingData.Count); Assert.Equal("Mathew Charles", triggerData.BindingData["Name"]); Assert.Equal("Seattle", triggerData.BindingData["Location"]); TestPoco result = (TestPoco)triggerData.ValueProvider.GetValue(); Assert.Same(testPoco, result); }