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