using Core.Telemetry; using Microsoft.ApplicationInsights.Channel; using Microsoft.ApplicationInsights.DataContracts; namespace Tests.TelemetryLogging { [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); // Du kan nu tjekke Seq med følgende query: // TestId = 'guid-værdi-her' } [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() { // Arrange var requestTelemetry = new RequestTelemetry { Name = "GET /api/test", Success = true, ResponseCode = "200", Duration = TimeSpan.FromMilliseconds(50), Url = new Uri("http://test.com/api/test"), Timestamp = DateTimeOffset.UtcNow }; requestTelemetry.Properties.Add("TestId", _testId); // Act await _logger.LogAsync(requestTelemetry); } } }