using System; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Renci.SshNet.Tests.Classes { [TestClass] public class RemotePathShellQuoteTransformationTest { private IRemotePathTransformation _transformation; [TestInitialize] public void SetUp() { _transformation = new RemotePathShellQuoteTransformation(); } /// /// Test cases from triple-slash comments /// [TestMethod] public void Mixed() { Assert.AreEqual("'/var/log/auth.log'", _transformation.Transform("/var/log/auth.log")); Assert.AreEqual("'/var/mp3/Guns N'\"'\"' Roses'", _transformation.Transform("/var/mp3/Guns N' Roses")); Assert.AreEqual("'/var/garbage'\\!'/temp'", _transformation.Transform("/var/garbage!/temp")); Assert.AreEqual("'/var/would be '\"'\"'kewl'\"'\"\\!', not?'", _transformation.Transform("/var/would be 'kewl'!, not?")); Assert.AreEqual("''", _transformation.Transform(string.Empty)); Assert.AreEqual("'Hello \"World\"'", _transformation.Transform("Hello \"World\"")); } [TestMethod] public void Null() { const string path = null; try { _transformation.Transform(path); Assert.Fail(); } catch (ArgumentNullException ex) { Assert.IsNull(ex.InnerException); Assert.AreEqual("path", ex.ParamName); } } [TestMethod] public void Ampersand_Embedded() { const string path = "You&Me"; var actual = _transformation.Transform(path); Assert.AreEqual("'You&Me'", actual); } [TestMethod] public void Ampersand_Leading() { const string path = "&Or"; var actual = _transformation.Transform(path); Assert.AreEqual("'&Or'", actual); } [TestMethod] public void Ampersand_LeadingAndTrailing() { const string path = "&Or&"; var actual = _transformation.Transform(path); Assert.AreEqual("'&Or&'", actual); } [TestMethod] public void Ampersand_Trailing() { const string path = "And&"; var actual = _transformation.Transform(path); Assert.AreEqual("'And&'", actual); } [TestMethod] public void Asterisk_Embedded() { const string path = "Love*Hate"; var actual = _transformation.Transform(path); Assert.AreEqual("'Love*Hate'", actual); } [TestMethod] public void Asterisk_Leading() { const string path = "*Times"; var actual = _transformation.Transform(path); Assert.AreEqual("'*Times'", actual); } [TestMethod] public void Asterisk_LeadingAndTrailing() { const string path = "*WAR*"; var actual = _transformation.Transform(path); Assert.AreEqual("'*WAR*'", actual); } [TestMethod] public void Asterisk_Trailing() { const string path = "Censor*"; var actual = _transformation.Transform(path); Assert.AreEqual("'Censor*'", actual); } [TestMethod] public void Backslash_Embedded() { const string path = "Hello\\World"; var actual = _transformation.Transform(path); Assert.AreEqual("'Hello\\World'", actual); } [TestMethod] public void Backslash_Leading() { const string path = "\\Hello"; var actual = _transformation.Transform(path); Assert.AreEqual("'\\Hello'", actual); } [TestMethod] public void Backslash_LeadingAndTrailing() { const string path = "\\Hello\\"; var actual = _transformation.Transform(path); Assert.AreEqual("'\\Hello\\'", actual); } [TestMethod] public void Backslash_Trailing() { const string path = "HelloWorld\\"; var actual = _transformation.Transform(path); Assert.AreEqual("'HelloWorld\\'", actual); } [TestMethod] public void Backtick_Embedded() { const string path = "back`tick"; var actual = _transformation.Transform(path); Assert.AreEqual("'back`tick'", actual); } [TestMethod] public void Backtick_Leading() { const string path = "`front"; var actual = _transformation.Transform(path); Assert.AreEqual("'`front'", actual); } [TestMethod] public void Backtick_LeadingAndTrailing() { const string path = "`FrontAndBack`"; var actual = _transformation.Transform(path); Assert.AreEqual("'`FrontAndBack`'", actual); } [TestMethod] public void Backtick_Trailing() { const string path = "back`"; var actual = _transformation.Transform(path); Assert.AreEqual("'back`'", actual); } [TestMethod] public void Circumflex_Embedded() { const string path = "You^Me"; var actual = _transformation.Transform(path); Assert.AreEqual("'You^Me'", actual); } [TestMethod] public void Circumflex_Leading() { const string path = "^Or"; var actual = _transformation.Transform(path); Assert.AreEqual("'^Or'", actual); } [TestMethod] public void Circumflex_LeadingAndTrailing() { const string path = "^Or^"; var actual = _transformation.Transform(path); Assert.AreEqual("'^Or^'", actual); } [TestMethod] public void Circumflex_Trailing() { const string path = "And^"; var actual = _transformation.Transform(path); Assert.AreEqual("'And^'", actual); } [TestMethod] public void CurlyBrackets_Close_Embedded() { const string path = "Halo}Devine"; var actual = _transformation.Transform(path); Assert.AreEqual("'Halo}Devine'", actual); } [TestMethod] public void CurlyBrackets_Close_Leading() { const string path = "}Open"; var actual = _transformation.Transform(path); Assert.AreEqual("'}Open'", actual); } [TestMethod] public void CurlyBrackets_Close_LeadingAndTrailing() { const string path = "}Closed}"; var actual = _transformation.Transform(path); Assert.AreEqual("'}Closed}'", actual); } [TestMethod] public void CurlyBrackets_Close_Trailing() { const string path = "Finish}"; var actual = _transformation.Transform(path); Assert.AreEqual("'Finish}'", actual); } [TestMethod] public void CurlyBrackets_Open_Embedded() { const string path = "Halo{Devine"; var actual = _transformation.Transform(path); Assert.AreEqual("'Halo{Devine'", actual); } [TestMethod] public void CurlyBrackets_Open_Leading() { const string path = "{Open"; var actual = _transformation.Transform(path); Assert.AreEqual("'{Open'", actual); } [TestMethod] public void CurlyBrackets_Open_LeadingAndTrailing() { const string path = "{Closed{"; var actual = _transformation.Transform(path); Assert.AreEqual("'{Closed{'", actual); } [TestMethod] public void CurlyBrackets_Open_Trailing() { const string path = "Finish{"; var actual = _transformation.Transform(path); Assert.AreEqual("'Finish{'", actual); } [TestMethod] public void Dollar_Embedded() { const string path = "IGiveYouOne$ForYourThoughts"; var actual = _transformation.Transform(path); Assert.AreEqual("'IGiveYouOne$ForYourThoughts'", actual); } [TestMethod] public void Dollar_Leading() { const string path = "$Blues"; var actual = _transformation.Transform(path); Assert.AreEqual("'$Blues'", actual); } [TestMethod] public void Dollar_LeadingAndTrailing() { const string path = "$SUM$"; var actual = _transformation.Transform(path); Assert.AreEqual("'$SUM$'", actual); } [TestMethod] public void Dollar_Trailing() { const string path = "NotCravingForMore$"; var actual = _transformation.Transform(path); Assert.AreEqual("'NotCravingForMore$'", actual); } [TestMethod] public void DoubleQuote_Embedded() { const string path = "DoNot\"MeOnThis"; var actual = _transformation.Transform(path); Assert.AreEqual("'DoNot\"MeOnThis'", actual); } [TestMethod] public void DoubleQuote_Leading() { const string path = "\"OrNotToQuote"; var actual = _transformation.Transform(path); Assert.AreEqual("'\"OrNotToQuote'", actual); } [TestMethod] public void DoubleQuote_LeadingAndTrailing() { const string path = "\"OrNotTo\""; var actual = _transformation.Transform(path); Assert.AreEqual("'\"OrNotTo\"'", actual); } [TestMethod] public void DoubleQuote_Trailing() { const string path = "Famous\""; var actual = _transformation.Transform(path); Assert.AreEqual("'Famous\"'", actual); } [TestMethod] public void Equals_Embedded() { const string path = "You=Me"; var actual = _transformation.Transform(path); Assert.AreEqual("'You=Me'", actual); } [TestMethod] public void Equals_Leading() { const string path = "=Or"; var actual = _transformation.Transform(path); Assert.AreEqual("'=Or'", actual); } [TestMethod] public void Equals_LeadingAndTrailing() { const string path = "=Or="; var actual = _transformation.Transform(path); Assert.AreEqual("'=Or='", actual); } [TestMethod] public void Equals_Trailing() { const string path = "And="; var actual = _transformation.Transform(path); Assert.AreEqual("'And='", actual); } [TestMethod] public void ExclamationMark_Embedded_Single() { const string path = "/var/garbage!/temp"; var actual = _transformation.Transform(path); Assert.AreEqual("'/var/garbage'\\!'/temp'", actual); } [TestMethod] public void ExclamationMark_Embedded_Sequence() { const string path = "/var/garbage!!/temp"; var actual = _transformation.Transform(path); Assert.AreEqual("'/var/garbage'\\!\\!'/temp'", actual); } [TestMethod] public void ExclamationMark_Leading() { const string path = "!Error"; var actual = _transformation.Transform(path); Assert.AreEqual("\\!'Error'", actual); } [TestMethod] public void ExclamationMark_LeadingAndTrailing() { const string path = "!ignore!"; var actual = _transformation.Transform(path); Assert.AreEqual("\\!'ignore'\\!", actual); } [TestMethod] public void ExclamationMark_Trailing() { const string path = "Done!"; var actual = _transformation.Transform(path); Assert.AreEqual("'Done'\\!", actual); } [TestMethod] public void GreaterThan_Embedded() { const string path = "You>Me"; var actual = _transformation.Transform(path); Assert.AreEqual("'You>Me'", actual); } [TestMethod] public void GreaterThan_Leading() { const string path = ">Or"; var actual = _transformation.Transform(path); Assert.AreEqual("'>Or'", actual); } [TestMethod] public void GreaterThan_LeadingAndTrailing() { const string path = ">Or>"; var actual = _transformation.Transform(path); Assert.AreEqual("'>Or>'", actual); } [TestMethod] public void GreaterThan_Trailing() { const string path = "And>"; var actual = _transformation.Transform(path); Assert.AreEqual("'And>'", actual); } [TestMethod] public void Hash_Embedded() { const string path = "Smoke#EveryDay"; var actual = _transformation.Transform(path); Assert.AreEqual("'Smoke#EveryDay'", actual); } [TestMethod] public void Hash_Leading() { const string path = "#4Ever"; var actual = _transformation.Transform(path); Assert.AreEqual("'#4Ever'", actual); } [TestMethod] public void Hash_LeadingAndTrailing() { const string path = "#4Ever#"; var actual = _transformation.Transform(path); Assert.AreEqual("'#4Ever#'", actual); } [TestMethod] public void Hash_Trailing() { const string path = "Legalize#"; var actual = _transformation.Transform(path); Assert.AreEqual("'Legalize#'", actual); } [TestMethod] public void LessThan_Embedded() { const string path = "You