The DocumentSearcher now performs the searching and sets the properties on the DocumentRequest, this simplifies the dependencies between the contexts. Updated the LookupByNiceUrlTests unit test, now all initialization is working and the test runs which will be the basis for testing all of the IDocumentLookups.
193 lines
9.0 KiB
C#
193 lines
9.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Xml;
|
|
using NUnit.Framework;
|
|
using SqlCE4Umbraco;
|
|
using Umbraco.Core;
|
|
using Umbraco.Tests.TestHelpers;
|
|
using Umbraco.Web;
|
|
using Umbraco.Web.Media.ThumbnailProviders;
|
|
using Umbraco.Web.Routing;
|
|
using umbraco.BusinessLogic;
|
|
using umbraco.DataLayer;
|
|
using umbraco.IO;
|
|
using umbraco.cms.businesslogic.cache;
|
|
using umbraco.cms.businesslogic.language;
|
|
using umbraco.cms.businesslogic.template;
|
|
using umbraco.cms.businesslogic.web;
|
|
using GlobalSettings = umbraco.GlobalSettings;
|
|
|
|
namespace Umbraco.Tests
|
|
{
|
|
[TestFixture, RequiresSTA]
|
|
public class UmbracoModuleTests
|
|
{
|
|
private UmbracoModule _module;
|
|
|
|
[SetUp]
|
|
public void Initialize()
|
|
{
|
|
TestHelper.SetupLog4NetForTests();
|
|
ApplicationContext.Current = new ApplicationContext()
|
|
{
|
|
IsReady = true
|
|
};
|
|
_module = new UmbracoModule();
|
|
ConfigurationManager.AppSettings.Set("umbracoConfigurationStatus", Umbraco.Core.Configuration.GlobalSettings.CurrentVersion);
|
|
ConfigurationManager.AppSettings.Set("umbracoReservedPaths", "~/umbraco,~/install/");
|
|
ConfigurationManager.AppSettings.Set("umbracoReservedUrls", "~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd");
|
|
Cache.ClearAllCache();
|
|
TestHelper.InitializeDatabase();
|
|
|
|
//create the not found handlers config
|
|
using(var sw = File.CreateText(IOHelper.MapPath(SystemFiles.NotFoundhandlersConfig, false)))
|
|
{
|
|
sw.Write(@"<NotFoundHandlers>
|
|
<notFound assembly='umbraco' type='SearchForAlias' />
|
|
<notFound assembly='umbraco' type='SearchForTemplate'/>
|
|
<notFound assembly='umbraco' type='SearchForProfile'/>
|
|
<notFound assembly='umbraco' type='handle404'/>
|
|
</NotFoundHandlers>");
|
|
}
|
|
}
|
|
|
|
[TearDown]
|
|
public void TearDown()
|
|
{
|
|
_module.DisposeIfDisposable();
|
|
//reset the context on global settings
|
|
Umbraco.Core.Configuration.GlobalSettings.HttpContext = null;
|
|
//reset the app context
|
|
ApplicationContext.Current = null;
|
|
//reset the app config
|
|
ConfigurationManager.AppSettings.Set("umbracoConfigurationStatus", "");
|
|
ConfigurationManager.AppSettings.Set("umbracoReservedPaths", "");
|
|
ConfigurationManager.AppSettings.Set("umbracoReservedUrls", "");
|
|
TestHelper.ClearDatabase();
|
|
Cache.ClearAllCache();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initlializes the UmbracoContext with specific XML
|
|
/// </summary>
|
|
/// <param name="umbracoContext"></param>
|
|
/// <param name="template"></param>
|
|
private void SetupUmbracoContextForTest(UmbracoContext umbracoContext, Template template)
|
|
{
|
|
umbracoContext.GetXmlDelegate = () =>
|
|
{
|
|
var xDoc = new XmlDocument();
|
|
|
|
//create a custom xml structure to return
|
|
|
|
xDoc.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?><!DOCTYPE root[
|
|
<!ELEMENT Home ANY>
|
|
<!ATTLIST Home id ID #REQUIRED>
|
|
|
|
]>
|
|
<root id=""-1"">
|
|
<Home id=""1046"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + template.Id + @""" sortOrder=""2"" createDate=""2012-06-12T14:13:17"" updateDate=""2012-07-20T18:50:43"" nodeName=""Home"" urlName=""home"" writerName=""admin"" creatorName=""admin"" path=""-1,1046"" isDoc=""""><content><![CDATA[]]></content>
|
|
<Home id=""1173"" parentID=""1046"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + template.Id + @""" sortOrder=""1"" createDate=""2012-07-20T18:06:45"" updateDate=""2012-07-20T19:07:31"" nodeName=""Sub1"" urlName=""sub1"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1173"" isDoc=""""><content><![CDATA[]]></content>
|
|
<Home id=""1174"" parentID=""1173"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + template.Id + @""" sortOrder=""1"" createDate=""2012-07-20T18:07:54"" updateDate=""2012-07-20T19:10:27"" nodeName=""Sub2"" urlName=""sub2"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1173,1174"" isDoc=""""><content><![CDATA[]]></content>
|
|
</Home>
|
|
<Home id=""1176"" parentID=""1173"" level=""3"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + template.Id + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:08"" updateDate=""2012-07-20T19:10:52"" nodeName=""Sub 3"" urlName=""sub-3"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1173,1176"" isDoc=""""><content><![CDATA[]]></content>
|
|
</Home>
|
|
</Home>
|
|
<Home id=""1175"" parentID=""1046"" level=""2"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + template.Id + @""" sortOrder=""2"" createDate=""2012-07-20T18:08:01"" updateDate=""2012-07-20T18:49:32"" nodeName=""Sub 2"" urlName=""sub-2"" writerName=""admin"" creatorName=""admin"" path=""-1,1046,1175"" isDoc=""""><content><![CDATA[]]></content>
|
|
</Home>
|
|
</Home>
|
|
<Home id=""1172"" parentID=""-1"" level=""1"" writerID=""0"" creatorID=""0"" nodeType=""1044"" template=""" + template.Id + @""" sortOrder=""3"" createDate=""2012-07-16T15:26:59"" updateDate=""2012-07-18T14:23:35"" nodeName=""Test"" urlName=""test"" writerName=""admin"" creatorName=""admin"" path=""-1,1172"" isDoc="""" />
|
|
</root>");
|
|
//return the custom x doc
|
|
return xDoc;
|
|
};
|
|
}
|
|
|
|
[TestCase("/umbraco_client/Tree/treeIcons.css", false)]
|
|
[TestCase("/umbraco_client/Tree/Themes/umbraco/style.css?cdv=37", false)]
|
|
[TestCase("/umbraco_client/scrollingmenu/style.css?cdv=37", false)]
|
|
[TestCase("/umbraco/umbraco.aspx", false)]
|
|
[TestCase("/umbraco/editContent.aspx", false)]
|
|
[TestCase("/install/default.aspx", false)]
|
|
[TestCase("/install/test.aspx", false)]
|
|
[TestCase("/base/somebasehandler", false)]
|
|
[TestCase("/", true)]
|
|
[TestCase("/home.aspx", true)]
|
|
public void Ensure_Request_Routable(string url, bool assert)
|
|
{
|
|
var httpContextFactory = new FakeHttpContextFactory(url);
|
|
var httpContext = httpContextFactory.HttpContext;
|
|
//set the context on global settings
|
|
Umbraco.Core.Configuration.GlobalSettings.HttpContext = httpContext;
|
|
var uri = httpContext.Request.Url;
|
|
var lpath = uri.AbsolutePath.ToLower();
|
|
|
|
var result = _module.EnsureUmbracoRoutablePage(uri, lpath, httpContext);
|
|
|
|
Assert.AreEqual(assert, result);
|
|
}
|
|
|
|
[TestCase("/favicon.ico", true)]
|
|
[TestCase("/umbraco_client/Tree/treeIcons.css", true)]
|
|
[TestCase("/umbraco_client/Tree/Themes/umbraco/style.css?cdv=37", true)]
|
|
[TestCase("/umbraco_client/scrollingmenu/style.css?cdv=37", true)]
|
|
[TestCase("/base/somebasehandler", false)]
|
|
[TestCase("/", false)]
|
|
[TestCase("/home.aspx", false)]
|
|
public void Is_Client_Side_Request(string url, bool assert)
|
|
{
|
|
var uri = new Uri("http://test.com" + url);
|
|
var result = _module.IsClientSideRequest(uri);
|
|
Assert.AreEqual(assert, result);
|
|
}
|
|
|
|
//NOTE: This test shows how we can test most of the HttpModule, it however is testing a method that no longer exists and is testing too much,
|
|
// we need to write unit tests for each of the components: NiceUrlProvider, all of the Lookup classes, etc...
|
|
// to ensure that each one is individually tested.
|
|
|
|
//[TestCase("/", 1046)]
|
|
//[TestCase("/home.aspx", 1046)]
|
|
//[TestCase("/home/sub1.aspx", 1173)]
|
|
//[TestCase("/home.aspx?altTemplate=blah", 1046)]
|
|
//public void Process_Front_End_Document_Request_Match_Node(string url, int nodeId)
|
|
//{
|
|
// var httpContextFactory = new FakeHttpContextFactory(url);
|
|
// var httpContext = httpContextFactory.HttpContext;
|
|
// var umbracoContext = new UmbracoContext(httpContext, ApplicationContext.Current, new NullRoutesCache());
|
|
// var contentStore = new ContentStore(umbracoContext);
|
|
// var niceUrls = new NiceUrlProvider(contentStore, umbracoContext);
|
|
// umbracoContext.RoutingContext = new RoutingContext(
|
|
// new IDocumentLookup[] {new LookupByNiceUrl()},
|
|
// new DefaultLastChanceLookup(),
|
|
// contentStore,
|
|
// niceUrls);
|
|
|
|
// StateHelper.HttpContext = httpContext;
|
|
|
|
// //because of so much dependency on the db, we need to create som stuff here, i originally abstracted out stuff but
|
|
// //was turning out to be quite a deep hole because ultimately we'd have to abstract the old 'Domain' and 'Language' classes
|
|
// Domain.MakeNew("Test.com", 1000, Language.GetByCultureCode("en-US").id);
|
|
|
|
// //need to create a template with id 1045
|
|
// var template = Template.MakeNew("test", new User(0));
|
|
|
|
// SetupUmbracoContextForTest(umbracoContext, template);
|
|
|
|
// _module.AssignDocumentRequest(httpContext, umbracoContext, httpContext.Request.Url);
|
|
|
|
// Assert.IsNotNull(umbracoContext.DocumentRequest);
|
|
// Assert.IsNotNull(umbracoContext.DocumentRequest.XmlNode);
|
|
// Assert.IsFalse(umbracoContext.DocumentRequest.IsRedirect);
|
|
// Assert.IsFalse(umbracoContext.DocumentRequest.Is404);
|
|
// Assert.AreEqual(umbracoContext.DocumentRequest.Culture, Thread.CurrentThread.CurrentCulture);
|
|
// Assert.AreEqual(umbracoContext.DocumentRequest.Culture, Thread.CurrentThread.CurrentUICulture);
|
|
// Assert.AreEqual(nodeId, umbracoContext.DocumentRequest.NodeId);
|
|
|
|
//}
|
|
|
|
}
|
|
} |