using Microsoft.VisualStudio.TestTools.UnitTesting; using SyncEngine.Access; namespace SyncEngine.Tests { [TestClass] public class AccessApplicationSysReaderTests { [TestMethod] public void BuildShellArguments_QuotesStubAndUser() { var args = AccessApplicationSysReader.BuildShellArguments( @"C:\Temp\stub.mdb", "Admin", null); Assert.AreEqual("\"C:\\Temp\\stub.mdb\" /user Admin", args); } [TestMethod] public void BuildShellArguments_AppendsWorkgroupPasswordOnly() { var args = AccessApplicationSysReader.BuildShellArguments( @"C:\Temp\stub.mdb", "Admin", "wgsecret"); Assert.AreEqual("\"C:\\Temp\\stub.mdb\" /user Admin /pwd wgsecret", args); } [TestMethod] public void BuildShellArguments_QuotesWorkgroupPasswordWithSpaces() { var args = AccessApplicationSysReader.BuildShellArguments( @"C:\Temp\stub.mdb", "Admin", "sec ret"); Assert.AreEqual("\"C:\\Temp\\stub.mdb\" /user Admin /pwd \"sec ret\"", args); } [TestMethod] public void ResolveShellUser_DefaultsToAdmin() { Assert.AreEqual("Admin", AccessApplicationSysReader.ResolveShellUser(null)); Assert.AreEqual("Admin", AccessApplicationSysReader.ResolveShellUser("")); Assert.AreEqual("Admin", AccessApplicationSysReader.ResolveShellUser("current")); } [TestMethod] public void ResolveShellUser_UsesConfiguredUser() { Assert.AreEqual("SyncUser", AccessApplicationSysReader.ResolveShellUser("SyncUser")); } [TestMethod] public void MaskPasswordArgs_RedactsPassword() { var masked = AccessApplicationSysReader.MaskPasswordArgs( "\"C:\\Temp\\stub.mdb\" /user Admin /pwd secret", "secret"); Assert.AreEqual("\"C:\\Temp\\stub.mdb\" /user Admin /pwd ***", masked); } [TestMethod] public void TryExtractExeFromOpenCommand_QuotedPath() { var exe = AccessApplicationSysReader.TryExtractExeFromOpenCommand( "\"C:\\Program Files\\Microsoft Office\\root\\Office16\\MSACCESS.EXE\" \"%1\""); Assert.AreEqual( @"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE", exe); } [TestMethod] public void TryExtractExeFromOpenCommand_Null_ReturnsNull() { Assert.IsNull(AccessApplicationSysReader.TryExtractExeFromOpenCommand(null)); Assert.IsNull(AccessApplicationSysReader.TryExtractExeFromOpenCommand("")); } } }