using Autofac; using Core.Logging; using Microsoft.ApplicationInsights; using Microsoft.ApplicationInsights.DataContracts; namespace Tests.Logging { [TestClass] public class SeqLoggerTests : TestFixture { private SeqLogger _logger; private SeqHttpClient _httpClient; private readonly string _testId; public SeqLoggerTests() { _testId = Guid.NewGuid().ToString(); var config = new SeqConfiguration("http://localhost:5341", null, "MSTEST"); _httpClient = new SeqHttpClient(config); _logger = new SeqLogger(_httpClient, Environment.MachineName, config); } [TestMethod] public async Task LogTraceTelemetry_SendsCorrectDataWithErrorLevel() { // Arrange var traceTelemetry = new TraceTelemetry { Message = "Test trace error message", SeverityLevel = SeverityLevel.Error, Timestamp = DateTimeOffset.UtcNow }; traceTelemetry.Properties.Add("TestId", _testId); // Act await _logger.LogAsync(traceTelemetry); } [TestMethod] public async Task LogTraceTelemetry_SendsCorrectDataWithWarningLevel() { // Arrange var traceTelemetry = new TraceTelemetry { Message = "Test trace warning message", SeverityLevel = SeverityLevel.Warning, Timestamp = DateTimeOffset.UtcNow }; traceTelemetry.Properties.Add("TestId", _testId); // Act await _logger.LogAsync(traceTelemetry); } [TestMethod] public async Task LogEventTelemetry_SendsCorrectData() { // Arrange var eventTelemetry = new EventTelemetry { Name = "Test Event", Timestamp = DateTimeOffset.UtcNow }; eventTelemetry.Properties.Add("TestId", _testId); eventTelemetry.Metrics.Add("TestMetric", 42.0); // Act await _logger.LogAsync(eventTelemetry); } [TestMethod] public async Task LogExceptionTelemetry_SendsCorrectData() { try { int t = 0; var result = 10 / t; } catch (Exception e) { // Arrange var exceptionTelemetry = new ExceptionTelemetry(e) { Timestamp = DateTimeOffset.UtcNow }; exceptionTelemetry.Properties.Add("TestId", _testId); // Act await _logger.LogAsync(exceptionTelemetry); } } [TestMethod] public async Task LogDependencyTelemetry_SendsCorrectData() { // Arrange var dependencyTelemetry = new DependencyTelemetry { Name = "SQL Query", Type = "SQL", Target = "TestDB", Success = true, Duration = TimeSpan.FromMilliseconds(100), Timestamp = DateTimeOffset.UtcNow }; dependencyTelemetry.Properties.Add("TestId", _testId); // Act await _logger.LogAsync(dependencyTelemetry); } [TestMethod] public async Task LogRequestTelemetry_SendsCorrectData() { var telemetryClient = Container.Resolve(); var operationId = "op123"; using (Microsoft.ApplicationInsights.Extensibility.IOperationHolder operation = telemetryClient.StartOperation("GET /api/parent")) { using (var child = telemetryClient.StartOperation("api/test")) // Arrange { //child.Telemetry.Name = "/api/test"; child.Telemetry.Success = true; child.Telemetry.ResponseCode = "200"; child.Telemetry.Duration = TimeSpan.FromMilliseconds(50); child.Telemetry.Url = new Uri("http://test.com/api/test"); child.Telemetry.Timestamp = DateTimeOffset.UtcNow; child.Telemetry.Properties.Add("httpMethod", HttpMethod.Get.ToString()); child.Telemetry.Properties.Add("TestId", _testId); await _logger.LogAsync(child); }; } // Act } } }