2015-02-18 18:05:37 +01:00
|
|
|
using System;
|
2015-02-18 17:14:55 +01:00
|
|
|
using System.Linq;
|
2014-06-17 18:53:23 +10:00
|
|
|
using System.Web;
|
|
|
|
|
using System.Web.Mvc;
|
2015-02-18 18:05:37 +01:00
|
|
|
using System.Web.Routing;
|
2015-02-18 17:14:55 +01:00
|
|
|
using System.Web.Security;
|
2014-06-17 18:53:23 +10:00
|
|
|
using Moq;
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using Umbraco.Core;
|
2015-02-18 17:14:55 +01:00
|
|
|
using Umbraco.Core.Configuration.UmbracoSettings;
|
|
|
|
|
using Umbraco.Core.Dictionary;
|
2015-01-09 10:51:15 +11:00
|
|
|
using Umbraco.Core.Logging;
|
2014-06-17 18:53:23 +10:00
|
|
|
using Umbraco.Core.Models;
|
2015-02-18 17:14:55 +01:00
|
|
|
using Umbraco.Core.Persistence;
|
|
|
|
|
using Umbraco.Core.Persistence.SqlSyntax;
|
|
|
|
|
using Umbraco.Core.Profiling;
|
|
|
|
|
using Umbraco.Core.Services;
|
2014-06-17 18:53:23 +10:00
|
|
|
using Umbraco.Tests.TestHelpers;
|
|
|
|
|
using Umbraco.Web;
|
|
|
|
|
using Umbraco.Web.Mvc;
|
2015-02-18 17:14:55 +01:00
|
|
|
using Umbraco.Web.Routing;
|
|
|
|
|
using Umbraco.Web.Security;
|
2014-06-17 18:53:23 +10:00
|
|
|
|
2016-02-17 10:59:48 +01:00
|
|
|
namespace Umbraco.Tests.Web.Mvc
|
2014-06-17 18:53:23 +10:00
|
|
|
{
|
|
|
|
|
[TestFixture]
|
|
|
|
|
public class SurfaceControllerTests
|
|
|
|
|
{
|
|
|
|
|
[Test]
|
|
|
|
|
public void Can_Construct_And_Get_Result()
|
|
|
|
|
{
|
2015-07-15 16:40:50 +02:00
|
|
|
var appCtx = new ApplicationContext(
|
|
|
|
|
CacheHelper.CreateDisabledCacheHelper(),
|
|
|
|
|
new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>()));
|
2014-06-17 18:53:23 +10:00
|
|
|
|
|
|
|
|
var umbCtx = UmbracoContext.EnsureContext(
|
|
|
|
|
new Mock<HttpContextBase>().Object,
|
|
|
|
|
appCtx,
|
2015-02-18 18:05:37 +01:00
|
|
|
new Mock<WebSecurity>(null, null).Object,
|
2015-02-18 17:14:55 +01:00
|
|
|
Mock.Of<IUmbracoSettingsSection>(),
|
|
|
|
|
Enumerable.Empty<IUrlProvider>(),
|
2014-06-17 18:53:23 +10:00
|
|
|
true);
|
|
|
|
|
|
2015-01-16 15:47:44 +11:00
|
|
|
var ctrl = new TestSurfaceController(umbCtx);
|
2014-06-17 18:53:23 +10:00
|
|
|
|
|
|
|
|
var result = ctrl.Index();
|
|
|
|
|
|
|
|
|
|
Assert.IsNotNull(result);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void Umbraco_Context_Not_Null()
|
|
|
|
|
{
|
2015-07-15 16:40:50 +02:00
|
|
|
var appCtx = new ApplicationContext(
|
|
|
|
|
CacheHelper.CreateDisabledCacheHelper(),
|
|
|
|
|
new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>()));
|
|
|
|
|
|
2014-06-17 18:53:23 +10:00
|
|
|
ApplicationContext.EnsureContext(appCtx, true);
|
|
|
|
|
|
|
|
|
|
var umbCtx = UmbracoContext.EnsureContext(
|
|
|
|
|
new Mock<HttpContextBase>().Object,
|
|
|
|
|
appCtx,
|
2015-02-18 17:14:55 +01:00
|
|
|
new Mock<WebSecurity>(null, null).Object,
|
|
|
|
|
Mock.Of<IUmbracoSettingsSection>(),
|
|
|
|
|
Enumerable.Empty<IUrlProvider>(),
|
2014-06-17 18:53:23 +10:00
|
|
|
true);
|
|
|
|
|
|
2015-01-16 15:47:44 +11:00
|
|
|
var ctrl = new TestSurfaceController(umbCtx);
|
2014-06-17 18:53:23 +10:00
|
|
|
|
|
|
|
|
Assert.IsNotNull(ctrl.UmbracoContext);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void Umbraco_Helper_Not_Null()
|
|
|
|
|
{
|
2015-02-18 17:14:55 +01:00
|
|
|
var appCtx = new ApplicationContext(
|
|
|
|
|
new DatabaseContext(new Mock<IDatabaseFactory>().Object, Mock.Of<ILogger>(), Mock.Of<ISqlSyntaxProvider>(), "test"),
|
|
|
|
|
MockHelper.GetMockedServiceContext(),
|
|
|
|
|
CacheHelper.CreateDisabledCacheHelper(),
|
|
|
|
|
new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>()));
|
2015-02-18 18:05:37 +01:00
|
|
|
|
2014-06-17 18:53:23 +10:00
|
|
|
var umbCtx = UmbracoContext.EnsureContext(
|
|
|
|
|
new Mock<HttpContextBase>().Object,
|
|
|
|
|
appCtx,
|
2015-02-18 17:14:55 +01:00
|
|
|
new Mock<WebSecurity>(null, null).Object,
|
|
|
|
|
Mock.Of<IUmbracoSettingsSection>(),
|
|
|
|
|
Enumerable.Empty<IUrlProvider>(),
|
2014-06-17 18:53:23 +10:00
|
|
|
true);
|
|
|
|
|
|
2015-01-16 15:47:44 +11:00
|
|
|
var ctrl = new TestSurfaceController(umbCtx);
|
2014-06-17 18:53:23 +10:00
|
|
|
|
|
|
|
|
Assert.IsNotNull(ctrl.Umbraco);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void Can_Lookup_Content()
|
|
|
|
|
{
|
2015-07-15 16:40:50 +02:00
|
|
|
var appCtx = new ApplicationContext(
|
|
|
|
|
CacheHelper.CreateDisabledCacheHelper(),
|
|
|
|
|
new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>()));
|
2014-06-17 18:53:23 +10:00
|
|
|
|
|
|
|
|
var umbCtx = UmbracoContext.EnsureContext(
|
|
|
|
|
new Mock<HttpContextBase>().Object,
|
|
|
|
|
appCtx,
|
2015-02-18 17:14:55 +01:00
|
|
|
new Mock<WebSecurity>(null, null).Object,
|
|
|
|
|
Mock.Of<IUmbracoSettingsSection>(section => section.WebRouting == Mock.Of<IWebRoutingSection>(routingSection => routingSection.UrlProviderMode == "AutoLegacy")),
|
|
|
|
|
Enumerable.Empty<IUrlProvider>(),
|
2014-06-17 18:53:23 +10:00
|
|
|
true);
|
|
|
|
|
|
2015-02-18 17:14:55 +01:00
|
|
|
var helper = new UmbracoHelper(
|
|
|
|
|
umbCtx,
|
|
|
|
|
Mock.Of<IPublishedContent>(),
|
2015-02-18 18:05:37 +01:00
|
|
|
Mock.Of<ITypedPublishedContentQuery>(query => query.TypedContent(It.IsAny<int>()) ==
|
2015-02-18 17:14:55 +01:00
|
|
|
//return mock of IPublishedContent for any call to GetById
|
|
|
|
|
Mock.Of<IPublishedContent>(content => content.Id == 2)),
|
|
|
|
|
Mock.Of<IDynamicPublishedContentQuery>(),
|
|
|
|
|
Mock.Of<ITagQuery>(),
|
|
|
|
|
Mock.Of<IDataTypeService>(),
|
|
|
|
|
new UrlProvider(umbCtx, Enumerable.Empty<IUrlProvider>()),
|
|
|
|
|
Mock.Of<ICultureDictionary>(),
|
|
|
|
|
Mock.Of<IUmbracoComponentRenderer>(),
|
|
|
|
|
new MembershipHelper(umbCtx, Mock.Of<MembershipProvider>(), Mock.Of<RoleProvider>()));
|
2015-02-18 18:05:37 +01:00
|
|
|
|
2015-02-18 17:14:55 +01:00
|
|
|
var ctrl = new TestSurfaceController(umbCtx, helper);
|
|
|
|
|
var result = ctrl.GetContent(2) as PublishedContentResult;
|
2014-06-17 18:53:23 +10:00
|
|
|
|
2015-02-18 17:14:55 +01:00
|
|
|
Assert.IsNotNull(result);
|
2015-02-18 18:05:37 +01:00
|
|
|
Assert.AreEqual(2, result.Content.Id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void Mock_Current_Page()
|
|
|
|
|
{
|
2015-07-15 16:40:50 +02:00
|
|
|
var appCtx = new ApplicationContext(
|
|
|
|
|
CacheHelper.CreateDisabledCacheHelper(),
|
|
|
|
|
new ProfilingLogger(Mock.Of<ILogger>(), Mock.Of<IProfiler>()));
|
2015-02-18 18:05:37 +01:00
|
|
|
|
|
|
|
|
var webRoutingSettings = Mock.Of<IWebRoutingSection>(section => section.UrlProviderMode == "AutoLegacy");
|
|
|
|
|
|
|
|
|
|
var umbCtx = UmbracoContext.EnsureContext(
|
|
|
|
|
new Mock<HttpContextBase>().Object,
|
|
|
|
|
appCtx,
|
|
|
|
|
new Mock<WebSecurity>(null, null).Object,
|
|
|
|
|
Mock.Of<IUmbracoSettingsSection>(section => section.WebRouting == webRoutingSettings),
|
|
|
|
|
Enumerable.Empty<IUrlProvider>(),
|
|
|
|
|
true);
|
|
|
|
|
|
|
|
|
|
var content = Mock.Of<IPublishedContent>(publishedContent => publishedContent.Id == 12345);
|
|
|
|
|
|
|
|
|
|
var contextBase = umbCtx.HttpContext;
|
|
|
|
|
var pcr = new PublishedContentRequest(new Uri("http://localhost/test"),
|
|
|
|
|
umbCtx.RoutingContext,
|
|
|
|
|
webRoutingSettings,
|
|
|
|
|
s => Enumerable.Empty<string>())
|
|
|
|
|
{
|
|
|
|
|
PublishedContent = content
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var routeDefinition = new RouteDefinition
|
|
|
|
|
{
|
|
|
|
|
PublishedContentRequest = pcr
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var routeData = new RouteData();
|
2016-02-17 10:22:22 +01:00
|
|
|
routeData.DataTokens.Add(Umbraco.Core.Constants.Web.UmbracoRouteDefinitionDataToken, routeDefinition);
|
2015-02-18 18:05:37 +01:00
|
|
|
|
|
|
|
|
var ctrl = new TestSurfaceController(umbCtx, new UmbracoHelper());
|
|
|
|
|
ctrl.ControllerContext = new ControllerContext(contextBase, routeData, ctrl);
|
|
|
|
|
|
|
|
|
|
var result = ctrl.GetContentFromCurrentPage() as PublishedContentResult;
|
|
|
|
|
|
|
|
|
|
Assert.AreEqual(12345, result.Content.Id);
|
2014-06-17 18:53:23 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class TestSurfaceController : SurfaceController
|
|
|
|
|
{
|
2015-02-18 17:14:55 +01:00
|
|
|
private readonly UmbracoHelper _umbracoHelper;
|
|
|
|
|
|
2015-01-16 15:47:44 +11:00
|
|
|
public TestSurfaceController(UmbracoContext umbracoContext)
|
|
|
|
|
: base(umbracoContext)
|
2014-06-17 18:53:23 +10:00
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
2015-02-18 17:14:55 +01:00
|
|
|
public TestSurfaceController(UmbracoContext umbracoContext, UmbracoHelper umbracoHelper)
|
|
|
|
|
: base(umbracoContext)
|
|
|
|
|
{
|
|
|
|
|
_umbracoHelper = umbracoHelper;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Returns an UmbracoHelper object
|
|
|
|
|
/// </summary>
|
|
|
|
|
public override UmbracoHelper Umbraco
|
|
|
|
|
{
|
|
|
|
|
get { return _umbracoHelper ?? base.Umbraco; }
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-17 18:53:23 +10:00
|
|
|
public ActionResult Index()
|
|
|
|
|
{
|
|
|
|
|
return View();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ActionResult GetContent(int id)
|
|
|
|
|
{
|
|
|
|
|
var content = Umbraco.TypedContent(id);
|
|
|
|
|
|
|
|
|
|
return new PublishedContentResult(content);
|
|
|
|
|
}
|
2015-02-18 18:05:37 +01:00
|
|
|
|
|
|
|
|
public ActionResult GetContentFromCurrentPage()
|
|
|
|
|
{
|
|
|
|
|
var content = CurrentPage;
|
|
|
|
|
|
|
|
|
|
return new PublishedContentResult(content);
|
|
|
|
|
}
|
2014-06-17 18:53:23 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class PublishedContentResult : ActionResult
|
|
|
|
|
{
|
|
|
|
|
public IPublishedContent Content { get; set; }
|
|
|
|
|
|
|
|
|
|
public PublishedContentResult(IPublishedContent content)
|
|
|
|
|
{
|
|
|
|
|
Content = content;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void ExecuteResult(ControllerContext context)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|