Further update to user service and controller tests to use test builders.
This commit is contained in:
@@ -26,7 +26,7 @@ namespace Umbraco.Tests.Common.Builders
|
||||
private string _icon;
|
||||
private string _name;
|
||||
private IEnumerable<string> _permissions = Enumerable.Empty<string>();
|
||||
private IEnumerable<string> _sectionCollection = Enumerable.Empty<string>();
|
||||
private IEnumerable<string> _allowedSections = Enumerable.Empty<string>();
|
||||
private string _suffix;
|
||||
private int? _startContentId;
|
||||
private int? _startMediaId;
|
||||
@@ -55,7 +55,7 @@ namespace Umbraco.Tests.Common.Builders
|
||||
|
||||
public UserGroupBuilder<TParent> WithPermissions(string permissions)
|
||||
{
|
||||
_permissions = permissions.Split();
|
||||
_permissions = permissions.ToCharArray().Select(x => x.ToString());
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -65,6 +65,12 @@ namespace Umbraco.Tests.Common.Builders
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserGroupBuilder<TParent> WithAllowedSections(IList<string> allowedSections)
|
||||
{
|
||||
_allowedSections = allowedSections;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserGroupBuilder<TParent> WithStartContentId(int startContentId)
|
||||
{
|
||||
_startContentId = startContentId;
|
||||
@@ -107,9 +113,9 @@ namespace Umbraco.Tests.Common.Builders
|
||||
userGroup.StartContentId = startContentId;
|
||||
userGroup.StartMediaId = startMediaId;
|
||||
|
||||
foreach (var item in _sectionCollection)
|
||||
foreach (var section in _allowedSections)
|
||||
{
|
||||
userGroup.AddAllowedSection(item);
|
||||
userGroup.AddAllowedSection(section);
|
||||
}
|
||||
|
||||
return userGroup;
|
||||
|
||||
@@ -1052,19 +1052,16 @@ namespace Umbraco.Tests.Integration.Services
|
||||
|
||||
private UserGroup CreateTestUserGroup(string alias = "testGroup", string name = "Test Group")
|
||||
{
|
||||
var userGroup = new UserGroup(ShortStringHelper)
|
||||
{
|
||||
Alias = alias,
|
||||
Name = name,
|
||||
Permissions = "ABCDEFGHIJ1234567".ToCharArray().Select(x => x.ToString())
|
||||
};
|
||||
|
||||
userGroup.AddAllowedSection("content");
|
||||
userGroup.AddAllowedSection("media");
|
||||
var userGroup = new UserGroupBuilder()
|
||||
.WithAlias(alias)
|
||||
.WithName(name)
|
||||
.WithPermissions("ABCDEFGHIJ1234567")
|
||||
.WithAllowedSections(new[] { "content", "media" })
|
||||
.Build();
|
||||
|
||||
_userService.Save(userGroup);
|
||||
|
||||
return userGroup;
|
||||
return (UserGroup)userGroup;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Tests.Common.Builders.Extensions;
|
||||
@@ -41,7 +41,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders
|
||||
Assert.AreEqual(testName, userGroup.Name);
|
||||
Assert.AreEqual(testUserCount, userGroup.UserCount);
|
||||
Assert.AreEqual(testIcon, userGroup.Icon);
|
||||
Assert.AreEqual(testPermissions, string.Join(string.Empty, userGroup.Permissions));
|
||||
Assert.AreEqual(testPermissions.Length, userGroup.Permissions.Count());
|
||||
Assert.AreEqual(testStartContentId, userGroup.StartContentId);
|
||||
Assert.AreEqual(testStartMediaId, userGroup.StartMediaId);
|
||||
}
|
||||
|
||||
@@ -1,27 +1,23 @@
|
||||
using System.Collections.Generic;
|
||||
using Moq;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Entities;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Security;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Tests.Common.TestHelpers.Entities;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Tests.Common.Builders.Extensions;
|
||||
|
||||
namespace Umbraco.Tests.Web.Controllers
|
||||
{
|
||||
[TestFixture]
|
||||
public class ContentControllerUnitTests
|
||||
{
|
||||
|
||||
[Test]
|
||||
public void Access_Allowed_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9);
|
||||
var contentMock = new Mock<IContent>();
|
||||
contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
|
||||
var content = contentMock.Object;
|
||||
@@ -44,9 +40,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Content_Found()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9);
|
||||
var contentMock = new Mock<IContent>();
|
||||
contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
|
||||
var content = contentMock.Object;
|
||||
@@ -72,10 +66,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
userMock.Setup(u => u.StartContentIds).Returns(new[] { 9876 });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9, startContentId: 9876);
|
||||
var contentMock = new Mock<IContent>();
|
||||
contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
|
||||
var content = contentMock.Object;
|
||||
@@ -103,9 +94,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_By_Permission()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9);
|
||||
var contentMock = new Mock<IContent>();
|
||||
contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
|
||||
var content = contentMock.Object;
|
||||
@@ -134,10 +123,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Access_Allowed_By_Permission()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9);
|
||||
var contentMock = new Mock<IContent>();
|
||||
contentMock.Setup(c => c.Path).Returns("-1,1234,5678");
|
||||
var content = contentMock.Object;
|
||||
@@ -166,10 +152,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Access_To_Root_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser();
|
||||
var contentServiceMock = new Mock<IContentService>();
|
||||
var contentService = contentServiceMock.Object;
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
@@ -188,10 +171,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Access_To_Recycle_Bin_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser();
|
||||
var contentServiceMock = new Mock<IContentService>();
|
||||
var contentService = contentServiceMock.Object;
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
@@ -210,10 +190,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_To_Recycle_Bin_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.StartContentIds).Returns(new[] { 1234 });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(startContentId: 1234);
|
||||
var contentServiceMock = new Mock<IContentService>();
|
||||
var contentService = contentServiceMock.Object;
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
@@ -234,10 +211,8 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_To_Root_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.StartContentIds).Returns(new[] { 1234 });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(startContentId: 1234);
|
||||
|
||||
var contentServiceMock = new Mock<IContentService>();
|
||||
var contentService = contentServiceMock.Object;
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
@@ -258,10 +233,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Access_To_Root_By_Permission()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser();
|
||||
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
var permissions = new EntityPermissionCollection
|
||||
@@ -276,7 +248,6 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
var entityServiceMock = new Mock<IEntityService>();
|
||||
var entityService = entityServiceMock.Object;
|
||||
|
||||
|
||||
//act
|
||||
var result = ContentPermissionsHelper.CheckPermissions(-1, user, userService, contentService, entityService, out var foundContent, new[] { 'A' });
|
||||
|
||||
@@ -288,9 +259,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_To_Root_By_Permission()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(withUserGroup: false);
|
||||
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
var permissions = new EntityPermissionCollection
|
||||
@@ -316,10 +285,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Access_To_Recycle_Bin_By_Permission()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser();
|
||||
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
var permissions = new EntityPermissionCollection
|
||||
@@ -346,9 +312,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_To_Recycle_Bin_By_Permission()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(withUserGroup: false);
|
||||
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
var permissions = new EntityPermissionCollection
|
||||
@@ -369,6 +333,24 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
//assert
|
||||
Assert.AreEqual(ContentPermissionsHelper.ContentAccess.Denied, result);
|
||||
}
|
||||
|
||||
private IUser CreateUser(int id = 0, int startContentId = -1, bool withUserGroup = true)
|
||||
{
|
||||
var builder = new UserBuilder()
|
||||
.WithId(id)
|
||||
.WithStartContentIds(startContentId == -1 ? new int[0] : new[] { startContentId });
|
||||
if (withUserGroup)
|
||||
{
|
||||
builder = builder
|
||||
.AddUserGroup()
|
||||
.WithId(1)
|
||||
.WithName("admin")
|
||||
.WithAlias("admin")
|
||||
.Done();
|
||||
}
|
||||
|
||||
return builder.Build();
|
||||
}
|
||||
}
|
||||
|
||||
//NOTE: The below self hosted stuff does work so need to get some tests written. Some are not possible atm because
|
||||
|
||||
@@ -5,7 +5,8 @@ using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Entities;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Tests.Common.TestHelpers.Entities;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Tests.Common.Builders.Extensions;
|
||||
using Umbraco.Web.BackOffice.Controllers;
|
||||
using Umbraco.Web.Common.Exceptions;
|
||||
|
||||
@@ -18,10 +19,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Access_Allowed_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9);
|
||||
var mediaMock = new Mock<IMedia>();
|
||||
mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
|
||||
var media = mediaMock.Object;
|
||||
@@ -42,9 +40,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Throws_Exception_When_No_Media_Found()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9);
|
||||
var mediaMock = new Mock<IMedia>();
|
||||
mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
|
||||
var media = mediaMock.Object;
|
||||
@@ -62,10 +58,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
userMock.Setup(u => u.StartMediaIds).Returns(new[] { 9876 });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9, startMediaId: 9876);
|
||||
var mediaMock = new Mock<IMedia>();
|
||||
mediaMock.Setup(m => m.Path).Returns("-1,1234,5678");
|
||||
var media = mediaMock.Object;
|
||||
@@ -88,10 +81,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Access_To_Root_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser();
|
||||
var mediaServiceMock = new Mock<IMediaService>();
|
||||
var mediaService = mediaServiceMock.Object;
|
||||
var entityServiceMock = new Mock<IEntityService>();
|
||||
@@ -108,10 +98,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_To_Root_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.StartMediaIds).Returns(new[] { 1234 });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(startMediaId: 1234);
|
||||
var mediaServiceMock = new Mock<IMediaService>();
|
||||
var mediaService = mediaServiceMock.Object;
|
||||
var entityServiceMock = new Mock<IEntityService>();
|
||||
@@ -130,10 +117,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void Access_To_Recycle_Bin_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.Groups).Returns(new[] { new ReadOnlyUserGroup(1, "admin", "", -1, -1, "admin", new string[0], new List<string>()) });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser();
|
||||
var mediaServiceMock = new Mock<IMediaService>();
|
||||
var mediaService = mediaServiceMock.Object;
|
||||
var entityServiceMock = new Mock<IEntityService>();
|
||||
@@ -150,10 +134,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
public void No_Access_To_Recycle_Bin_By_Path()
|
||||
{
|
||||
//arrange
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(0);
|
||||
userMock.Setup(u => u.StartMediaIds).Returns(new[] { 1234 });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(startMediaId: 1234);
|
||||
var mediaServiceMock = new Mock<IMediaService>();
|
||||
var mediaService = mediaServiceMock.Object;
|
||||
var entityServiceMock = new Mock<IEntityService>();
|
||||
@@ -167,5 +148,18 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
//assert
|
||||
Assert.IsFalse(result);
|
||||
}
|
||||
|
||||
private IUser CreateUser(int id = 0, int startMediaId = -1)
|
||||
{
|
||||
return new UserBuilder()
|
||||
.WithId(id)
|
||||
.WithStartMediaIds(new[] { startMediaId })
|
||||
.AddUserGroup()
|
||||
.WithId(1)
|
||||
.WithName("admin")
|
||||
.WithAlias("admin")
|
||||
.Done()
|
||||
.Build();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Http.Headers;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
@@ -10,11 +9,11 @@ using Umbraco.Core.Models.Entities;
|
||||
using Umbraco.Core.Models.Membership;
|
||||
using Umbraco.Core.Security;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Tests.Common.TestHelpers.Entities;
|
||||
using Umbraco.Tests.Common.Builders;
|
||||
using Umbraco.Tests.Common.Builders.Extensions;
|
||||
using Umbraco.Web.Actions;
|
||||
using Umbraco.Web.BackOffice.Filters;
|
||||
using Umbraco.Web.Models.ContentEditing;
|
||||
using Umbraco.Web.Security;
|
||||
|
||||
namespace Umbraco.Tests.Web.Controllers
|
||||
{
|
||||
@@ -78,10 +77,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
[Test]
|
||||
public void Filter_On_Start_Node()
|
||||
{
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
userMock.Setup(u => u.StartContentIds).Returns(new[] { 5 });
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9, startContentId: 5);
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
var userService = userServiceMock.Object;
|
||||
var entityServiceMock = new Mock<IEntityService>();
|
||||
@@ -124,10 +120,7 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
}
|
||||
var ids = list.Select(x => (int)x.Id).ToArray();
|
||||
|
||||
var userMock = MockedUser.GetUserMock();
|
||||
userMock.Setup(u => u.Id).Returns(9);
|
||||
userMock.Setup(u => u.StartContentIds).Returns(new int[0]);
|
||||
var user = userMock.Object;
|
||||
var user = CreateUser(id: 9, startContentId: 0);
|
||||
|
||||
var userServiceMock = new Mock<IUserService>();
|
||||
//we're only assigning 3 nodes browse permissions so that is what we expect as a result
|
||||
@@ -155,6 +148,19 @@ namespace Umbraco.Tests.Web.Controllers
|
||||
Assert.AreEqual(3, list.ElementAt(2).Id);
|
||||
}
|
||||
|
||||
private IUser CreateUser(int id = 0, int startContentId = -1)
|
||||
{
|
||||
return new UserBuilder()
|
||||
.WithId(id)
|
||||
.WithStartContentIds(new[] { startContentId })
|
||||
.AddUserGroup()
|
||||
.WithId(1)
|
||||
.WithName("admin")
|
||||
.WithAlias("admin")
|
||||
.Done()
|
||||
.Build();
|
||||
}
|
||||
|
||||
private class MyTestClass
|
||||
{
|
||||
public IEnumerable<ContentItemBasic> MyList { get; set; }
|
||||
|
||||
Reference in New Issue
Block a user