public void Initialize()
        {
            //Seup permissions
            _permissions = new Permission[] { new SavePermission(), new PublishPermission(), new HostnamesPermission(),
                                              new CopyPermission(), new MovePermission(), new BackOfficeAccessPermission() }
            .Select(x => new Lazy <Permission, PermissionMetadata>(() => x, new PermissionMetadata(new Dictionary <string, object>
            {
                { "Id", x.Id },
                { "Name", x.Name },
                { "Type", x.Type }
            })));

            //Setup user groups
            _userGroups = new List <UserGroup>
            {
                new UserGroup
                {
                    Id   = new HiveId("9DB63B97-4C8F-489C-98C7-017DC6AD869A"),
                    Name = "Administrator"
                },
                new UserGroup
                {
                    Id   = new HiveId("F61E4B62-513B-4858-91BF-D873401AD3CA"),
                    Name = "Editor"
                },
                new UserGroup
                {
                    Id   = new HiveId("8B65EF91-D49B-43A3-AFD9-6A47D5341B7D"),
                    Name = "Writter"
                }
            };

            // Setup user id
            _userId = new HiveId("857BD0F6-49DC-4378-84C1-6CD8AE14301D");

            //Setup content nodes
            _systemRootNode = new TypedEntity {
                Id = FixedHiveIds.SystemRoot
            };
            _childContentNode = new TypedEntity {
                Id = new HiveId("00E55027-402F-41CF-9052-B8D8F3DBCD76")
            };

            //Setup relations
            var systemRootPermissionRelations = new List <RelationById>
            {
                new RelationById(
                    _userGroups.First().Id,
                    _systemRootNode.Id,
                    FixedRelationTypes.PermissionRelationType,
                    0,
                    new RelationMetaDatum(FixedPermissionIds.BackOfficeAccess, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Copy, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Save, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Publish, PermissionStatus.Deny.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Hostnames, PermissionStatus.Inherit.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Move, PermissionStatus.Inherit.ToString())
                    ),
                new RelationById(
                    _userGroups.Last().Id,
                    _systemRootNode.Id,
                    FixedRelationTypes.PermissionRelationType,
                    0,
                    new RelationMetaDatum(FixedPermissionIds.Copy, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Save, PermissionStatus.Deny.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Publish, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Hostnames, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Move, PermissionStatus.Inherit.ToString())
                    )
            };

            var childContentNodePermissionRelations = new List <RelationById>
            {
                new RelationById(
                    _userGroups.Skip(1).First().Id,
                    _childContentNode.Id,
                    FixedRelationTypes.PermissionRelationType,
                    0,
                    new RelationMetaDatum(FixedPermissionIds.BackOfficeAccess, PermissionStatus.Deny.ToString()),     // Back office access is not an entity action so this should get ignored
                    new RelationMetaDatum(FixedPermissionIds.Copy, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Save, PermissionStatus.Deny.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Publish, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Hostnames, PermissionStatus.Allow.ToString()),
                    new RelationMetaDatum(FixedPermissionIds.Move, PermissionStatus.Inherit.ToString())
                    )
            };

            var childContentNodeAncestorRelations = new List <RelationById>
            {
                new RelationById(
                    _systemRootNode.Id,
                    _childContentNode.Id,
                    FixedRelationTypes.DefaultRelationType,
                    0)
            };

            var userGroupRelations = new List <RelationById>
            {
                new RelationById(
                    _userGroups.First().Id,
                    _userId,
                    FixedRelationTypes.UserGroupRelationType,
                    0),
                new RelationById(
                    _userGroups.Skip(1).First().Id,
                    _userId,
                    FixedRelationTypes.UserGroupRelationType,
                    0),
                new RelationById(
                    _userGroups.Last().Id,
                    _userId,
                    FixedRelationTypes.UserGroupRelationType,
                    0)
            };

            _membershipService = Substitute.For <IMembershipService <User> >();
            _membershipService.GetById(_userId, true).Returns(new User
            {
                Id       = _userId,
                Username = "******",
                Groups   = _userGroups.Select(x => x.Id).ToArray()
            });


            //Setup hive
            _hive = MockHiveManager.GetManager()
                    .MockContentStore(out _readonlyContentStoreSession, out _readonlyContentStoreSchemaSession, out _contentStoreRepository, out _contentStoreSchemaRepository)
                    .MockSecurityStore(out _readonlySecurityStoreSession, out _readonlySecurityStoreSchemaSession, out _securityStoreRepository, out _securityStoreSchemaRepository);

            //Setup content store
            _readonlyContentStoreSession.Exists <TypedEntity>(HiveId.Empty).ReturnsForAnyArgs(true);

            _readonlySecurityStoreSession
            .Get <UserGroup>(true, Arg.Any <HiveId[]>())
            .Returns(MockHiveManager.MockReturnForGet <UserGroup>());

            _readonlyContentStoreSession
            .Get <UserGroup>(true, Arg.Any <HiveId[]>())
            .Returns(MockHiveManager.MockReturnForGet <UserGroup>());

            _securityStoreRepository
            .Get <UserGroup>(true, Arg.Any <HiveId[]>())
            .Returns(MockHiveManager.MockReturnForGet <UserGroup>());

            _contentStoreRepository
            .Get <UserGroup>(true, Arg.Any <HiveId[]>())
            .Returns(MockHiveManager.MockReturnForGet <UserGroup>());

            //Setup security store
            _readonlySecurityStoreSession.GetParentRelations(_systemRootNode.Id, FixedRelationTypes.PermissionRelationType).Returns(systemRootPermissionRelations);
            _readonlySecurityStoreSession.GetParentRelations(_childContentNode.Id, FixedRelationTypes.PermissionRelationType).Returns(childContentNodePermissionRelations);
            _readonlySecurityStoreSession.GetAncestorRelations(_childContentNode.Id, FixedRelationTypes.DefaultRelationType).Returns(childContentNodeAncestorRelations);
            _readonlySecurityStoreSession.GetParentRelations(_userId, FixedRelationTypes.UserGroupRelationType).Returns(userGroupRelations);

            _readonlySecurityStoreSession.Query <UserGroup>().Returns(x => Enumerable.Repeat(new UserGroup()
            {
                Name = "Administrator"
            }, 1).AsQueryable());
        }
示例#2
0
 public static IEnumerable <IRelationById> GetParentFileRelations(this IReadonlyEntityRepositoryGroup <IFileStore> unit, IRelatableEntity source)
 {
     Mandate.ParameterNotNull(source, "source");
     return(unit.GetParentRelations(source.Id, FixedRelationTypes.DefaultRelationType));
 }