Skip to content

Commit a2d2308

Browse files
committed
Preventing null binding data values from flowing into language workers
1 parent 4a33862 commit a2d2308

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

sample/Node/HttpTrigger-CustomRoute-Get/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ var catalog = [
1818
module.exports = function (context, req) {
1919
context.log('Node.js HTTP trigger function processed a request. Name=%s', req.query.name);
2020

21-
context.log('category: %s id: %s', context.bindingData.category, context.bindingData.id);
21+
context.log('category: %s id: %s', context.bindingData.category || '<empty>', context.bindingData.id || '<empty>');
2222

2323
var results = [];
2424
catalog.forEach(function (product) {

src/WebJobs.Script/Rpc/LanguageWorkerChannel.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,10 @@ public void Invoke(ScriptInvocationContext context)
405405
};
406406
foreach (var pair in context.BindingData)
407407
{
408-
invocationRequest.TriggerMetadata.Add(pair.Key, pair.Value.ToRpc());
408+
if (pair.Value != null)
409+
{
410+
invocationRequest.TriggerMetadata.Add(pair.Key, pair.Value.ToRpc());
411+
}
409412
}
410413
foreach (var input in context.Inputs)
411414
{

test/WebJobs.Script.Tests.Integration/WebHostEndToEnd/SamplesEndToEndTests_Node.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,9 @@ public async Task HttpTrigger_CustomRoute_Get_ReturnsExpectedResponse()
326326
json = await response.Content.ReadAsStringAsync();
327327
products = JArray.Parse(json);
328328
Assert.Equal(2, products.Count);
329+
var logs = _fixture.Host.GetLogMessages(LogCategories.CreateFunctionUserCategory("HttpTrigger-CustomRoute-Get"));
330+
var log = logs.Single(p => p.FormattedMessage.Contains($"category: electronics id: <empty>"));
331+
_fixture.Host.ClearLogMessages();
329332

330333
// test optional route param (category)
331334
uri = $"api/node/products?code={functionKey}";
@@ -336,6 +339,8 @@ public async Task HttpTrigger_CustomRoute_Get_ReturnsExpectedResponse()
336339
json = await response.Content.ReadAsStringAsync();
337340
products = JArray.Parse(json);
338341
Assert.Equal(3, products.Count);
342+
logs = _fixture.Host.GetLogMessages(LogCategories.CreateFunctionUserCategory("HttpTrigger-CustomRoute-Get"));
343+
log = logs.Single(p => p.FormattedMessage.Contains($"category: <empty> id: <empty>"));
339344

340345
// test a constraint violation (invalid id)
341346
uri = $"api/node/products/electronics/notaguid?code={functionKey}";
@@ -350,11 +355,6 @@ public async Task HttpTrigger_CustomRoute_Get_ReturnsExpectedResponse()
350355
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain"));
351356
response = await _fixture.Host.HttpClient.SendAsync(request);
352357
Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
353-
354-
// verify route parameters were part of binding data
355-
var logs = _fixture.Host.GetLogMessages(LogCategories.CreateFunctionUserCategory("HttpTrigger-CustomRoute-Get"));
356-
var log = logs.Single(p => p.FormattedMessage.Contains($"category: electronics id: {id}"));
357-
Assert.NotNull(log);
358358
}
359359

360360
[Fact(Skip = "http://github.com/Azure/azure-functions-host/issues/2812")]

0 commit comments

Comments
 (0)