From 1bf616579b7b29391eca08b5d19e35e685b638df Mon Sep 17 00:00:00 2001 From: David Sparer Date: Wed, 28 Sep 2016 09:50:38 -0600 Subject: [PATCH] Added tests for the external tools arg parser --- .../Tools/ExternalToolsArgumentParserTests.cs | 84 +++++++++++++++++++ mRemoteNGTests/mRemoteNGTests.csproj | 1 + 2 files changed, 85 insertions(+) create mode 100644 mRemoteNGTests/Tools/ExternalToolsArgumentParserTests.cs diff --git a/mRemoteNGTests/Tools/ExternalToolsArgumentParserTests.cs b/mRemoteNGTests/Tools/ExternalToolsArgumentParserTests.cs new file mode 100644 index 00000000..016937d9 --- /dev/null +++ b/mRemoteNGTests/Tools/ExternalToolsArgumentParserTests.cs @@ -0,0 +1,84 @@ +using mRemoteNG.Connection; +using mRemoteNG.Tools; +using NUnit.Framework; + + +namespace mRemoteNGTests.Tools +{ + public class ExternalToolsArgumentParserTests + { + private ExternalToolArgumentParser _argumentParser; + private const string TestString = @"()%!^abc123*<>&|""'\"; + private const string StringAfterMetacharacterEscaping = @"^(^)^%^!^^abc123*^<^>^&^|^""'\"; + private const string StringAfterAllEscaping = @"^(^)^%^!^^abc123*^<^>^&^|\^""'\"; + private const string StringAfterNoEscaping = TestString; + private const int Port = 9933; + private const string PortAsString = "9933"; + + + [OneTimeSetUp] + public void Setup() + { + var connectionInfo = new ConnectionInfo + { + Name = TestString, + Hostname = TestString, + Port = Port, + Username = TestString, + Password = TestString, + Domain = TestString, + Description = TestString, + MacAddress = TestString, + UserField = TestString + }; + _argumentParser = new ExternalToolArgumentParser(connectionInfo); + } + + [OneTimeTearDown] + public void Teardown() + { + _argumentParser = null; + } + + + [TestCase("%NAME%", ExpectedResult = StringAfterAllEscaping)] + [TestCase("%-NAME%", ExpectedResult = StringAfterMetacharacterEscaping)] + [TestCase("%!NAME%", ExpectedResult = StringAfterNoEscaping)] + + [TestCase("%HOSTNAME%", ExpectedResult = StringAfterAllEscaping)] + [TestCase("%-HOSTNAME%", ExpectedResult = StringAfterMetacharacterEscaping)] + [TestCase("%!HOSTNAME%", ExpectedResult = StringAfterNoEscaping)] + + [TestCase("%PORT%", ExpectedResult = PortAsString)] + [TestCase("%-PORT%", ExpectedResult = PortAsString)] + [TestCase("%!PORT%", ExpectedResult = PortAsString)] + + [TestCase("%USERNAME%", ExpectedResult = StringAfterAllEscaping)] + [TestCase("%-USERNAME%", ExpectedResult = StringAfterMetacharacterEscaping)] + [TestCase("%!USERNAME%", ExpectedResult = StringAfterNoEscaping)] + + [TestCase("%PASSWORD%", ExpectedResult = StringAfterAllEscaping)] + [TestCase("%-PASSWORD%", ExpectedResult = StringAfterMetacharacterEscaping)] + [TestCase("%!PASSWORD%", ExpectedResult = StringAfterNoEscaping)] + + [TestCase("%DOMAIN%", ExpectedResult = StringAfterAllEscaping)] + [TestCase("%-DOMAIN%", ExpectedResult = StringAfterMetacharacterEscaping)] + [TestCase("%!DOMAIN%", ExpectedResult = StringAfterNoEscaping)] + + [TestCase("%DESCRIPTION%", ExpectedResult = StringAfterAllEscaping)] + [TestCase("%-DESCRIPTION%", ExpectedResult = StringAfterMetacharacterEscaping)] + [TestCase("%!DESCRIPTION%", ExpectedResult = StringAfterNoEscaping)] + + [TestCase("%MACADDRESS%", ExpectedResult = StringAfterAllEscaping)] + [TestCase("%-MACADDRESS%", ExpectedResult = StringAfterMetacharacterEscaping)] + [TestCase("%!MACADDRESS%", ExpectedResult = StringAfterNoEscaping)] + + [TestCase("%USERFIELD%", ExpectedResult = StringAfterAllEscaping)] + [TestCase("%-USERFIELD%", ExpectedResult = StringAfterMetacharacterEscaping)] + [TestCase("%!USERFIELD%", ExpectedResult = StringAfterNoEscaping)] + public string ParserTest(string argumentString) + { + return _argumentParser.ParseArguments(argumentString); + } + } +} \ No newline at end of file diff --git a/mRemoteNGTests/mRemoteNGTests.csproj b/mRemoteNGTests/mRemoteNGTests.csproj index 8a07545b..6252a216 100644 --- a/mRemoteNGTests/mRemoteNGTests.csproj +++ b/mRemoteNGTests/mRemoteNGTests.csproj @@ -114,6 +114,7 @@ +