diff --git a/src/Umbraco.Tests/Cache/DistributedCache/DistributedCacheTests.cs b/src/Umbraco.Tests/Cache/DistributedCache/DistributedCacheTests.cs
index 8873a72de4..4c74b12159 100644
--- a/src/Umbraco.Tests/Cache/DistributedCache/DistributedCacheTests.cs
+++ b/src/Umbraco.Tests/Cache/DistributedCache/DistributedCacheTests.cs
@@ -42,7 +42,7 @@ namespace Umbraco.Tests.Cache.DistributedCache
{
for (var i = 1; i < 11; i++)
{
- Web.Cache.DistributedCache.Instance.Refresh(Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"), i);
+ global::Umbraco.Web.Cache.DistributedCache.Instance.Refresh(Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"), i);
}
Assert.AreEqual(10, ((TestServerMessenger)ServerMessengerResolver.Current.Messenger).IntIdsRefreshed.Count);
}
@@ -52,7 +52,7 @@ namespace Umbraco.Tests.Cache.DistributedCache
{
for (var i = 0; i < 10; i++)
{
- Web.Cache.DistributedCache.Instance.Refresh(
+ global::Umbraco.Web.Cache.DistributedCache.Instance.Refresh(
Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"),
x => x.Id,
new TestObjectWithId{Id = i});
@@ -65,7 +65,7 @@ namespace Umbraco.Tests.Cache.DistributedCache
{
for (var i = 0; i < 11; i++)
{
- Web.Cache.DistributedCache.Instance.Refresh(Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"), Guid.NewGuid());
+ global::Umbraco.Web.Cache.DistributedCache.Instance.Refresh(Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"), Guid.NewGuid());
}
Assert.AreEqual(11, ((TestServerMessenger)ServerMessengerResolver.Current.Messenger).GuidIdsRefreshed.Count);
}
@@ -75,7 +75,7 @@ namespace Umbraco.Tests.Cache.DistributedCache
{
for (var i = 1; i < 13; i++)
{
- Web.Cache.DistributedCache.Instance.Remove(Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"), i);
+ global::Umbraco.Web.Cache.DistributedCache.Instance.Remove(Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"), i);
}
Assert.AreEqual(12, ((TestServerMessenger)ServerMessengerResolver.Current.Messenger).IntIdsRemoved.Count);
}
@@ -85,7 +85,7 @@ namespace Umbraco.Tests.Cache.DistributedCache
{
for (var i = 0; i < 13; i++)
{
- Web.Cache.DistributedCache.Instance.RefreshAll(Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"));
+ global::Umbraco.Web.Cache.DistributedCache.Instance.RefreshAll(Guid.Parse("E0F452CB-DCB2-4E84-B5A5-4F01744C5C73"));
}
Assert.AreEqual(13, ((TestServerMessenger)ServerMessengerResolver.Current.Messenger).CountOfFullRefreshes);
}
diff --git a/src/Umbraco.Tests/Integration/GetCultureTests.cs b/src/Umbraco.Tests/Integration/GetCultureTests.cs
index 5e8c95803c..7aacf44365 100644
--- a/src/Umbraco.Tests/Integration/GetCultureTests.cs
+++ b/src/Umbraco.Tests/Integration/GetCultureTests.cs
@@ -56,19 +56,19 @@ namespace Umbraco.Tests.Integration
ServiceContext.DomainService.Save(new UmbracoDomain("*100112") { DomainName = "*100112", RootContentId = c3.Id, LanguageId = l2.Id });
var content = c2;
- var culture = Web.Models.ContentExtensions.GetCulture(null,
+ var culture = global::Umbraco.Web.Models.ContentExtensions.GetCulture(null,
ServiceContext.DomainService, ServiceContext.LocalizationService, ServiceContext.ContentService,
content.Id, content.Path, new Uri("http://domain1.com/"));
Assert.AreEqual("en-US", culture.Name);
content = c2;
- culture = Web.Models.ContentExtensions.GetCulture(null,
+ culture = global::Umbraco.Web.Models.ContentExtensions.GetCulture(null,
ServiceContext.DomainService, ServiceContext.LocalizationService, ServiceContext.ContentService,
content.Id, content.Path, new Uri("http://domain1.fr/"));
Assert.AreEqual("fr-FR", culture.Name);
content = c4;
- culture = Web.Models.ContentExtensions.GetCulture(null,
+ culture = global::Umbraco.Web.Models.ContentExtensions.GetCulture(null,
ServiceContext.DomainService, ServiceContext.LocalizationService, ServiceContext.ContentService,
content.Id, content.Path, new Uri("http://domain1.fr/"));
Assert.AreEqual("de-DE", culture.Name);
diff --git a/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs b/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs
index b0f4791c84..39a88105d1 100644
--- a/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs
+++ b/src/Umbraco.Tests/Routing/DomainsAndCulturesTests.cs
@@ -380,7 +380,7 @@ namespace Umbraco.Tests.Routing
var content = umbracoContext.ContentCache.GetById(nodeId);
Assert.IsNotNull(content);
- var culture = Web.Models.ContentExtensions.GetCulture(umbracoContext, domainService, ServiceContext.LocalizationService, null, content.Id, content.Path, new Uri(currentUrl));
+ var culture = global::Umbraco.Web.Models.ContentExtensions.GetCulture(umbracoContext, domainService, ServiceContext.LocalizationService, null, content.Id, content.Path, new Uri(currentUrl));
Assert.AreEqual(expectedCulture, culture.Name);
}
}
diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj
index d7a5f0c4fc..f11f9f5be4 100644
--- a/src/Umbraco.Tests/Umbraco.Tests.csproj
+++ b/src/Umbraco.Tests/Umbraco.Tests.csproj
@@ -175,10 +175,10 @@
-
-
-
-
+
+
+
+
@@ -188,12 +188,12 @@
-
+
-
+
@@ -244,8 +244,8 @@
-
-
+
+
@@ -320,9 +320,9 @@
-
-
-
+
+
+
@@ -332,8 +332,8 @@
-
-
+
+
@@ -430,7 +430,7 @@
-
+
@@ -515,7 +515,7 @@
ImportResources.resx
-
+
@@ -579,6 +579,7 @@
+
diff --git a/src/Umbraco.Tests/AngularIntegration/AngularAntiForgeryTests.cs b/src/Umbraco.Tests/Web/AngularIntegration/AngularAntiForgeryTests.cs
similarity index 84%
rename from src/Umbraco.Tests/AngularIntegration/AngularAntiForgeryTests.cs
rename to src/Umbraco.Tests/Web/AngularIntegration/AngularAntiForgeryTests.cs
index 4ae235b195..1503a1d43b 100644
--- a/src/Umbraco.Tests/AngularIntegration/AngularAntiForgeryTests.cs
+++ b/src/Umbraco.Tests/Web/AngularIntegration/AngularAntiForgeryTests.cs
@@ -1,20 +1,11 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
+using System.IO;
using System.Net;
-using System.Security.Claims;
using System.Security.Principal;
-using System.Text;
-using System.Threading.Tasks;
using System.Web;
-using System.Web.Security;
using NUnit.Framework;
-using Umbraco.Core.Security;
-using Umbraco.Tests.TestHelpers;
using Umbraco.Web.WebApi.Filters;
-namespace Umbraco.Tests.AngularIntegration
+namespace Umbraco.Tests.Web.AngularIntegration
{
[TestFixture]
public class AngularAntiForgeryTests
diff --git a/src/Umbraco.Tests/AngularIntegration/ContentModelSerializationTests.cs b/src/Umbraco.Tests/Web/AngularIntegration/ContentModelSerializationTests.cs
similarity index 93%
rename from src/Umbraco.Tests/AngularIntegration/ContentModelSerializationTests.cs
rename to src/Umbraco.Tests/Web/AngularIntegration/ContentModelSerializationTests.cs
index d19cc6e171..fdad2a9815 100644
--- a/src/Umbraco.Tests/AngularIntegration/ContentModelSerializationTests.cs
+++ b/src/Umbraco.Tests/Web/AngularIntegration/ContentModelSerializationTests.cs
@@ -1,80 +1,77 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using NUnit.Framework;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using Umbraco.Core;
-using Umbraco.Web.Models.ContentEditing;
-
-namespace Umbraco.Tests.AngularIntegration
-{
- [TestFixture]
- public class ContentModelSerializationTests
- {
- [Test]
- public void Content_Display_To_Json()
- {
- //create 3 tabs with 3 properties each
- var tabs = new List>();
- for (var tabIndex = 0; tabIndex < 3; tabIndex ++)
- {
- var props = new List();
- for (var propertyIndex = 0; propertyIndex < 3; propertyIndex ++)
- {
- props.Add(new ContentPropertyDisplay
- {
- Alias = "property" + propertyIndex,
- Label = "Property " + propertyIndex,
- Id = propertyIndex,
- Value = "value" + propertyIndex,
- Config = new Dictionary {{ propertyIndex.ToInvariantString(), "value" }},
- Description = "Description " + propertyIndex,
- View = "~/Views/View" + propertyIndex,
- HideLabel = false
- });
- }
- tabs.Add(new Tab()
- {
- Alias = "Tab" + tabIndex,
- Label = "Tab" + tabIndex,
- Properties = props
- });
- }
-
- var displayModel = new ContentItemDisplay
- {
- Id = 1234,
- Name = "Test",
- Tabs = tabs
- };
-
- var json = JsonConvert.SerializeObject(displayModel);
-
- var jObject = JObject.Parse(json);
-
- Assert.AreEqual("1234", jObject["id"].ToString());
- Assert.AreEqual("Test", jObject["name"].ToString());
- Assert.AreEqual(3, jObject["tabs"].Count());
- for (var tab = 0; tab < jObject["tabs"].Count(); tab++)
- {
- Assert.AreEqual("Tab" + tab, jObject["tabs"][tab]["alias"].ToString());
- Assert.AreEqual("Tab" + tab, jObject["tabs"][tab]["label"].ToString());
- Assert.AreEqual(3, jObject["tabs"][tab]["properties"].Count());
- for (var prop = 0; prop < jObject["tabs"][tab]["properties"].Count(); prop++)
- {
- Assert.AreEqual("property" + prop, jObject["tabs"][tab]["properties"][prop]["alias"].ToString());
- Assert.AreEqual("Property " + prop, jObject["tabs"][tab]["properties"][prop]["label"].ToString());
- Assert.AreEqual(prop, jObject["tabs"][tab]["properties"][prop]["id"].Value());
- Assert.AreEqual("value" + prop, jObject["tabs"][tab]["properties"][prop]["value"].ToString());
- Assert.AreEqual("{\"" + prop + "\":\"value\"}", jObject["tabs"][tab]["properties"][prop]["config"].ToString(Formatting.None));
- Assert.AreEqual("Description " + prop, jObject["tabs"][tab]["properties"][prop]["description"].ToString());
- Assert.AreEqual(false, jObject["tabs"][tab]["properties"][prop]["hideLabel"].Value());
- }
- }
- }
-
- }
-}
+using System.Collections.Generic;
+using System.Linq;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using NUnit.Framework;
+using Umbraco.Core;
+using Umbraco.Web.Models.ContentEditing;
+
+namespace Umbraco.Tests.Web.AngularIntegration
+{
+ [TestFixture]
+ public class ContentModelSerializationTests
+ {
+ [Test]
+ public void Content_Display_To_Json()
+ {
+ //create 3 tabs with 3 properties each
+ var tabs = new List>();
+ for (var tabIndex = 0; tabIndex < 3; tabIndex ++)
+ {
+ var props = new List();
+ for (var propertyIndex = 0; propertyIndex < 3; propertyIndex ++)
+ {
+ props.Add(new ContentPropertyDisplay
+ {
+ Alias = "property" + propertyIndex,
+ Label = "Property " + propertyIndex,
+ Id = propertyIndex,
+ Value = "value" + propertyIndex,
+ Config = new Dictionary {{ propertyIndex.ToInvariantString(), "value" }},
+ Description = "Description " + propertyIndex,
+ View = "~/Views/View" + propertyIndex,
+ HideLabel = false
+ });
+ }
+ tabs.Add(new Tab()
+ {
+ Alias = "Tab" + tabIndex,
+ Label = "Tab" + tabIndex,
+ Properties = props
+ });
+ }
+
+ var displayModel = new ContentItemDisplay
+ {
+ Id = 1234,
+ Name = "Test",
+ Tabs = tabs
+ };
+
+ var json = JsonConvert.SerializeObject(displayModel);
+
+ var jObject = JObject.Parse(json);
+
+ Assert.AreEqual("1234", jObject["id"].ToString());
+ Assert.AreEqual("Test", jObject["name"].ToString());
+ Assert.AreEqual(3, jObject["tabs"].Count());
+ for (var tab = 0; tab < jObject["tabs"].Count(); tab++)
+ {
+ Assert.AreEqual("Tab" + tab, jObject["tabs"][tab]["alias"].ToString());
+ Assert.AreEqual("Tab" + tab, jObject["tabs"][tab]["label"].ToString());
+ Assert.AreEqual(3, jObject["tabs"][tab]["properties"].Count());
+ for (var prop = 0; prop < jObject["tabs"][tab]["properties"].Count(); prop++)
+ {
+ Assert.AreEqual("property" + prop, jObject["tabs"][tab]["properties"][prop]["alias"].ToString());
+ Assert.AreEqual("Property " + prop, jObject["tabs"][tab]["properties"][prop]["label"].ToString());
+ Assert.AreEqual(prop, jObject["tabs"][tab]["properties"][prop]["id"].Value());
+ Assert.AreEqual("value" + prop, jObject["tabs"][tab]["properties"][prop]["value"].ToString());
+ Assert.AreEqual("{\"" + prop + "\":\"value\"}", jObject["tabs"][tab]["properties"][prop]["config"].ToString(Formatting.None));
+ Assert.AreEqual("Description " + prop, jObject["tabs"][tab]["properties"][prop]["description"].ToString());
+ Assert.AreEqual(false, jObject["tabs"][tab]["properties"][prop]["hideLabel"].Value());
+ }
+ }
+ }
+
+ }
+}
diff --git a/src/Umbraco.Tests/AngularIntegration/JsInitializationTests.cs b/src/Umbraco.Tests/Web/AngularIntegration/JsInitializationTests.cs
similarity index 73%
rename from src/Umbraco.Tests/AngularIntegration/JsInitializationTests.cs
rename to src/Umbraco.Tests/Web/AngularIntegration/JsInitializationTests.cs
index 1b3b14516d..22991d605a 100644
--- a/src/Umbraco.Tests/AngularIntegration/JsInitializationTests.cs
+++ b/src/Umbraco.Tests/Web/AngularIntegration/JsInitializationTests.cs
@@ -1,41 +1,35 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using NUnit.Framework;
-using Newtonsoft.Json.Linq;
-using Umbraco.Core.Manifest;
-using Umbraco.Web.UI.JavaScript;
-
-namespace Umbraco.Tests.AngularIntegration
-{
- [TestFixture]
- public class JsInitializationTests
- {
-
- [Test]
- public void Get_Default_Init()
- {
- var init = JsInitialization.GetDefaultInitialization();
- Assert.IsTrue(init.Any());
- }
-
- [Test]
- public void Parse_Main()
- {
- var result = JsInitialization.ParseMain(new[] {"[World]", "Hello" });
-
- Assert.AreEqual(@"LazyLoad.js([World], function () {
- //we need to set the legacy UmbClientMgr path
- UmbClientMgr.setUmbracoPath('Hello');
-
- jQuery(document).ready(function () {
-
- angular.bootstrap(document, ['umbraco']);
-
- });
-});", result);
- }
- }
-}
+using System.Linq;
+using NUnit.Framework;
+using Umbraco.Web.UI.JavaScript;
+
+namespace Umbraco.Tests.Web.AngularIntegration
+{
+ [TestFixture]
+ public class JsInitializationTests
+ {
+
+ [Test]
+ public void Get_Default_Init()
+ {
+ var init = JsInitialization.GetDefaultInitialization();
+ Assert.IsTrue(init.Any());
+ }
+
+ [Test]
+ public void Parse_Main()
+ {
+ var result = JsInitialization.ParseMain(new[] {"[World]", "Hello" });
+
+ Assert.AreEqual(@"LazyLoad.js([World], function () {
+ //we need to set the legacy UmbClientMgr path
+ UmbClientMgr.setUmbracoPath('Hello');
+
+ jQuery(document).ready(function () {
+
+ angular.bootstrap(document, ['umbraco']);
+
+ });
+});", result);
+ }
+ }
+}
diff --git a/src/Umbraco.Tests/AngularIntegration/ServerVariablesParserTests.cs b/src/Umbraco.Tests/Web/AngularIntegration/ServerVariablesParserTests.cs
similarity index 90%
rename from src/Umbraco.Tests/AngularIntegration/ServerVariablesParserTests.cs
rename to src/Umbraco.Tests/Web/AngularIntegration/ServerVariablesParserTests.cs
index 9a9aaa8173..b0fb91ab98 100644
--- a/src/Umbraco.Tests/AngularIntegration/ServerVariablesParserTests.cs
+++ b/src/Umbraco.Tests/Web/AngularIntegration/ServerVariablesParserTests.cs
@@ -1,33 +1,33 @@
-using System.Collections.Generic;
-using NUnit.Framework;
-using Umbraco.Web.UI.JavaScript;
-
-namespace Umbraco.Tests.AngularIntegration
-{
- [TestFixture]
- public class ServerVariablesParserTests
- {
-
-
- [Test]
- public void Parse()
- {
- var d = new Dictionary();
- d.Add("test1", "Test 1");
- d.Add("test2", "Test 2");
- d.Add("test3", "Test 3");
- d.Add("test4", "Test 4");
- d.Add("test5", "Test 5");
-
- var output = ServerVariablesParser.Parse(d);
-
- Assert.IsTrue(output.Contains(@"Umbraco.Sys.ServerVariables = {
- ""test1"": ""Test 1"",
- ""test2"": ""Test 2"",
- ""test3"": ""Test 3"",
- ""test4"": ""Test 4"",
- ""test5"": ""Test 5""
-} ;"));
- }
- }
+using System.Collections.Generic;
+using NUnit.Framework;
+using Umbraco.Web.UI.JavaScript;
+
+namespace Umbraco.Tests.Web.AngularIntegration
+{
+ [TestFixture]
+ public class ServerVariablesParserTests
+ {
+
+
+ [Test]
+ public void Parse()
+ {
+ var d = new Dictionary();
+ d.Add("test1", "Test 1");
+ d.Add("test2", "Test 2");
+ d.Add("test3", "Test 3");
+ d.Add("test4", "Test 4");
+ d.Add("test5", "Test 5");
+
+ var output = ServerVariablesParser.Parse(d);
+
+ Assert.IsTrue(output.Contains(@"Umbraco.Sys.ServerVariables = {
+ ""test1"": ""Test 1"",
+ ""test2"": ""Test 2"",
+ ""test3"": ""Test 3"",
+ ""test4"": ""Test 4"",
+ ""test5"": ""Test 5""
+} ;"));
+ }
+ }
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/Controllers/BackOfficeControllerUnitTests.cs b/src/Umbraco.Tests/Web/Controllers/BackOfficeControllerUnitTests.cs
similarity index 97%
rename from src/Umbraco.Tests/Controllers/BackOfficeControllerUnitTests.cs
rename to src/Umbraco.Tests/Web/Controllers/BackOfficeControllerUnitTests.cs
index 59626a1b9a..d068c2466a 100644
--- a/src/Umbraco.Tests/Controllers/BackOfficeControllerUnitTests.cs
+++ b/src/Umbraco.Tests/Web/Controllers/BackOfficeControllerUnitTests.cs
@@ -2,7 +2,7 @@
using NUnit.Framework;
using Umbraco.Web.Editors;
-namespace Umbraco.Tests.Controllers
+namespace Umbraco.Tests.Web.Controllers
{
[TestFixture]
public class BackOfficeControllerUnitTests
diff --git a/src/Umbraco.Tests/Controllers/PluginControllerAreaTests.cs b/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs
similarity index 98%
rename from src/Umbraco.Tests/Controllers/PluginControllerAreaTests.cs
rename to src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs
index a2ad7220a5..ce88f32131 100644
--- a/src/Umbraco.Tests/Controllers/PluginControllerAreaTests.cs
+++ b/src/Umbraco.Tests/Web/Controllers/PluginControllerAreaTests.cs
@@ -4,7 +4,7 @@ using Umbraco.Tests.TestHelpers;
using Umbraco.Web;
using Umbraco.Web.Mvc;
-namespace Umbraco.Tests.Controllers
+namespace Umbraco.Tests.Web.Controllers
{
[TestFixture]
public class PluginControllerAreaTests : BaseWebTest
diff --git a/src/Umbraco.Tests/Controllers/WebApiEditors/ContentControllerUnitTests.cs b/src/Umbraco.Tests/Web/Controllers/WebApiEditors/ContentControllerUnitTests.cs
similarity index 97%
rename from src/Umbraco.Tests/Controllers/WebApiEditors/ContentControllerUnitTests.cs
rename to src/Umbraco.Tests/Web/Controllers/WebApiEditors/ContentControllerUnitTests.cs
index 687fe05f09..4b78df671d 100644
--- a/src/Umbraco.Tests/Controllers/WebApiEditors/ContentControllerUnitTests.cs
+++ b/src/Umbraco.Tests/Web/Controllers/WebApiEditors/ContentControllerUnitTests.cs
@@ -1,366 +1,366 @@
-using System.Collections.Generic;
-using System.Web.Http;
-using Moq;
-using NUnit.Framework;
-using Umbraco.Core.Models;
-using Umbraco.Core.Models.Membership;
-using Umbraco.Core.Services;
-using Umbraco.Web.Editors;
-
-namespace Umbraco.Tests.Controllers.WebApiEditors
-{
- [TestFixture]
- public class ContentControllerUnitTests
- {
- [Test]
- public void Access_Allowed_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
- var contentMock = new Mock();
- contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
- var content = contentMock.Object;
- var contentServiceMock = new Mock();
- contentServiceMock.Setup(x => x.GetById(1234)).Returns(content);
- var contentService = contentServiceMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, null, contentService, 1234);
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void Throws_Exception_When_No_Content_Found()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
- var contentMock = new Mock();
- contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
- var content = contentMock.Object;
- var contentServiceMock = new Mock();
- contentServiceMock.Setup(x => x.GetById(0)).Returns(content);
- var contentService = contentServiceMock.Object;
- var userServiceMock = new Mock();
- var permissions = new List();
- userServiceMock.Setup(x => x.GetPermissions(user, 1234)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- //act/assert
- Assert.Throws(() => ContentController.CheckPermissions(new Dictionary(), user, userService, contentService, 1234, new[] { 'F' }));
- }
-
- [Test]
- public void No_Access_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartContentId).Returns(9876);
- var user = userMock.Object;
- var contentMock = new Mock();
- contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
- var content = contentMock.Object;
- var contentServiceMock = new Mock();
- contentServiceMock.Setup(x => x.GetById(1234)).Returns(content);
- var contentService = contentServiceMock.Object;
- var userServiceMock = new Mock();
- var permissions = new List();
- userServiceMock.Setup(x => x.GetPermissions(user, 1234)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, userService, contentService, 1234, new[] { 'F'});
-
- //assert
- Assert.IsFalse(result);
- }
-
- [Test]
- public void No_Access_By_Permission()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
- var contentMock = new Mock();
- contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
- var content = contentMock.Object;
- var contentServiceMock = new Mock();
- contentServiceMock.Setup(x => x.GetById(1234)).Returns(content);
- var contentService = contentServiceMock.Object;
- var userServiceMock = new Mock();
- var permissions = new List
- {
- new EntityPermission(9, 1234, new string[]{ "A", "B", "C" })
- };
- userServiceMock.Setup(x => x.GetPermissions(user, 1234)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, userService, contentService, 1234, new[] { 'F'});
-
- //assert
- Assert.IsFalse(result);
- }
-
- [Test]
- public void Access_Allowed_By_Permission()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
- var contentMock = new Mock();
- contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
- var content = contentMock.Object;
- var contentServiceMock = new Mock();
- contentServiceMock.Setup(x => x.GetById(1234)).Returns(content);
- var contentService = contentServiceMock.Object;
- var userServiceMock = new Mock();
- var permissions = new List
- {
- new EntityPermission(9, 1234, new string[]{ "A", "F", "C" })
- };
- userServiceMock.Setup(x => x.GetPermissions(user, 1234)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, userService, contentService, 1234, new[] { 'F'});
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void Access_To_Root_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, null, null, -1);
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void Access_To_Recycle_Bin_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, null, null, -20);
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void No_Access_To_Recycle_Bin_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartContentId).Returns(1234);
- var user = userMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, null, null, -20);
-
- //assert
- Assert.IsFalse(result);
- }
-
- [Test]
- public void No_Access_To_Root_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartContentId).Returns(1234);
- var user = userMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, null, null, -1);
-
- //assert
- Assert.IsFalse(result);
- }
-
- [Test]
- public void Access_To_Root_By_Permission()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
-
- var userServiceMock = new Mock();
- var permissions = new List
- {
- new EntityPermission(9, 1234, new string[]{ "A" })
- };
- userServiceMock.Setup(x => x.GetPermissions(user, -1)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, userService, null, -1, new[] { 'A'});
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void No_Access_To_Root_By_Permission()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
-
- var userServiceMock = new Mock();
- var permissions = new List
- {
- new EntityPermission(9, 1234, new string[]{ "A" })
- };
- userServiceMock.Setup(x => x.GetPermissions(user, -1)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, userService, null, -1, new[] { 'B'});
-
- //assert
- Assert.IsFalse(result);
- }
-
- [Test]
- public void Access_To_Recycle_Bin_By_Permission()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
-
- var userServiceMock = new Mock();
- var permissions = new List
- {
- new EntityPermission(9, 1234, new string[]{ "A" })
- };
- userServiceMock.Setup(x => x.GetPermissions(user, -20)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, userService, null, -20, new[] { 'A'});
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void No_Access_To_Recycle_Bin_By_Permission()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
-
- var userServiceMock = new Mock();
- var permissions = new List
- {
- new EntityPermission(9, 1234, new string[]{ "A" })
- };
- userServiceMock.Setup(x => x.GetPermissions(user, -20)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- //act
- var result = ContentController.CheckPermissions(new Dictionary(), user, userService, null, -20, new[] { 'B'});
-
- //assert
- Assert.IsFalse(result);
- }
-
- }
-
- //NOTE: The below self hosted stuff does work so need to get some tests written. Some are not possible atm because
- // of the legacy SQL calls like checking permissions.
-
- //[TestFixture]
- //public class ContentControllerHostedTests : BaseRoutingTest
- //{
-
- // protected override DatabaseBehavior DatabaseTestBehavior
- // {
- // get { return DatabaseBehavior.NoDatabasePerFixture; }
- // }
-
- // public override void TearDown()
- // {
- // base.TearDown();
- // UmbracoAuthorizeAttribute.Enable = true;
- // UmbracoApplicationAuthorizeAttribute.Enable = true;
- // }
-
- // ///
- // /// Tests to ensure that the response filter works so that any items the user
- // /// doesn't have access to are removed
- // ///
- // [Test]
- // public async void Get_By_Ids_Response_Filtered()
- // {
- // UmbracoAuthorizeAttribute.Enable = false;
- // UmbracoApplicationAuthorizeAttribute.Enable = false;
-
- // var baseUrl = string.Format("http://{0}:9876", Environment.MachineName);
- // var url = baseUrl + "/api/Content/GetByIds?ids=1&ids=2";
-
- // var routingCtx = GetRoutingContext(url, 1234, null, true);
-
- // var config = new HttpSelfHostConfiguration(baseUrl);
- // using (var server = new HttpSelfHostServer(config))
- // {
- // var route = config.Routes.MapHttpRoute("test", "api/Content/GetByIds",
- // new
- // {
- // controller = "Content",
- // action = "GetByIds",
- // id = RouteParameter.Optional
- // });
- // route.DataTokens["Namespaces"] = new string[] { "Umbraco.Web.Editors" };
-
- // var client = new HttpClient(server);
-
- // var request = new HttpRequestMessage
- // {
- // RequestUri = new Uri(url),
- // Method = HttpMethod.Get
- // };
-
- // var result = await client.SendAsync(request);
- // }
-
- // }
-
- //}
-}
+using System.Collections.Generic;
+using System.Web.Http;
+using Moq;
+using NUnit.Framework;
+using Umbraco.Core.Models;
+using Umbraco.Core.Models.Membership;
+using Umbraco.Core.Services;
+using Umbraco.Web.Editors;
+
+namespace Umbraco.Tests.Web.Controllers.WebApiEditors
+{
+ [TestFixture]
+ public class ContentControllerUnitTests
+ {
+ [Test]
+ public void Access_Allowed_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+ var contentMock = new Mock();
+ contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
+ var content = contentMock.Object;
+ var contentServiceMock = new Mock();
+ contentServiceMock.Setup(x => x.GetById(1234)).Returns(content);
+ var contentService = contentServiceMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, null, contentService, 1234);
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void Throws_Exception_When_No_Content_Found()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+ var contentMock = new Mock();
+ contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
+ var content = contentMock.Object;
+ var contentServiceMock = new Mock();
+ contentServiceMock.Setup(x => x.GetById(0)).Returns(content);
+ var contentService = contentServiceMock.Object;
+ var userServiceMock = new Mock();
+ var permissions = new List();
+ userServiceMock.Setup(x => x.GetPermissions(user, 1234)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ //act/assert
+ Assert.Throws(() => ContentController.CheckPermissions(new Dictionary(), user, userService, contentService, 1234, new[] { 'F' }));
+ }
+
+ [Test]
+ public void No_Access_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartContentId).Returns(9876);
+ var user = userMock.Object;
+ var contentMock = new Mock();
+ contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
+ var content = contentMock.Object;
+ var contentServiceMock = new Mock();
+ contentServiceMock.Setup(x => x.GetById(1234)).Returns(content);
+ var contentService = contentServiceMock.Object;
+ var userServiceMock = new Mock();
+ var permissions = new List();
+ userServiceMock.Setup(x => x.GetPermissions(user, 1234)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, userService, contentService, 1234, new[] { 'F'});
+
+ //assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void No_Access_By_Permission()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+ var contentMock = new Mock();
+ contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
+ var content = contentMock.Object;
+ var contentServiceMock = new Mock();
+ contentServiceMock.Setup(x => x.GetById(1234)).Returns(content);
+ var contentService = contentServiceMock.Object;
+ var userServiceMock = new Mock();
+ var permissions = new List
+ {
+ new EntityPermission(9, 1234, new string[]{ "A", "B", "C" })
+ };
+ userServiceMock.Setup(x => x.GetPermissions(user, 1234)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, userService, contentService, 1234, new[] { 'F'});
+
+ //assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void Access_Allowed_By_Permission()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+ var contentMock = new Mock();
+ contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
+ var content = contentMock.Object;
+ var contentServiceMock = new Mock();
+ contentServiceMock.Setup(x => x.GetById(1234)).Returns(content);
+ var contentService = contentServiceMock.Object;
+ var userServiceMock = new Mock();
+ var permissions = new List
+ {
+ new EntityPermission(9, 1234, new string[]{ "A", "F", "C" })
+ };
+ userServiceMock.Setup(x => x.GetPermissions(user, 1234)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, userService, contentService, 1234, new[] { 'F'});
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void Access_To_Root_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, null, null, -1);
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void Access_To_Recycle_Bin_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, null, null, -20);
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void No_Access_To_Recycle_Bin_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartContentId).Returns(1234);
+ var user = userMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, null, null, -20);
+
+ //assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void No_Access_To_Root_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartContentId).Returns(1234);
+ var user = userMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, null, null, -1);
+
+ //assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void Access_To_Root_By_Permission()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+
+ var userServiceMock = new Mock();
+ var permissions = new List
+ {
+ new EntityPermission(9, 1234, new string[]{ "A" })
+ };
+ userServiceMock.Setup(x => x.GetPermissions(user, -1)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, userService, null, -1, new[] { 'A'});
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void No_Access_To_Root_By_Permission()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+
+ var userServiceMock = new Mock();
+ var permissions = new List
+ {
+ new EntityPermission(9, 1234, new string[]{ "A" })
+ };
+ userServiceMock.Setup(x => x.GetPermissions(user, -1)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, userService, null, -1, new[] { 'B'});
+
+ //assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void Access_To_Recycle_Bin_By_Permission()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+
+ var userServiceMock = new Mock();
+ var permissions = new List
+ {
+ new EntityPermission(9, 1234, new string[]{ "A" })
+ };
+ userServiceMock.Setup(x => x.GetPermissions(user, -20)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, userService, null, -20, new[] { 'A'});
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void No_Access_To_Recycle_Bin_By_Permission()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+
+ var userServiceMock = new Mock();
+ var permissions = new List
+ {
+ new EntityPermission(9, 1234, new string[]{ "A" })
+ };
+ userServiceMock.Setup(x => x.GetPermissions(user, -20)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ //act
+ var result = ContentController.CheckPermissions(new Dictionary(), user, userService, null, -20, new[] { 'B'});
+
+ //assert
+ Assert.IsFalse(result);
+ }
+
+ }
+
+ //NOTE: The below self hosted stuff does work so need to get some tests written. Some are not possible atm because
+ // of the legacy SQL calls like checking permissions.
+
+ //[TestFixture]
+ //public class ContentControllerHostedTests : BaseRoutingTest
+ //{
+
+ // protected override DatabaseBehavior DatabaseTestBehavior
+ // {
+ // get { return DatabaseBehavior.NoDatabasePerFixture; }
+ // }
+
+ // public override void TearDown()
+ // {
+ // base.TearDown();
+ // UmbracoAuthorizeAttribute.Enable = true;
+ // UmbracoApplicationAuthorizeAttribute.Enable = true;
+ // }
+
+ // ///
+ // /// Tests to ensure that the response filter works so that any items the user
+ // /// doesn't have access to are removed
+ // ///
+ // [Test]
+ // public async void Get_By_Ids_Response_Filtered()
+ // {
+ // UmbracoAuthorizeAttribute.Enable = false;
+ // UmbracoApplicationAuthorizeAttribute.Enable = false;
+
+ // var baseUrl = string.Format("http://{0}:9876", Environment.MachineName);
+ // var url = baseUrl + "/api/Content/GetByIds?ids=1&ids=2";
+
+ // var routingCtx = GetRoutingContext(url, 1234, null, true);
+
+ // var config = new HttpSelfHostConfiguration(baseUrl);
+ // using (var server = new HttpSelfHostServer(config))
+ // {
+ // var route = config.Routes.MapHttpRoute("test", "api/Content/GetByIds",
+ // new
+ // {
+ // controller = "Content",
+ // action = "GetByIds",
+ // id = RouteParameter.Optional
+ // });
+ // route.DataTokens["Namespaces"] = new string[] { "Umbraco.Web.Editors" };
+
+ // var client = new HttpClient(server);
+
+ // var request = new HttpRequestMessage
+ // {
+ // RequestUri = new Uri(url),
+ // Method = HttpMethod.Get
+ // };
+
+ // var result = await client.SendAsync(request);
+ // }
+
+ // }
+
+ //}
+}
diff --git a/src/Umbraco.Tests/Controllers/WebApiEditors/FilterAllowedOutgoingContentAttributeTests.cs b/src/Umbraco.Tests/Web/Controllers/WebApiEditors/FilterAllowedOutgoingContentAttributeTests.cs
similarity index 96%
rename from src/Umbraco.Tests/Controllers/WebApiEditors/FilterAllowedOutgoingContentAttributeTests.cs
rename to src/Umbraco.Tests/Web/Controllers/WebApiEditors/FilterAllowedOutgoingContentAttributeTests.cs
index c0076f17fb..1ebe2fc748 100644
--- a/src/Umbraco.Tests/Controllers/WebApiEditors/FilterAllowedOutgoingContentAttributeTests.cs
+++ b/src/Umbraco.Tests/Web/Controllers/WebApiEditors/FilterAllowedOutgoingContentAttributeTests.cs
@@ -1,136 +1,136 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Http;
-using System.Net.Http.Formatting;
-using System.Net.Http.Headers;
-using Moq;
-using NUnit.Framework;
-using Umbraco.Core;
-using Umbraco.Core.Models.Membership;
-using Umbraco.Core.Services;
-using Umbraco.Web.Models.ContentEditing;
-using Umbraco.Web.WebApi.Filters;
-
-namespace Umbraco.Tests.Controllers.WebApiEditors
-{
- [TestFixture]
- public class FilterAllowedOutgoingContentAttributeTests
- {
- [Test]
- public void GetValueFromResponse_Already_EnumerableContent()
- {
- var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable));
- var val = new List() {new ContentItemBasic()};
- var result = att.GetValueFromResponse(
- new ObjectContent(typeof (IEnumerable),
- val,
- new JsonMediaTypeFormatter(),
- new MediaTypeHeaderValue("html/text")));
-
- Assert.AreEqual(val, result);
- Assert.AreEqual(1, ((IEnumerable)result).Count());
- }
-
- [Test]
- public void GetValueFromResponse_From_Property()
- {
- var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable), "MyList");
- var val = new List() { new ContentItemBasic() };
- var container = new MyTestClass() {MyList = val};
-
- var result = att.GetValueFromResponse(
- new ObjectContent(typeof(MyTestClass),
- container,
- new JsonMediaTypeFormatter(),
- new MediaTypeHeaderValue("html/text")));
-
- Assert.AreEqual(val, result);
- Assert.AreEqual(1, ((IEnumerable)result).Count());
- }
-
- [Test]
- public void GetValueFromResponse_Returns_Null_Not_Found_Property()
- {
- var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable), "DontFind");
- var val = new List() { new ContentItemBasic() };
- var container = new MyTestClass() { MyList = val };
-
- var result = att.GetValueFromResponse(
- new ObjectContent(typeof(MyTestClass),
- container,
- new JsonMediaTypeFormatter(),
- new MediaTypeHeaderValue("html/text")));
-
- Assert.AreEqual(null, result);
-
- }
-
- [Test]
- public void Filter_On_Start_Node()
- {
- var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable));
- var list = new List();
- var path = "";
- for (var i = 0; i < 10; i++)
- {
- if (i > 0 && path.EndsWith(",") == false)
- {
- path += ",";
- }
- path += i.ToInvariantString();
- list.Add(new ContentItemBasic { Id = i, Name = "Test" + i, ParentId = i, Path = path });
- }
-
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartContentId).Returns(5);
- var user = userMock.Object;
-
- att.FilterBasedOnStartNode(list, user);
-
- Assert.AreEqual(5, list.Count);
-
- }
-
- [Test]
- public void Filter_On_Permissions()
- {
- var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable));
- var list = new List();
- for (var i = 0; i < 10; i++)
- {
- list.Add(new ContentItemBasic{Id = i, Name = "Test" + i, ParentId = -1});
- }
- var ids = list.Select(x => (int)x.Id).ToArray();
-
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartContentId).Returns(-1);
- var user = userMock.Object;
-
- var userServiceMock = new Mock();
- //we're only assigning 3 nodes browse permissions so that is what we expect as a result
- var permissions = new List
- {
- new EntityPermission(9, 1, new string[]{ "F" }),
- new EntityPermission(9, 2, new string[]{ "F" }),
- new EntityPermission(9, 3, new string[]{ "F" }),
- new EntityPermission(9, 4, new string[]{ "A" })
- };
- userServiceMock.Setup(x => x.GetPermissions(user, ids)).Returns(permissions);
- var userService = userServiceMock.Object;
-
- att.FilterBasedOnPermissions(list, user, userService);
-
- Assert.AreEqual(3, list.Count);
- Assert.AreEqual(1, list.ElementAt(0).Id);
- Assert.AreEqual(2, list.ElementAt(1).Id);
- Assert.AreEqual(3, list.ElementAt(2).Id);
- }
-
- private class MyTestClass
- {
- public IEnumerable MyList { get; set; }
- }
- }
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.Http;
+using System.Net.Http.Formatting;
+using System.Net.Http.Headers;
+using Moq;
+using NUnit.Framework;
+using Umbraco.Core;
+using Umbraco.Core.Models.Membership;
+using Umbraco.Core.Services;
+using Umbraco.Web.Models.ContentEditing;
+using Umbraco.Web.WebApi.Filters;
+
+namespace Umbraco.Tests.Web.Controllers.WebApiEditors
+{
+ [TestFixture]
+ public class FilterAllowedOutgoingContentAttributeTests
+ {
+ [Test]
+ public void GetValueFromResponse_Already_EnumerableContent()
+ {
+ var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable));
+ var val = new List() {new ContentItemBasic()};
+ var result = att.GetValueFromResponse(
+ new ObjectContent(typeof (IEnumerable),
+ val,
+ new JsonMediaTypeFormatter(),
+ new MediaTypeHeaderValue("html/text")));
+
+ Assert.AreEqual(val, result);
+ Assert.AreEqual(1, ((IEnumerable)result).Count());
+ }
+
+ [Test]
+ public void GetValueFromResponse_From_Property()
+ {
+ var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable), "MyList");
+ var val = new List() { new ContentItemBasic() };
+ var container = new MyTestClass() {MyList = val};
+
+ var result = att.GetValueFromResponse(
+ new ObjectContent(typeof(MyTestClass),
+ container,
+ new JsonMediaTypeFormatter(),
+ new MediaTypeHeaderValue("html/text")));
+
+ Assert.AreEqual(val, result);
+ Assert.AreEqual(1, ((IEnumerable)result).Count());
+ }
+
+ [Test]
+ public void GetValueFromResponse_Returns_Null_Not_Found_Property()
+ {
+ var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable), "DontFind");
+ var val = new List() { new ContentItemBasic() };
+ var container = new MyTestClass() { MyList = val };
+
+ var result = att.GetValueFromResponse(
+ new ObjectContent(typeof(MyTestClass),
+ container,
+ new JsonMediaTypeFormatter(),
+ new MediaTypeHeaderValue("html/text")));
+
+ Assert.AreEqual(null, result);
+
+ }
+
+ [Test]
+ public void Filter_On_Start_Node()
+ {
+ var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable));
+ var list = new List();
+ var path = "";
+ for (var i = 0; i < 10; i++)
+ {
+ if (i > 0 && path.EndsWith(",") == false)
+ {
+ path += ",";
+ }
+ path += i.ToInvariantString();
+ list.Add(new ContentItemBasic { Id = i, Name = "Test" + i, ParentId = i, Path = path });
+ }
+
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartContentId).Returns(5);
+ var user = userMock.Object;
+
+ att.FilterBasedOnStartNode(list, user);
+
+ Assert.AreEqual(5, list.Count);
+
+ }
+
+ [Test]
+ public void Filter_On_Permissions()
+ {
+ var att = new FilterAllowedOutgoingContentAttribute(typeof(IEnumerable));
+ var list = new List();
+ for (var i = 0; i < 10; i++)
+ {
+ list.Add(new ContentItemBasic{Id = i, Name = "Test" + i, ParentId = -1});
+ }
+ var ids = list.Select(x => (int)x.Id).ToArray();
+
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartContentId).Returns(-1);
+ var user = userMock.Object;
+
+ var userServiceMock = new Mock();
+ //we're only assigning 3 nodes browse permissions so that is what we expect as a result
+ var permissions = new List
+ {
+ new EntityPermission(9, 1, new string[]{ "F" }),
+ new EntityPermission(9, 2, new string[]{ "F" }),
+ new EntityPermission(9, 3, new string[]{ "F" }),
+ new EntityPermission(9, 4, new string[]{ "A" })
+ };
+ userServiceMock.Setup(x => x.GetPermissions(user, ids)).Returns(permissions);
+ var userService = userServiceMock.Object;
+
+ att.FilterBasedOnPermissions(list, user, userService);
+
+ Assert.AreEqual(3, list.Count);
+ Assert.AreEqual(1, list.ElementAt(0).Id);
+ Assert.AreEqual(2, list.ElementAt(1).Id);
+ Assert.AreEqual(3, list.ElementAt(2).Id);
+ }
+
+ private class MyTestClass
+ {
+ public IEnumerable MyList { get; set; }
+ }
+ }
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/Controllers/WebApiEditors/MediaControllerUnitTests.cs b/src/Umbraco.Tests/Web/Controllers/WebApiEditors/MediaControllerUnitTests.cs
similarity index 96%
rename from src/Umbraco.Tests/Controllers/WebApiEditors/MediaControllerUnitTests.cs
rename to src/Umbraco.Tests/Web/Controllers/WebApiEditors/MediaControllerUnitTests.cs
index c426b35b9c..2d5420409c 100644
--- a/src/Umbraco.Tests/Controllers/WebApiEditors/MediaControllerUnitTests.cs
+++ b/src/Umbraco.Tests/Web/Controllers/WebApiEditors/MediaControllerUnitTests.cs
@@ -1,142 +1,142 @@
-using System.Collections.Generic;
-using System.Web.Http;
-using Moq;
-using NUnit.Framework;
-using Umbraco.Core.Models;
-using Umbraco.Core.Models.Membership;
-using Umbraco.Core.Services;
-using Umbraco.Web.Editors;
-
-namespace Umbraco.Tests.Controllers.WebApiEditors
-{
- [TestFixture]
- public class MediaControllerUnitTests
- {
- [Test]
- public void Access_Allowed_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartMediaId).Returns(-1);
- var user = userMock.Object;
- var mediaMock = new Mock();
- mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
- var media = mediaMock.Object;
- var mediaServiceMock = new Mock();
- mediaServiceMock.Setup(x => x.GetById(1234)).Returns(media);
- var mediaService = mediaServiceMock.Object;
-
- //act
- var result = MediaController.CheckPermissions(new Dictionary(), user, mediaService, 1234);
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void Throws_Exception_When_No_Media_Found()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartMediaId).Returns(-1);
- var user = userMock.Object;
- var mediaMock = new Mock();
- mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
- var media = mediaMock.Object;
- var mediaServiceMock = new Mock();
- mediaServiceMock.Setup(x => x.GetById(0)).Returns(media);
- var mediaService = mediaServiceMock.Object;
-
- //act/assert
- Assert.Throws(() => MediaController.CheckPermissions(new Dictionary(), user, mediaService, 1234));
- }
-
- [Test]
- public void No_Access_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(9);
- userMock.Setup(u => u.StartMediaId).Returns(9876);
- var user = userMock.Object;
- var mediaMock = new Mock();
- mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
- var media = mediaMock.Object;
- var mediaServiceMock = new Mock();
- mediaServiceMock.Setup(x => x.GetById(1234)).Returns(media);
- var mediaService = mediaServiceMock.Object;
-
- //act
- var result = MediaController.CheckPermissions(new Dictionary(), user, mediaService, 1234);
-
- //assert
- Assert.IsFalse(result);
- }
-
- [Test]
- public void Access_To_Root_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartMediaId).Returns(-1);
- var user = userMock.Object;
-
- //act
- var result = MediaController.CheckPermissions(new Dictionary(), user, null, -1);
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void No_Access_To_Root_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartMediaId).Returns(1234);
- var user = userMock.Object;
-
- //act
- var result = MediaController.CheckPermissions(new Dictionary(), user, null, -1);
-
- //assert
- Assert.IsFalse(result);
- }
-
- [Test]
- public void Access_To_Recycle_Bin_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartMediaId).Returns(-1);
- var user = userMock.Object;
-
- //act
- var result = MediaController.CheckPermissions(new Dictionary(), user, null, -21);
-
- //assert
- Assert.IsTrue(result);
- }
-
- [Test]
- public void No_Access_To_Recycle_Bin_By_Path()
- {
- //arrange
- var userMock = new Mock();
- userMock.Setup(u => u.Id).Returns(0);
- userMock.Setup(u => u.StartMediaId).Returns(1234);
- var user = userMock.Object;
-
- //act
- var result = MediaController.CheckPermissions(new Dictionary(), user, null, -21);
-
- //assert
- Assert.IsFalse(result);
- }
- }
+using System.Collections.Generic;
+using System.Web.Http;
+using Moq;
+using NUnit.Framework;
+using Umbraco.Core.Models;
+using Umbraco.Core.Models.Membership;
+using Umbraco.Core.Services;
+using Umbraco.Web.Editors;
+
+namespace Umbraco.Tests.Web.Controllers.WebApiEditors
+{
+ [TestFixture]
+ public class MediaControllerUnitTests
+ {
+ [Test]
+ public void Access_Allowed_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartMediaId).Returns(-1);
+ var user = userMock.Object;
+ var mediaMock = new Mock();
+ mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
+ var media = mediaMock.Object;
+ var mediaServiceMock = new Mock();
+ mediaServiceMock.Setup(x => x.GetById(1234)).Returns(media);
+ var mediaService = mediaServiceMock.Object;
+
+ //act
+ var result = MediaController.CheckPermissions(new Dictionary(), user, mediaService, 1234);
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void Throws_Exception_When_No_Media_Found()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartMediaId).Returns(-1);
+ var user = userMock.Object;
+ var mediaMock = new Mock();
+ mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
+ var media = mediaMock.Object;
+ var mediaServiceMock = new Mock();
+ mediaServiceMock.Setup(x => x.GetById(0)).Returns(media);
+ var mediaService = mediaServiceMock.Object;
+
+ //act/assert
+ Assert.Throws(() => MediaController.CheckPermissions(new Dictionary(), user, mediaService, 1234));
+ }
+
+ [Test]
+ public void No_Access_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(9);
+ userMock.Setup(u => u.StartMediaId).Returns(9876);
+ var user = userMock.Object;
+ var mediaMock = new Mock();
+ mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
+ var media = mediaMock.Object;
+ var mediaServiceMock = new Mock();
+ mediaServiceMock.Setup(x => x.GetById(1234)).Returns(media);
+ var mediaService = mediaServiceMock.Object;
+
+ //act
+ var result = MediaController.CheckPermissions(new Dictionary(), user, mediaService, 1234);
+
+ //assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void Access_To_Root_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartMediaId).Returns(-1);
+ var user = userMock.Object;
+
+ //act
+ var result = MediaController.CheckPermissions(new Dictionary(), user, null, -1);
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void No_Access_To_Root_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartMediaId).Returns(1234);
+ var user = userMock.Object;
+
+ //act
+ var result = MediaController.CheckPermissions(new Dictionary(), user, null, -1);
+
+ //assert
+ Assert.IsFalse(result);
+ }
+
+ [Test]
+ public void Access_To_Recycle_Bin_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartMediaId).Returns(-1);
+ var user = userMock.Object;
+
+ //act
+ var result = MediaController.CheckPermissions(new Dictionary(), user, null, -21);
+
+ //assert
+ Assert.IsTrue(result);
+ }
+
+ [Test]
+ public void No_Access_To_Recycle_Bin_By_Path()
+ {
+ //arrange
+ var userMock = new Mock();
+ userMock.Setup(u => u.Id).Returns(0);
+ userMock.Setup(u => u.StartMediaId).Returns(1234);
+ var user = userMock.Object;
+
+ //act
+ var result = MediaController.CheckPermissions(new Dictionary(), user, null, -21);
+
+ //assert
+ Assert.IsFalse(result);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/Mvc/HtmlHelperExtensionMethodsTests.cs b/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs
similarity index 95%
rename from src/Umbraco.Tests/Mvc/HtmlHelperExtensionMethodsTests.cs
rename to src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs
index beb51fa651..adf5772f76 100644
--- a/src/Umbraco.Tests/Mvc/HtmlHelperExtensionMethodsTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/HtmlHelperExtensionMethodsTests.cs
@@ -2,7 +2,7 @@ using System.Web.Mvc;
using NUnit.Framework;
using Umbraco.Web;
-namespace Umbraco.Tests.Mvc
+namespace Umbraco.Tests.Web.Mvc
{
[TestFixture]
public class HtmlHelperExtensionMethodsTests
diff --git a/src/Umbraco.Tests/Mvc/MergeParentContextViewDataAttributeTests.cs b/src/Umbraco.Tests/Web/Mvc/MergeParentContextViewDataAttributeTests.cs
similarity index 97%
rename from src/Umbraco.Tests/Mvc/MergeParentContextViewDataAttributeTests.cs
rename to src/Umbraco.Tests/Web/Mvc/MergeParentContextViewDataAttributeTests.cs
index 2a7a05420c..8358a1a768 100644
--- a/src/Umbraco.Tests/Mvc/MergeParentContextViewDataAttributeTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/MergeParentContextViewDataAttributeTests.cs
@@ -1,86 +1,86 @@
-using System.Web.Mvc;
-using System.Web.Routing;
-using NUnit.Framework;
-using Umbraco.Tests.TestHelpers;
-using Umbraco.Web.Mvc;
-
-namespace Umbraco.Tests.Mvc
-{
- [TestFixture]
- public class MergeParentContextViewDataAttributeTests
- {
- [Test]
- public void Ensure_All_Ancestor_ViewData_Is_Merged()
- {
- var http = new FakeHttpContextFactory("http://localhost");
-
- //setup an heirarchy
- var rootViewCtx = new ViewContext {Controller = new MyController(), RequestContext = http.RequestContext, ViewData = new ViewDataDictionary()};
- var parentViewCtx = new ViewContext { Controller = new MyController(), RequestContext = http.RequestContext, RouteData = new RouteData(), ViewData = new ViewDataDictionary() };
- parentViewCtx.RouteData.DataTokens.Add("ParentActionViewContext", rootViewCtx);
- var controllerCtx = new ControllerContext(http.RequestContext, new MyController()) {RouteData = new RouteData()};
- controllerCtx.RouteData.DataTokens.Add("ParentActionViewContext", parentViewCtx);
-
- //set up the view data
- controllerCtx.Controller.ViewData["Test1"] = "Test1";
- controllerCtx.Controller.ViewData["Test2"] = "Test2";
- controllerCtx.Controller.ViewData["Test3"] = "Test3";
- parentViewCtx.ViewData["Test4"] = "Test4";
- parentViewCtx.ViewData["Test5"] = "Test5";
- parentViewCtx.ViewData["Test6"] = "Test6";
- rootViewCtx.ViewData["Test7"] = "Test7";
- rootViewCtx.ViewData["Test8"] = "Test8";
- rootViewCtx.ViewData["Test9"] = "Test9";
-
- var filter = new ResultExecutingContext(controllerCtx, new ContentResult()) {RouteData = controllerCtx.RouteData};
- var att = new MergeParentContextViewDataAttribute();
-
- Assert.IsTrue(filter.IsChildAction);
- att.OnResultExecuting(filter);
-
- Assert.AreEqual(9, controllerCtx.Controller.ViewData.Count);
- }
-
- [Test]
- public void Ensure_All_Ancestor_ViewData_Is_Merged_Without_Data_Loss()
- {
- var http = new FakeHttpContextFactory("http://localhost");
-
- //setup an heirarchy
- var rootViewCtx = new ViewContext { Controller = new MyController(), RequestContext = http.RequestContext, ViewData = new ViewDataDictionary() };
- var parentViewCtx = new ViewContext { Controller = new MyController(), RequestContext = http.RequestContext, RouteData = new RouteData(), ViewData = new ViewDataDictionary() };
- parentViewCtx.RouteData.DataTokens.Add("ParentActionViewContext", rootViewCtx);
- var controllerCtx = new ControllerContext(http.RequestContext, new MyController()) { RouteData = new RouteData() };
- controllerCtx.RouteData.DataTokens.Add("ParentActionViewContext", parentViewCtx);
-
- //set up the view data with overlapping keys
- controllerCtx.Controller.ViewData["Test1"] = "Test1";
- controllerCtx.Controller.ViewData["Test2"] = "Test2";
- controllerCtx.Controller.ViewData["Test3"] = "Test3";
- parentViewCtx.ViewData["Test2"] = "Test4";
- parentViewCtx.ViewData["Test3"] = "Test5";
- parentViewCtx.ViewData["Test4"] = "Test6";
- rootViewCtx.ViewData["Test3"] = "Test7";
- rootViewCtx.ViewData["Test4"] = "Test8";
- rootViewCtx.ViewData["Test5"] = "Test9";
-
- var filter = new ResultExecutingContext(controllerCtx, new ContentResult()) { RouteData = controllerCtx.RouteData };
- var att = new MergeParentContextViewDataAttribute();
-
- Assert.IsTrue(filter.IsChildAction);
- att.OnResultExecuting(filter);
-
- Assert.AreEqual(5, controllerCtx.Controller.ViewData.Count);
- Assert.AreEqual("Test1", controllerCtx.Controller.ViewData["Test1"]);
- Assert.AreEqual("Test2", controllerCtx.Controller.ViewData["Test2"]);
- Assert.AreEqual("Test3", controllerCtx.Controller.ViewData["Test3"]);
- Assert.AreEqual("Test6", controllerCtx.Controller.ViewData["Test4"]);
- Assert.AreEqual("Test9", controllerCtx.Controller.ViewData["Test5"]);
- }
-
- internal class MyController : Controller
- {
-
- }
- }
+using System.Web.Mvc;
+using System.Web.Routing;
+using NUnit.Framework;
+using Umbraco.Tests.TestHelpers;
+using Umbraco.Web.Mvc;
+
+namespace Umbraco.Tests.Web.Mvc
+{
+ [TestFixture]
+ public class MergeParentContextViewDataAttributeTests
+ {
+ [Test]
+ public void Ensure_All_Ancestor_ViewData_Is_Merged()
+ {
+ var http = new FakeHttpContextFactory("http://localhost");
+
+ //setup an heirarchy
+ var rootViewCtx = new ViewContext {Controller = new MyController(), RequestContext = http.RequestContext, ViewData = new ViewDataDictionary()};
+ var parentViewCtx = new ViewContext { Controller = new MyController(), RequestContext = http.RequestContext, RouteData = new RouteData(), ViewData = new ViewDataDictionary() };
+ parentViewCtx.RouteData.DataTokens.Add("ParentActionViewContext", rootViewCtx);
+ var controllerCtx = new ControllerContext(http.RequestContext, new MyController()) {RouteData = new RouteData()};
+ controllerCtx.RouteData.DataTokens.Add("ParentActionViewContext", parentViewCtx);
+
+ //set up the view data
+ controllerCtx.Controller.ViewData["Test1"] = "Test1";
+ controllerCtx.Controller.ViewData["Test2"] = "Test2";
+ controllerCtx.Controller.ViewData["Test3"] = "Test3";
+ parentViewCtx.ViewData["Test4"] = "Test4";
+ parentViewCtx.ViewData["Test5"] = "Test5";
+ parentViewCtx.ViewData["Test6"] = "Test6";
+ rootViewCtx.ViewData["Test7"] = "Test7";
+ rootViewCtx.ViewData["Test8"] = "Test8";
+ rootViewCtx.ViewData["Test9"] = "Test9";
+
+ var filter = new ResultExecutingContext(controllerCtx, new ContentResult()) {RouteData = controllerCtx.RouteData};
+ var att = new MergeParentContextViewDataAttribute();
+
+ Assert.IsTrue(filter.IsChildAction);
+ att.OnResultExecuting(filter);
+
+ Assert.AreEqual(9, controllerCtx.Controller.ViewData.Count);
+ }
+
+ [Test]
+ public void Ensure_All_Ancestor_ViewData_Is_Merged_Without_Data_Loss()
+ {
+ var http = new FakeHttpContextFactory("http://localhost");
+
+ //setup an heirarchy
+ var rootViewCtx = new ViewContext { Controller = new MyController(), RequestContext = http.RequestContext, ViewData = new ViewDataDictionary() };
+ var parentViewCtx = new ViewContext { Controller = new MyController(), RequestContext = http.RequestContext, RouteData = new RouteData(), ViewData = new ViewDataDictionary() };
+ parentViewCtx.RouteData.DataTokens.Add("ParentActionViewContext", rootViewCtx);
+ var controllerCtx = new ControllerContext(http.RequestContext, new MyController()) { RouteData = new RouteData() };
+ controllerCtx.RouteData.DataTokens.Add("ParentActionViewContext", parentViewCtx);
+
+ //set up the view data with overlapping keys
+ controllerCtx.Controller.ViewData["Test1"] = "Test1";
+ controllerCtx.Controller.ViewData["Test2"] = "Test2";
+ controllerCtx.Controller.ViewData["Test3"] = "Test3";
+ parentViewCtx.ViewData["Test2"] = "Test4";
+ parentViewCtx.ViewData["Test3"] = "Test5";
+ parentViewCtx.ViewData["Test4"] = "Test6";
+ rootViewCtx.ViewData["Test3"] = "Test7";
+ rootViewCtx.ViewData["Test4"] = "Test8";
+ rootViewCtx.ViewData["Test5"] = "Test9";
+
+ var filter = new ResultExecutingContext(controllerCtx, new ContentResult()) { RouteData = controllerCtx.RouteData };
+ var att = new MergeParentContextViewDataAttribute();
+
+ Assert.IsTrue(filter.IsChildAction);
+ att.OnResultExecuting(filter);
+
+ Assert.AreEqual(5, controllerCtx.Controller.ViewData.Count);
+ Assert.AreEqual("Test1", controllerCtx.Controller.ViewData["Test1"]);
+ Assert.AreEqual("Test2", controllerCtx.Controller.ViewData["Test2"]);
+ Assert.AreEqual("Test3", controllerCtx.Controller.ViewData["Test3"]);
+ Assert.AreEqual("Test6", controllerCtx.Controller.ViewData["Test4"]);
+ Assert.AreEqual("Test9", controllerCtx.Controller.ViewData["Test5"]);
+ }
+
+ internal class MyController : Controller
+ {
+
+ }
+ }
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/Mvc/RenderIndexActionSelectorAttributeTests.cs b/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs
similarity index 99%
rename from src/Umbraco.Tests/Mvc/RenderIndexActionSelectorAttributeTests.cs
rename to src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs
index 3f327d3155..f99272ad85 100644
--- a/src/Umbraco.Tests/Mvc/RenderIndexActionSelectorAttributeTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/RenderIndexActionSelectorAttributeTests.cs
@@ -17,7 +17,7 @@ using Umbraco.Web.Mvc;
using Umbraco.Web.Routing;
using Umbraco.Web.Security;
-namespace Umbraco.Tests.Mvc
+namespace Umbraco.Tests.Web.Mvc
{
[TestFixture]
public class RenderIndexActionSelectorAttributeTests
diff --git a/src/Umbraco.Tests/Mvc/SurfaceControllerTests.cs b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
similarity index 98%
rename from src/Umbraco.Tests/Mvc/SurfaceControllerTests.cs
rename to src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
index 29a76b29d2..7c5921c67a 100644
--- a/src/Umbraco.Tests/Mvc/SurfaceControllerTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/SurfaceControllerTests.cs
@@ -1,5 +1,4 @@
using System;
-using System.CodeDom;
using System.Linq;
using System.Web;
using System.Web.Mvc;
@@ -12,7 +11,6 @@ using Umbraco.Core.Configuration.UmbracoSettings;
using Umbraco.Core.Dictionary;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
-using Umbraco.Core.ObjectResolution;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.SqlSyntax;
using Umbraco.Core.Profiling;
@@ -20,11 +18,10 @@ using Umbraco.Core.Services;
using Umbraco.Tests.TestHelpers;
using Umbraco.Web;
using Umbraco.Web.Mvc;
-using Umbraco.Web.PublishedCache;
using Umbraco.Web.Routing;
using Umbraco.Web.Security;
-namespace Umbraco.Tests.Mvc
+namespace Umbraco.Tests.Web.Mvc
{
[TestFixture]
public class SurfaceControllerTests
diff --git a/src/Umbraco.Tests/Mvc/UmbracoViewPageTests.cs b/src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs
similarity index 100%
rename from src/Umbraco.Tests/Mvc/UmbracoViewPageTests.cs
rename to src/Umbraco.Tests/Web/Mvc/UmbracoViewPageTests.cs
diff --git a/src/Umbraco.Tests/Mvc/ViewDataDictionaryExtensionTests.cs b/src/Umbraco.Tests/Web/Mvc/ViewDataDictionaryExtensionTests.cs
similarity index 87%
rename from src/Umbraco.Tests/Mvc/ViewDataDictionaryExtensionTests.cs
rename to src/Umbraco.Tests/Web/Mvc/ViewDataDictionaryExtensionTests.cs
index 4c06d30796..869fd1b329 100644
--- a/src/Umbraco.Tests/Mvc/ViewDataDictionaryExtensionTests.cs
+++ b/src/Umbraco.Tests/Web/Mvc/ViewDataDictionaryExtensionTests.cs
@@ -1,42 +1,40 @@
-using System.Collections.Generic;
-using System.Text;
-using System.Web.Mvc;
-using NUnit.Framework;
-using Umbraco.Web.Mvc;
-
-namespace Umbraco.Tests.Mvc
-{
- [TestFixture]
- public class ViewDataDictionaryExtensionTests
- {
- [Test]
- public void Merge_View_Data()
- {
- var source = new ViewDataDictionary();
- var dest = new ViewDataDictionary();
- source.Add("Test1", "Test1");
- dest.Add("Test2", "Test2");
-
- dest.MergeViewDataFrom(source);
-
- Assert.AreEqual(2, dest.Count);
- }
-
- [Test]
- public void Merge_View_Data_Retains_Destination_Values()
- {
- var source = new ViewDataDictionary();
- var dest = new ViewDataDictionary();
- source.Add("Test1", "Test1");
- dest.Add("Test1", "MyValue");
- dest.Add("Test2", "Test2");
-
- dest.MergeViewDataFrom(source);
-
- Assert.AreEqual(2, dest.Count);
- Assert.AreEqual("MyValue", dest["Test1"]);
- Assert.AreEqual("Test2", dest["Test2"]);
- }
-
- }
-}
+using System.Web.Mvc;
+using NUnit.Framework;
+using Umbraco.Web.Mvc;
+
+namespace Umbraco.Tests.Web.Mvc
+{
+ [TestFixture]
+ public class ViewDataDictionaryExtensionTests
+ {
+ [Test]
+ public void Merge_View_Data()
+ {
+ var source = new ViewDataDictionary();
+ var dest = new ViewDataDictionary();
+ source.Add("Test1", "Test1");
+ dest.Add("Test2", "Test2");
+
+ dest.MergeViewDataFrom(source);
+
+ Assert.AreEqual(2, dest.Count);
+ }
+
+ [Test]
+ public void Merge_View_Data_Retains_Destination_Values()
+ {
+ var source = new ViewDataDictionary();
+ var dest = new ViewDataDictionary();
+ source.Add("Test1", "Test1");
+ dest.Add("Test1", "MyValue");
+ dest.Add("Test2", "Test2");
+
+ dest.MergeViewDataFrom(source);
+
+ Assert.AreEqual(2, dest.Count);
+ Assert.AreEqual("MyValue", dest["Test1"]);
+ Assert.AreEqual("Test2", dest["Test2"]);
+ }
+
+ }
+}
diff --git a/src/Umbraco.Tests/Web/WebExtensionMethodTests.cs b/src/Umbraco.Tests/Web/WebExtensionMethodTests.cs
new file mode 100644
index 0000000000..3978d53977
--- /dev/null
+++ b/src/Umbraco.Tests/Web/WebExtensionMethodTests.cs
@@ -0,0 +1,170 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Web;
+using System.Web.Mvc;
+using System.Web.Routing;
+using Moq;
+using NUnit.Framework;
+using Umbraco.Core;
+using Umbraco.Core.Configuration.UmbracoSettings;
+using Umbraco.Core.Logging;
+using Umbraco.Core.Profiling;
+using Umbraco.Web;
+using Umbraco.Web.Mvc;
+using Umbraco.Web.Routing;
+using Umbraco.Web.Security;
+
+namespace Umbraco.Tests.Web
+{
+ [TestFixture]
+ public class WebExtensionMethodTests
+ {
+
+ [Test]
+ public void UmbracoContextExtensions_GetUmbracoContext()
+ {
+ var appCtx = new ApplicationContext(
+ CacheHelper.CreateDisabledCacheHelper(),
+ new ProfilingLogger(Mock.Of(), Mock.Of()));
+ var umbCtx = UmbracoContext.CreateContext(
+ Mock.Of(),
+ appCtx,
+ new WebSecurity(Mock.Of(), appCtx),
+ Mock.Of(),
+ new List(),
+ false);
+ var items = new Dictionary