Skip to content

Commit 4d981ef

Browse files
committed
Adding error handling for host/log endpoint
1 parent f16d351 commit 4d981ef

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/WebJobs.Script.WebHost/Controllers/AdminController.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,11 @@ public IHttpActionResult Ping()
152152
[AllowAnonymous]
153153
public IHttpActionResult Log(IEnumerable<HostLogEntry> logEntries)
154154
{
155+
if (logEntries == null)
156+
{
157+
return BadRequest("An array of log entry objects is expected.");
158+
}
159+
155160
var authorizationLevel = Request.GetAuthorizationLevel();
156161
if (Request.IsAuthDisabled() ||
157162
authorizationLevel == AuthorizationLevel.Admin ||

test/WebJobs.Script.Tests.Integration/SamplesEndToEndTests.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,10 +1000,14 @@ public async Task HostLog_Anonymous_Fails()
10001000
{
10011001
var request = new HttpRequestMessage(HttpMethod.Post, "admin/host/log");
10021002
request.Headers.Add(ScriptConstants.AntaresLogIdHeaderName, "xyz");
1003+
request.Content = new StringContent("[]");
1004+
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
10031005
var response = await this._fixture.HttpClient.SendAsync(request);
10041006
Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
10051007

10061008
request = new HttpRequestMessage(HttpMethod.Post, "admin/host/log");
1009+
request.Content = new StringContent("[]");
1010+
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
10071011
response = await this._fixture.HttpClient.SendAsync(request);
10081012
Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
10091013
}
@@ -1060,6 +1064,26 @@ public async Task HostLog_AdminLevel_Succeeds()
10601064
}
10611065
}
10621066

1067+
[Fact]
1068+
public async Task HostLog_SingletonLog_ReturnsBadRequest()
1069+
{
1070+
var request = new HttpRequestMessage(HttpMethod.Post, "admin/host/log");
1071+
request.Headers.Add(AuthorizationLevelAttribute.FunctionsKeyHeaderName, MasterKey);
1072+
var log = new HostLogEntry
1073+
{
1074+
Level = TraceLevel.Verbose,
1075+
Source = "ScaleController",
1076+
Message = string.Format("Test Verbose log {0}", Guid.NewGuid().ToString())
1077+
};
1078+
request.Content = new StringContent(log.ToString());
1079+
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
1080+
1081+
var response = await this._fixture.HttpClient.SendAsync(request);
1082+
Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
1083+
var error = await response.Content.ReadAsAsync<HttpError>();
1084+
Assert.Equal("An array of log entry objects is expected.", error.Message);
1085+
}
1086+
10631087
[Fact]
10641088
public async Task HostStatus_AdminLevel_Succeeds()
10651089
{

0 commit comments

Comments
 (0)