Files
Orchard/src/Orchard.Tests/FileSystems/VirtualPath/DefaultVirtualPathProviderTests.cs
Renaud Paquay 0ac6091b74 17875: Too many InvalidOperationExceptions during startup
Prevent common cases exception by explicitly rejecting invalid
virtual paths.

--HG--
branch : 1.x
2011-05-25 17:36:27 -07:00

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;
}
}
}