diff --git a/test/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector.UnitTests/EventLogXmlWriterTests.cs b/test/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector.UnitTests/EventLogXmlWriterTests.cs index d8cd1f4242..4c1f6e622b 100644 --- a/test/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector.UnitTests/EventLogXmlWriterTests.cs +++ b/test/DataCollectors/Microsoft.TestPlatform.Extensions.EventLogCollector.UnitTests/EventLogXmlWriterTests.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Diagnostics; +using System.Xml.Linq; using Microsoft.VisualStudio.TestPlatform.Utilities.Helpers.Interfaces; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -16,38 +17,35 @@ public class EventLogXmlWriterTests { private const string FileName = "Event Log.xml"; - private readonly EventLog _eventLog; - private readonly EventLogEntry _eventLogEntry; - private readonly List _eventLogEntries; - private readonly Mock _mockFileHelper; - - public EventLogXmlWriterTests() - { - _eventLog = new EventLog("Application"); - var count = _eventLog.Entries.Count; - _eventLogEntry = _eventLog.Entries[count - 1]; - _eventLogEntries = new List(); - _mockFileHelper = new Mock(); - } - [TestMethod] public void WriteEventLogEntriesToXmlFileShouldWriteToXmlFile() { + var mockFileHelper = new Mock(); + var eventLogEntries = new List(); EventLogXmlWriter.WriteEventLogEntriesToXmlFile( FileName, - _eventLogEntries, - _mockFileHelper.Object); + eventLogEntries, + mockFileHelper.Object); - _mockFileHelper.Verify(x => x.WriteAllTextToFile(FileName, It.IsAny()), Times.Once); + mockFileHelper.Verify(x => x.WriteAllTextToFile(FileName, It.IsAny()), Times.Once); } [TestMethod] public void WriteEventLogEntriesToXmlFileShouldWriteLogEntryIfPresent() { - _eventLogEntries.Add(_eventLogEntry); + var eventLog = new EventLog("Application"); + var eventLogEntry = eventLog.Entries[eventLog.Entries.Count - 1]; + var eventLogEntries = new List { eventLogEntry }; + + var mockFileHelper = new Mock(); + EventLogXmlWriter.WriteEventLogEntriesToXmlFile(FileName, eventLogEntries, mockFileHelper.Object); - EventLogXmlWriter.WriteEventLogEntriesToXmlFile(FileName, _eventLogEntries, _mockFileHelper.Object); + // Serialize the message in case it contains any special character such as <, >, &, which the XML writer would escape + // because otherwise the raw message and the message used to call WriteAllTextToFile won't match. E.g. + // api-version=2020-07-01&format=json in raw message, becomes + // api-version=2020-07-01&format=json in the xml file. + var serializedMessage = new XElement("t", eventLogEntry.Message).LastNode.ToString(); - _mockFileHelper.Verify(x => x.WriteAllTextToFile(FileName, It.Is(str => str.Contains(_eventLogEntry.Message)))); + mockFileHelper.Verify(x => x.WriteAllTextToFile(FileName, It.Is(str => str.Contains(serializedMessage)))); } }