public async Task HostLog_AdminLevel_Succeeds() { TestHelpers.ClearHostLogs(); var request = new HttpRequestMessage(HttpMethod.Post, "admin/host/log"); request.Headers.Add(AuthenticationLevelHandler.FunctionsKeyHeaderName, await _fixture.Host.GetMasterKeyAsync()); var logs = new HostLogEntry[] { new HostLogEntry { Level = System.Diagnostics.TraceLevel.Verbose, Source = "ScaleController", Message = string.Format("Test Verbose log {0}", Guid.NewGuid().ToString()) }, new HostLogEntry { Level = System.Diagnostics.TraceLevel.Info, Source = "ScaleController", Message = string.Format("Test Info log {0}", Guid.NewGuid().ToString()) }, new HostLogEntry { Level = System.Diagnostics.TraceLevel.Warning, Source = "ScaleController", Message = string.Format("Test Warning log {0}", Guid.NewGuid().ToString()) }, new HostLogEntry { Level = System.Diagnostics.TraceLevel.Error, Source = "ScaleController", FunctionName = "TestFunction", Message = string.Format("Test Error log {0}", Guid.NewGuid().ToString()) } }; var serializer = new JsonSerializer(); var writer = new StringWriter(); serializer.Serialize(writer, logs); var json = writer.ToString(); request.Content = new StringContent(json); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = await _fixture.Host.HttpClient.SendAsync(request); Assert.Equal(HttpStatusCode.OK, response.StatusCode); await Task.Delay(1000); var hostLogs = _fixture.Host.GetLogMessages(); foreach (var expectedLog in logs.Select(p => p.Message)) { Assert.Equal(1, hostLogs.Count(p => p.FormattedMessage != null && p.FormattedMessage.Contains(expectedLog))); } }
public async Task HostLog_SingletonLog_ReturnsBadRequest() { var request = new HttpRequestMessage(HttpMethod.Post, "admin/host/log"); request.Headers.Add(AuthenticationLevelHandler.FunctionsKeyHeaderName, await _fixture.Host.GetMasterKeyAsync()); var log = new HostLogEntry { Level = System.Diagnostics.TraceLevel.Verbose, Source = "ScaleController", Message = string.Format("Test Verbose log {0}", Guid.NewGuid().ToString()) }; request.Content = new StringContent(log.ToString()); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var response = await _fixture.Host.HttpClient.SendAsync(request); Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode); var error = await response.Content.ReadAsStringAsync(); Assert.Contains(error, "An array of log entry objects is expected."); }