Skip to content

Commit 8a51cc4

Browse files
author
Matt Mason
committed
fix header only / status only requests for express api
1 parent 940fb13 commit 8a51cc4

File tree

3 files changed

+45
-13
lines changed

3 files changed

+45
-13
lines changed

src/WebJobs.Script/Content/Script/http/response.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
module.exports = (context) => {
55
var res = {
66
headers: {},
7+
body: undefined,
78

89
end: (body) => {
910
if (body !== undefined) {

test/WebJobs.Script.Tests/NodeEndToEndTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,27 @@ public async Task HttpTriggerExpressApi_Get()
476476
Assert.Equal("Test Request Header", reqHeaders["test-header"]);
477477
}
478478

479+
[Fact]
480+
public async Task HttpTriggerExpressApi_SendStatus()
481+
{
482+
HttpRequestMessage request = new HttpRequestMessage
483+
{
484+
RequestUri = new Uri(string.Format("http://localhost/api/httptrigger")),
485+
Method = HttpMethod.Get
486+
};
487+
request.SetConfiguration(new HttpConfiguration());
488+
request.Headers.Add("scenario", "sendStatus");
489+
490+
Dictionary<string, object> arguments = new Dictionary<string, object>
491+
{
492+
{ "request", request }
493+
};
494+
await Fixture.Host.CallAsync("HttpTriggerExpressApi", arguments);
495+
496+
HttpResponseMessage response = (HttpResponseMessage)request.Properties[ScriptConstants.AzureFunctionsHttpResponseKey];
497+
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
498+
}
499+
479500
[Fact]
480501
public async Task HttpTriggerPromise_TestBinding()
481502
{

test/WebJobs.Script.Tests/TestScripts/Node/HttpTriggerExpressApi/index.js

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,27 @@
33
module.exports = function (context, req) {
44
context.log('Node.js HttpTrigger function invoked.');
55

6-
context.res.status(200)
7-
.set('test-req-header', context.req.get('test-header'))
8-
.set('test-header', 'Test Response Header')
9-
.type('application/json; charset=utf-8')
10-
.send({
11-
reqBodyType: typeof req.body,
12-
reqBodyIsArray: util.isArray(req.body),
13-
reqBody: req.body,
14-
reqRawBodyType: typeof req.rawBody,
15-
reqRawBody: req.rawBody,
16-
reqHeaders: req.headers,
17-
bindingData: context.bindingData
18-
});
6+
switch (req.headers.scenario) {
7+
case 'sendStatus':
8+
context.res.sendStatus(400);
9+
break;
10+
11+
default:
12+
context.res.status(200)
13+
.set('test-req-header', context.req.get('test-header'))
14+
.set('test-header', 'Test Response Header')
15+
.type('application/json; charset=utf-8')
16+
.send({
17+
reqBodyType: typeof req.body,
18+
reqBodyIsArray: util.isArray(req.body),
19+
reqBody: req.body,
20+
reqRawBodyType: typeof req.rawBody,
21+
reqRawBody: req.rawBody,
22+
reqHeaders: req.headers,
23+
bindingData: context.bindingData
24+
});
25+
break;
26+
}
27+
28+
1929
}

0 commit comments

Comments
 (0)