private static void AssertEncodeUsesOnlyIntendedCharacters(string input) { var encodedInput = PathEncoder.Encode(input); Assert.IsTrue(Rfc3986UnreservedCharacters.IsMatch(encodedInput ?? "")); encodedInput = PathEncoder.Encode(input, allowSlash: true); Assert.IsTrue(Rfc3986UnreservedCharactersAndSlash.IsMatch(encodedInput ?? "")); encodedInput = PathEncoder.Encode(input, allowSlash: false); Assert.IsTrue(Rfc3986UnreservedCharacters.IsMatch(encodedInput ?? "")); }
private static void AssertDecodeOfEncodeMatches(string input) { var encodedInput = PathEncoder.Encode(input); Assert.AreEqual(input, PathEncoder.Decode(encodedInput)); encodedInput = PathEncoder.Encode(input, allowSlash: true); Assert.AreEqual(input, PathEncoder.Decode(encodedInput)); encodedInput = PathEncoder.Encode(input, allowSlash: false); Assert.AreEqual(input, PathEncoder.Decode(encodedInput)); }
private static void AssertUrlDecodeDoesNotChange(string input) { var encodedInput = PathEncoder.Encode(input); var urlString = "http://localhost/" + encodedInput; Assert.AreEqual(urlString, HttpUtility.UrlDecode(urlString)); encodedInput = PathEncoder.Encode(input, allowSlash: true); urlString = "http://localhost/" + encodedInput; Assert.AreEqual(urlString, HttpUtility.UrlDecode(urlString)); encodedInput = PathEncoder.Encode(input, allowSlash: false); urlString = "http://localhost/" + encodedInput; Assert.AreEqual(urlString, HttpUtility.UrlDecode(urlString)); }
public void AllowSlashFalse() { Assert.AreEqual(0, PathEncoder.Encode("abc/def/ghi", allowSlash: false).Where(c => '/' == c).Count()); }
public void AllowSlashTrue() { Assert.AreEqual(2, PathEncoder.Encode("abc/def/ghi", allowSlash: true).Where(c => '/' == c).Count()); }
public void SlashEncodedByDefault() { Assert.AreEqual(0, PathEncoder.Encode("abc/def/ghi").Where(c => '/' == c).Count()); }
public void DoubleEncodeDecode() { var input = GetStringCharacterRange(30, 126); // Printable characters Assert.AreEqual(input, PathEncoder.Decode(PathEncoder.Decode(PathEncoder.Encode(PathEncoder.Encode(input))))); }
public void HandlesCshtmlExtension() { Assert.AreEqual(PathEncoder.Encode("index.cshtml"), "index.cshtml.view"); Assert.AreEqual(PathEncoder.Decode("index.cshtml.view"), "index.cshtml"); }