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() + { + {UmbracoContext.HttpContextItemName, umbCtx} + }; + var http = new Mock(); + http.Setup(x => x.Items).Returns(items); + + var result = http.Object.GetUmbracoContext(); + + Assert.IsNotNull(result); + Assert.AreSame(umbCtx, result); + } + + [Test] + public void RouteDataExtensions_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 r1 = new RouteData(); + r1.DataTokens.Add(Core.Constants.Web.UmbracoContextDataToken, umbCtx); + + var result = r1.GetUmbracoContext(); + + Assert.IsNotNull(result); + Assert.AreSame(umbCtx, result); + } + + [Test] + public void ControllerContextExtensions_GetUmbracoContext_From_RouteValues() + { + 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 r1 = new RouteData(); + r1.DataTokens.Add(Core.Constants.Web.UmbracoContextDataToken, umbCtx); + var ctx1 = CreateViewContext(new ControllerContext(Mock.Of(), r1, new MyController())); + var r2 = new RouteData(); + r2.DataTokens.Add("ParentActionViewContext", ctx1); + var ctx2 = CreateViewContext(new ControllerContext(Mock.Of(), r2, new MyController())); + var r3 = new RouteData(); + r3.DataTokens.Add("ParentActionViewContext", ctx2); + var ctx3 = CreateViewContext(new ControllerContext(Mock.Of(), r3, new MyController())); + + var result = ctx3.GetUmbracoContext(); + + Assert.IsNotNull(result); + Assert.AreSame(umbCtx, result); + } + + [Test] + public void ControllerContextExtensions_GetUmbracoContext_From_HttpContext() + { + 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() + { + {UmbracoContext.HttpContextItemName, umbCtx} + }; + var http = new Mock(); + http.Setup(x => x.Items).Returns(items); + + var r1 = new RouteData(); + var ctx1 = CreateViewContext(new ControllerContext(http.Object, r1, new MyController())); + var r2 = new RouteData(); + r2.DataTokens.Add("ParentActionViewContext", ctx1); + var ctx2 = CreateViewContext(new ControllerContext(http.Object, r2, new MyController())); + var r3 = new RouteData(); + r3.DataTokens.Add("ParentActionViewContext", ctx2); + var ctx3 = CreateViewContext(new ControllerContext(http.Object, r3, new MyController())); + + var result = ctx3.GetUmbracoContext(); + + Assert.IsNotNull(result); + Assert.AreSame(umbCtx, result); + } + + [Test] + public void ControllerContextExtensions_GetDataTokenInViewContextHierarchy() + { + var r1 = new RouteData(); + r1.DataTokens.Add("hello", "world"); + var ctx1 = CreateViewContext(new ControllerContext(Mock.Of(), r1, new MyController())); + var r2 = new RouteData(); + r2.DataTokens.Add("ParentActionViewContext", ctx1); + var ctx2 = CreateViewContext(new ControllerContext(Mock.Of(), r2, new MyController())); + var r3 = new RouteData(); + r3.DataTokens.Add("ParentActionViewContext", ctx2); + var ctx3 = CreateViewContext(new ControllerContext(Mock.Of(), r3, new MyController())); + + var result = ctx3.GetDataTokenInViewContextHierarchy("hello"); + + Assert.IsNotNull(result as string); + Assert.AreEqual((string)result, "world"); + } + + private ViewContext CreateViewContext(ControllerContext ctx) + { + return new ViewContext(ctx, Mock.Of(), + new ViewDataDictionary(), new TempDataDictionary(), new StringWriter()); + } + + private class MyController : Controller + { + + } + } +}