Merge branch '6.2.0' into 6.2.0-pubcontent
This commit is contained in:
@@ -3,8 +3,8 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Rhino.Mocks;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Tests.TestHelpers.Entities;
|
||||
@@ -94,14 +94,14 @@ namespace Umbraco.Tests.Models
|
||||
var content = MockedContent.CreateTextpageContent(contentType, "Textpage", -1);
|
||||
|
||||
var stream = new MemoryStream(System.Text.Encoding.Default.GetBytes("TestContent"));
|
||||
var httpPostedFileBase = MockRepository.GenerateMock<HttpPostedFileBase>();
|
||||
httpPostedFileBase.Stub(x => x.ContentLength).Return(Convert.ToInt32(stream.Length));
|
||||
httpPostedFileBase.Stub(x => x.ContentType).Return("text/plain");
|
||||
httpPostedFileBase.Stub(x => x.FileName).Return("sample.txt");
|
||||
httpPostedFileBase.Stub(x => x.InputStream).Return(stream);
|
||||
var postedFileMock = new Mock<HttpPostedFileBase>();
|
||||
postedFileMock.Setup(x => x.ContentLength).Returns(Convert.ToInt32(stream.Length));
|
||||
postedFileMock.Setup(x => x.ContentType).Returns("text/plain");
|
||||
postedFileMock.Setup(x => x.FileName).Returns("sample.txt");
|
||||
postedFileMock.Setup(x => x.InputStream).Returns(stream);
|
||||
|
||||
// Assert
|
||||
content.SetValue("title", httpPostedFileBase);
|
||||
content.SetValue("title", postedFileMock.Object);
|
||||
|
||||
// Assert
|
||||
Assert.That(content.Properties.Any(), Is.True);
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Xml;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Rhino.Mocks;
|
||||
using Rhino.Mocks.Interfaces;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Core.Strings;
|
||||
@@ -26,37 +25,35 @@ namespace Umbraco.Tests.Models
|
||||
public void LoadValueFromDatabase_Is_Not_Called_When_SetValue_Is_Used()
|
||||
{
|
||||
// Arrange
|
||||
var baseDataType = MockRepository.GenerateStub<BaseDataType>();
|
||||
var dataTypeData = MockRepository.GenerateMock<DefaultData>(baseDataType);
|
||||
dataTypeData.Stub(x => x.Value).CallOriginalMethod(OriginalCallOptions.NoExpectation);
|
||||
var dataTypeMock = new Mock<BaseDataType>();
|
||||
var dataTypeDataMock = new Mock<DefaultData>(dataTypeMock.Object);
|
||||
|
||||
// Act
|
||||
|
||||
((IDataValueSetter)dataTypeData).SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString());
|
||||
var val = dataTypeData.Value;
|
||||
((IDataValueSetter)dataTypeDataMock.Object).SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString());
|
||||
var val = dataTypeDataMock.Object.Value;
|
||||
|
||||
// Assert
|
||||
|
||||
dataTypeData.AssertWasNotCalled(data => data.LoadValueFromDatabase());
|
||||
dataTypeDataMock.Verify(data => data.LoadValueFromDatabase(), Times.Never());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void LoadValueFromDatabase_Is_Called_When_SetValue_Is_Not_Used()
|
||||
{
|
||||
// Arrange
|
||||
var baseDataType = MockRepository.GenerateStub<BaseDataType>();
|
||||
var dataTypeData = MockRepository.GenerateMock<DefaultData>(baseDataType);
|
||||
dataTypeData
|
||||
.Stub(data => data.LoadValueFromDatabase()).WhenCalled(invocation => Debug.WriteLine("asdf"));
|
||||
dataTypeData.Stub(x => x.Value).CallOriginalMethod(OriginalCallOptions.NoExpectation);
|
||||
var dataTypeMock = new Mock<BaseDataType>();
|
||||
var dataTypeDataMock = new Mock<DefaultData>(dataTypeMock.Object) {CallBase = true};
|
||||
dataTypeDataMock
|
||||
.Setup(data => data.LoadValueFromDatabase()).Callback(() => Debug.WriteLine("asdf"));
|
||||
|
||||
// Act
|
||||
|
||||
var val = dataTypeData.Value;
|
||||
var val = dataTypeDataMock.Object.Value;
|
||||
|
||||
// Assert
|
||||
|
||||
dataTypeData.AssertWasCalled(data => data.LoadValueFromDatabase());
|
||||
dataTypeDataMock.Verify(data => data.LoadValueFromDatabase());
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -65,22 +62,18 @@ namespace Umbraco.Tests.Models
|
||||
// Arrange
|
||||
var dataTypeId = Guid.NewGuid();
|
||||
|
||||
var dataTypeData = MockRepository.GenerateMock<IData, IDataValueSetter>();
|
||||
|
||||
dataTypeData
|
||||
.Stub(data => data.ToXMl(Arg<XmlDocument>.Is.Anything))
|
||||
.Return(null) // you have to call Return() even though we're about to override it
|
||||
.WhenCalled(invocation =>
|
||||
{
|
||||
var xmlDoc = (XmlDocument) invocation.Arguments[0];
|
||||
invocation.ReturnValue = xmlDoc.CreateElement("test");
|
||||
});
|
||||
var dataTypeDataMock = new Mock<IData>();
|
||||
var dataValueSetterMock = dataTypeDataMock.As<IDataValueSetter>();
|
||||
|
||||
var dataType = MockRepository.GenerateStub<IDataType>();
|
||||
dataType.Stub(type => type.Data).Return(dataTypeData);
|
||||
dataTypeDataMock
|
||||
.Setup(data => data.ToXMl(It.IsAny<XmlDocument>()))
|
||||
.Returns((XmlDocument xdoc) => xdoc.CreateElement("test"));
|
||||
|
||||
var dataTypeSvc = MockRepository.GenerateStub<IDataTypeService>();
|
||||
dataTypeSvc.Stub(service => service.GetDataTypeById(dataTypeId)).Return(dataType);
|
||||
var dataTypeMock = new Mock<IDataType>();
|
||||
dataTypeMock.Setup(type => type.Data).Returns(dataTypeDataMock.Object);
|
||||
|
||||
var dataTypeSvcMock = new Mock<IDataTypeService>();
|
||||
dataTypeSvcMock.Setup(service => service.GetDataTypeById(dataTypeId)).Returns(dataTypeMock.Object);
|
||||
|
||||
var property = new Property(
|
||||
1234,
|
||||
@@ -92,11 +85,11 @@ namespace Umbraco.Tests.Models
|
||||
|
||||
// Act
|
||||
|
||||
var xml = property.ToXml(dataTypeSvc);
|
||||
var xml = property.ToXml(dataTypeSvcMock.Object);
|
||||
|
||||
// Assert
|
||||
|
||||
((IDataValueSetter)dataTypeData).AssertWasCalled(setter => setter.SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString()));
|
||||
dataValueSetterMock.Verify(setter => setter.SetValue("Hello world", DataTypeDatabaseType.Nvarchar.ToString()));
|
||||
}
|
||||
|
||||
[TestCase(DataTypeDatabaseType.Nvarchar)]
|
||||
@@ -105,7 +98,7 @@ namespace Umbraco.Tests.Models
|
||||
[TestCase(DataTypeDatabaseType.Ntext)]
|
||||
public void DefaultData_SetValue_Ensures_Empty_String_When_Null_Value_Any_Data_Type(DataTypeDatabaseType type)
|
||||
{
|
||||
var defaultData = new DefaultData(MockRepository.GenerateMock<BaseDataType>());
|
||||
var defaultData = new DefaultData(new Mock<BaseDataType>().Object);
|
||||
|
||||
((IDataValueSetter)defaultData).SetValue(null, type.ToString());
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Rhino.Mocks;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
using Umbraco.Web.Routing;
|
||||
using umbraco.BusinessLogic;
|
||||
@@ -31,8 +31,10 @@ namespace Umbraco.Tests.Routing
|
||||
var lookup = new ContentFinderByPageIdQuery();
|
||||
|
||||
//we need to manually stub the return output of HttpContext.Request["umbPageId"]
|
||||
routingContext.UmbracoContext.HttpContext.Request.Stub(x => x["umbPageID"])
|
||||
.Return(routingContext.UmbracoContext.HttpContext.Request.QueryString["umbPageID"]);
|
||||
var requestMock = Mock.Get(routingContext.UmbracoContext.HttpContext.Request);
|
||||
|
||||
requestMock.Setup(x => x["umbPageID"])
|
||||
.Returns(routingContext.UmbracoContext.HttpContext.Request.QueryString["umbPageID"]);
|
||||
|
||||
var result = lookup.TryFindContent(docRequest);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using System.Web;
|
||||
using System.Web.Routing;
|
||||
using Rhino.Mocks;
|
||||
using Moq;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
|
||||
namespace Umbraco.Tests.Routing
|
||||
@@ -31,7 +31,8 @@ namespace Umbraco.Tests.Routing
|
||||
var data = routes.GetRouteData(httpContext);
|
||||
|
||||
//set the route data on the request context
|
||||
httpContext.Request.RequestContext.Stub(x => x.RouteData).Return(data);
|
||||
var requestMock = Mock.Get(httpContext.Request.RequestContext);
|
||||
requestMock.Setup(x => x.RouteData).Returns(data);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ using System.Security;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Routing;
|
||||
using Rhino.Mocks;
|
||||
using Moq;
|
||||
|
||||
namespace Umbraco.Tests.TestHelpers
|
||||
{
|
||||
@@ -53,55 +53,61 @@ namespace Umbraco.Tests.TestHelpers
|
||||
{
|
||||
//Request context
|
||||
|
||||
RequestContext = MockRepository.GenerateMock<RequestContext>();
|
||||
var requestContextMock = new Mock<RequestContext>();
|
||||
|
||||
RequestContext = requestContextMock.Object;
|
||||
|
||||
//Cookie collection
|
||||
var cookieCollection = new HttpCookieCollection();
|
||||
cookieCollection.Add(new HttpCookie("UMB_UCONTEXT", "FBA996E7-D6BE-489B-B199-2B0F3D2DD826"));
|
||||
|
||||
//Request
|
||||
var request = MockRepository.GenerateMock<HttpRequestBase>();
|
||||
request.Stub(x => x.AppRelativeCurrentExecutionFilePath).Return("~" + fullUrl.AbsolutePath);
|
||||
request.Stub(x => x.PathInfo).Return(string.Empty);
|
||||
request.Stub(x => x.RawUrl).Return(VirtualPathUtility.ToAbsolute("~" + fullUrl.AbsolutePath, "/"));
|
||||
request.Stub(x => x.RequestContext).Return(RequestContext);
|
||||
request.Stub(x => x.Url).Return(fullUrl);
|
||||
request.Stub(x => x.ApplicationPath).Return("/");
|
||||
request.Stub(x => x.Cookies).Return(cookieCollection);
|
||||
request.Stub(x => x.ServerVariables).Return(new NameValueCollection());
|
||||
var requestMock = new Mock<HttpRequestBase>();
|
||||
requestMock.Setup(x => x.AppRelativeCurrentExecutionFilePath).Returns("~" + fullUrl.AbsolutePath);
|
||||
requestMock.Setup(x => x.PathInfo).Returns(string.Empty);
|
||||
requestMock.Setup(x => x.RawUrl).Returns(VirtualPathUtility.ToAbsolute("~" + fullUrl.AbsolutePath, "/"));
|
||||
requestMock.Setup(x => x.RequestContext).Returns(RequestContext);
|
||||
requestMock.Setup(x => x.Url).Returns(fullUrl);
|
||||
requestMock.Setup(x => x.ApplicationPath).Returns("/");
|
||||
requestMock.Setup(x => x.Cookies).Returns(cookieCollection);
|
||||
requestMock.Setup(x => x.ServerVariables).Returns(new NameValueCollection());
|
||||
var queryStrings = HttpUtility.ParseQueryString(fullUrl.Query);
|
||||
request.Stub(x => x.QueryString).Return(queryStrings);
|
||||
request.Stub(x => x.Form).Return(new NameValueCollection());
|
||||
requestMock.Setup(x => x.QueryString).Returns(queryStrings);
|
||||
requestMock.Setup(x => x.Form).Returns(new NameValueCollection());
|
||||
|
||||
//Cache
|
||||
var cache = MockRepository.GenerateMock<HttpCachePolicyBase>();
|
||||
var cacheMock = new Mock<HttpCachePolicyBase>();
|
||||
|
||||
//Response
|
||||
//var response = new FakeHttpResponse();
|
||||
var response = MockRepository.GenerateMock<HttpResponseBase>();
|
||||
response.Stub(x => x.ApplyAppPathModifier(null)).IgnoreArguments().Do(new Func<string, string>(appPath => appPath));
|
||||
response.Stub(x => x.Cache).Return(cache);
|
||||
var responseMock = new Mock<HttpResponseBase>();
|
||||
responseMock.Setup(x => x.ApplyAppPathModifier(It.IsAny<string>())).Returns((string s) => s);
|
||||
responseMock.Setup(x => x.Cache).Returns(cacheMock.Object);
|
||||
|
||||
//Server
|
||||
|
||||
var server = MockRepository.GenerateStub<HttpServerUtilityBase>();
|
||||
server.Stub(x => x.MapPath(Arg<string>.Is.Anything)).Return(Environment.CurrentDirectory);
|
||||
var serverMock = new Mock<HttpServerUtilityBase>();
|
||||
serverMock.Setup(x => x.MapPath(It.IsAny<string>())).Returns(Environment.CurrentDirectory);
|
||||
|
||||
//HTTP Context
|
||||
|
||||
HttpContext = MockRepository.GenerateMock<HttpContextBase>();
|
||||
HttpContext.Stub(x => x.Cache).Return(HttpRuntime.Cache);
|
||||
HttpContext.Stub(x => x.Items).Return(new Dictionary<object, object>());
|
||||
HttpContext.Stub(x => x.Request).Return(request);
|
||||
HttpContext.Stub(x => x.Server).Return(server);
|
||||
HttpContext.Stub(x => x.Response).Return(response);
|
||||
var httpContextMock = new Mock<HttpContextBase>();
|
||||
httpContextMock.Setup(x => x.Cache).Returns(HttpRuntime.Cache);
|
||||
httpContextMock.Setup(x => x.Items).Returns(new Dictionary<object, object>());
|
||||
httpContextMock.Setup(x => x.Request).Returns(requestMock.Object);
|
||||
httpContextMock.Setup(x => x.Server).Returns(serverMock.Object);
|
||||
httpContextMock.Setup(x => x.Response).Returns(responseMock.Object);
|
||||
|
||||
RequestContext.Stub(x => x.HttpContext).Return(HttpContext);
|
||||
HttpContext = httpContextMock.Object;
|
||||
|
||||
requestContextMock.Setup(x => x.HttpContext).Returns(httpContextMock.Object);
|
||||
|
||||
if (routeData != null)
|
||||
{
|
||||
RequestContext.Stub(x => x.RouteData).Return(routeData);
|
||||
requestContextMock.Setup(x => x.RouteData).Returns(routeData);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
<Private>True</Private>
|
||||
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Moq">
|
||||
<HintPath>..\packages\Moq.4.1.1309.1617\lib\net40\Moq.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\Newtonsoft.Json.4.5.11\lib\net40\Newtonsoft.Json.dll</HintPath>
|
||||
@@ -76,9 +79,6 @@
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\packages\NUnit.2.6.2\lib\nunit.framework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Rhino.Mocks">
|
||||
<HintPath>..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
<package id="Microsoft.AspNet.WebPages" version="2.0.30506.0" targetFramework="net40" />
|
||||
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net40" />
|
||||
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />
|
||||
<package id="Moq" version="4.1.1309.1617" targetFramework="net40" />
|
||||
<package id="Newtonsoft.Json" version="4.5.11" targetFramework="net40" />
|
||||
<package id="NUnit" version="2.6.2" targetFramework="net40" />
|
||||
<package id="RhinoMocks" version="3.6.1" targetFramework="net40" />
|
||||
<package id="Selenium.WebDriver" version="2.32.0" targetFramework="net40" />
|
||||
<package id="SharpZipLib" version="0.86.0" targetFramework="net40" />
|
||||
<package id="SqlServerCE" version="4.0.0.0" targetFramework="net40" />
|
||||
|
||||
@@ -103,19 +103,24 @@ namespace Umbraco.Web.Mvc
|
||||
|
||||
private void UpdateRouteDataForRequest(RenderModel renderModel, RequestContext requestContext)
|
||||
{
|
||||
if (renderModel == null) throw new ArgumentNullException("renderModel");
|
||||
if (requestContext == null) throw new ArgumentNullException("requestContext");
|
||||
|
||||
requestContext.RouteData.DataTokens["umbraco"] = renderModel;
|
||||
// the rest should not change -- it's only the published content that has changed
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <summary>
|
||||
/// Checks the request and query strings to see if it matches the definition of having a Surface controller
|
||||
/// posted/get value, if so, then we return a PostedDataProxyInfo object with the correct information.
|
||||
/// </summary>
|
||||
/// <param name="requestContext"></param>
|
||||
/// <returns></returns>
|
||||
private static PostedDataProxyInfo GetFormInfo(RequestContext requestContext)
|
||||
{
|
||||
//if it is a POST/GET then a value must be in the request
|
||||
{
|
||||
if (requestContext == null) throw new ArgumentNullException("requestContext");
|
||||
|
||||
//if it is a POST/GET then a value must be in the request
|
||||
if (requestContext.HttpContext.Request.QueryString["ufprt"].IsNullOrWhiteSpace()
|
||||
&& requestContext.HttpContext.Request.Form["ufprt"].IsNullOrWhiteSpace())
|
||||
{
|
||||
@@ -197,7 +202,10 @@ namespace Umbraco.Web.Mvc
|
||||
/// <param name="postedInfo"></param>
|
||||
private IHttpHandler HandlePostedValues(RequestContext requestContext, PostedDataProxyInfo postedInfo)
|
||||
{
|
||||
//set the standard route values/tokens
|
||||
if (requestContext == null) throw new ArgumentNullException("requestContext");
|
||||
if (postedInfo == null) throw new ArgumentNullException("postedInfo");
|
||||
|
||||
//set the standard route values/tokens
|
||||
requestContext.RouteData.Values["controller"] = postedInfo.ControllerName;
|
||||
requestContext.RouteData.Values["action"] = postedInfo.ActionName;
|
||||
|
||||
@@ -256,6 +264,9 @@ namespace Umbraco.Web.Mvc
|
||||
/// <returns></returns>
|
||||
internal virtual RouteDefinition GetUmbracoRouteDefinition(RequestContext requestContext, PublishedContentRequest publishedContentRequest)
|
||||
{
|
||||
if (requestContext == null) throw new ArgumentNullException("requestContext");
|
||||
if (publishedContentRequest == null) throw new ArgumentNullException("publishedContentRequest");
|
||||
|
||||
var defaultControllerType = DefaultRenderMvcControllerResolver.Current.GetDefaultControllerType();
|
||||
var defaultControllerName = ControllerExtensions.GetControllerName(defaultControllerType);
|
||||
//creates the default route definition which maps to the 'UmbracoController' controller
|
||||
@@ -319,7 +330,9 @@ namespace Umbraco.Web.Mvc
|
||||
|
||||
internal IHttpHandler GetHandlerOnMissingTemplate(PublishedContentRequest pcr)
|
||||
{
|
||||
// missing template, so we're in a 404 here
|
||||
if (pcr == null) throw new ArgumentNullException("pcr");
|
||||
|
||||
// missing template, so we're in a 404 here
|
||||
// so the content, if any, is a custom 404 page of some sort
|
||||
|
||||
if (!pcr.HasPublishedContent)
|
||||
@@ -348,7 +361,10 @@ namespace Umbraco.Web.Mvc
|
||||
/// <param name="publishedContentRequest"></param>
|
||||
internal IHttpHandler GetHandlerForRoute(RequestContext requestContext, PublishedContentRequest publishedContentRequest)
|
||||
{
|
||||
var routeDef = GetUmbracoRouteDefinition(requestContext, publishedContentRequest);
|
||||
if (requestContext == null) throw new ArgumentNullException("requestContext");
|
||||
if (publishedContentRequest == null) throw new ArgumentNullException("publishedContentRequest");
|
||||
|
||||
var routeDef = GetUmbracoRouteDefinition(requestContext, publishedContentRequest);
|
||||
|
||||
//Need to check for a special case if there is form data being posted back to an Umbraco URL
|
||||
var postedInfo = GetFormInfo(requestContext);
|
||||
|
||||
Reference in New Issue
Block a user