mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Prevent common cases exception by explicitly rejecting invalid virtual paths. --HG-- branch : 1.x
54 lines
2.9 KiB
C#
54 lines
2.9 KiB
C#
using Moq;
|
|
using NUnit.Framework;
|
|
using Orchard.FileSystems.VirtualPath;
|
|
|
|
namespace Orchard.Tests.FileSystems.VirtualPath {
|
|
[TestFixture]
|
|
public class DefaultVirtualPathProviderTests {
|
|
[Test]
|
|
public void TryFileExistsTest() {
|
|
StubDefaultVirtualPathProvider defaultVirtualPathProvider = new StubDefaultVirtualPathProvider();
|
|
|
|
Assert.That(defaultVirtualPathProvider.TryFileExists("~/a.txt"), Is.True);
|
|
Assert.That(defaultVirtualPathProvider.TryFileExists("~/../a.txt"), Is.False);
|
|
Assert.That(defaultVirtualPathProvider.TryFileExists("~/a/../a.txt"), Is.True);
|
|
Assert.That(defaultVirtualPathProvider.TryFileExists("~/a/b/../a.txt"), Is.True);
|
|
Assert.That(defaultVirtualPathProvider.TryFileExists("~/a/b/../../a.txt"), Is.True);
|
|
Assert.That(defaultVirtualPathProvider.TryFileExists("~/a/b/../../../a.txt"), Is.False);
|
|
Assert.That(defaultVirtualPathProvider.TryFileExists("~/a/../../b/c.txt"), Is.False);
|
|
}
|
|
|
|
[Test]
|
|
public void RejectMalformedVirtualPathTests() {
|
|
StubDefaultVirtualPathProvider defaultVirtualPathProvider = new StubDefaultVirtualPathProvider();
|
|
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("~/a.txt"), Is.False);
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("/a.txt"), Is.False);
|
|
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("~/../a.txt"), Is.True);
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("/../a.txt"), Is.True);
|
|
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("~/a/../a.txt"), Is.False);
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("/a/../a.txt"), Is.False);
|
|
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("~/a/b/../a.txt"), Is.False);
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("/a/b/../a.txt"), Is.False);
|
|
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("~/a/b/../../a.txt"), Is.False);
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("/a/b/../../a.txt"), Is.False);
|
|
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("~/a/b/../../../a.txt"), Is.True);
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("/a/b/../../../a.txt"), Is.True);
|
|
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("~/a/../../b//.txt"), Is.True);
|
|
Assert.That(defaultVirtualPathProvider.RejectMalformedVirtualPath("/a/../../b//.txt"), Is.True);
|
|
}
|
|
}
|
|
|
|
internal class StubDefaultVirtualPathProvider : DefaultVirtualPathProvider {
|
|
public override bool FileExists(string path) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|