public void WhenBrowseNodeOnlyPermissionsStopInheritanceOtherGroupsStillInherit() { // Node 1 (Groups 1 and 2 have permissions defined) // --> Node 2 (Group 1 has Browse Node only, overriding inherited permissions) var userService = new Mock <IUserService>(); var contentService = new Mock <IContentService>(); var nodeLevel1 = new Mock <IContent>(); nodeLevel1.Setup(x => x.ParentId).Returns(-1); var nodeLevel1Permissions = new Mock <EntityPermissionCollection>(); nodeLevel1Permissions.Object.Add(new EntityPermission(1, 1, new[] { UmbracoPermission.BROWSE_NODE + UmbracoPermission.UPDATE })); nodeLevel1Permissions.Object.Add(new EntityPermission(2, 1, new[] { UmbracoPermission.BROWSE_NODE + UmbracoPermission.UPDATE })); var nodeLevel2 = new Mock <IContent>(); nodeLevel2.Setup(x => x.ParentId).Returns(1); var nodeLevel2Permissions = new Mock <EntityPermissionCollection>(); nodeLevel2Permissions.Object.Add(new EntityPermission(1, 2, new[] { UmbracoPermission.BROWSE_NODE })); contentService.Setup(x => x.GetById(1)).Returns(nodeLevel1.Object); contentService.Setup(x => x.GetPermissionsForEntity(nodeLevel1.Object)).Returns(nodeLevel1Permissions.Object); contentService.Setup(x => x.GetById(2)).Returns(nodeLevel2.Object); contentService.Setup(x => x.GetPermissionsForEntity(nodeLevel2.Object)).Returns(nodeLevel2Permissions.Object); var permissionsService = new UmbracoPermissionsReader(userService.Object, contentService.Object); var result = permissionsService.GroupsWithPermissionForPage(2, UmbracoPermission.UPDATE); Assert.AreEqual(1, result.Count); Assert.IsTrue(result.Contains(2)); }
public void PermissionsAreInheritedFromParent() { // Node 1 (Group 1 permissions defined) // --> Node 2 (Group 1 permissions inherited) var userService = new Mock <IUserService>(); var contentService = new Mock <IContentService>(); var nodeLevel1 = new Mock <IContent>(); nodeLevel1.Setup(x => x.ParentId).Returns(-1); var nodeLevel1Permissions = new Mock <EntityPermissionCollection>(); nodeLevel1Permissions.Object.Add(new EntityPermission(1, 1, new[] { UmbracoPermission.BROWSE_NODE + UmbracoPermission.UPDATE })); var nodeLevel2 = new Mock <IContent>(); nodeLevel2.Setup(x => x.ParentId).Returns(1); var nodeLevel2Permissions = new Mock <EntityPermissionCollection>(); contentService.Setup(x => x.GetById(1)).Returns(nodeLevel1.Object); contentService.Setup(x => x.GetPermissionsForEntity(nodeLevel1.Object)).Returns(nodeLevel1Permissions.Object); contentService.Setup(x => x.GetById(2)).Returns(nodeLevel2.Object); contentService.Setup(x => x.GetPermissionsForEntity(nodeLevel2.Object)).Returns(nodeLevel2Permissions.Object); var permissionsService = new UmbracoPermissionsReader(userService.Object, contentService.Object); var result = permissionsService.GroupsWithPermissionForPage(2, UmbracoPermission.UPDATE); Assert.AreEqual(1, result.Count); Assert.IsTrue(result.Contains(1)); }
public HttpResponseMessage GroupsWithPermissionsForPage(int pageId) { try { var expiringPagesService = new UmbracoPermissionsReader(Services.UserService, Services.ContentService); var nodes = expiringPagesService.GroupsWithPermissionForPage(pageId, UmbracoPermission.UPDATE); return(Request.CreateResponse(HttpStatusCode.OK, nodes)); } catch (Exception ex) { ex.ToExceptionless().Submit(); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex)); } }