コード例 #1
0
        public void RoomPermissionsUpdatedTest()
        {
            // Arrange
            var roomVm = viewModelFactory.GetViewModel <RoomViewModel>();

            roomVm.Model = room;
            var originalGrants = DesignTimeHelper.GetRoomPermissionGrants();
            var goodGrant1     = new RoomPermissionGrant {
                RoomPermissionGrantId = Guid.NewGuid(), RoomPermissionTag = Guid.NewGuid().ToString(), UserId = user.UserId, User = user, RoomId = room.RoomId
            };
            var goodGrant2 = new RoomPermissionGrant {
                RoomPermissionGrantId = Guid.NewGuid(), RoomPermissionTag = Guid.NewGuid().ToString(), UserId = user.UserId, User = user, RoomId = room.RoomId
            };
            var badGrant1 = new RoomPermissionGrant {
                RoomPermissionGrantId = Guid.NewGuid(), RoomPermissionTag = Guid.NewGuid().ToString(), UserId = Guid.NewGuid(), User = null, RoomId = room.RoomId
            };
            var badGrant2 = new RoomPermissionGrant {
                RoomPermissionGrantId = Guid.NewGuid(), RoomPermissionTag = Guid.NewGuid().ToString(), UserId = user.UserId, User = user, RoomId = Guid.NewGuid()
            };
            var newGrants = new ObservableCollection <RoomPermissionGrant> {
                goodGrant1, goodGrant2, badGrant1, badGrant2
            };
            var localPerms = viewModelFactory.GetViewModel <SecurityPrincipalRoomPermissionGrantCollectionViewModel>();

            localPerms.SecurityPrincipalId = user.UserId;
            localPerms.Models = originalGrants;

            // Act
            mockRoomService.Raise(rs => rs.RoomPermissionsForUserUpdated += null, new EventArgs <ObservableCollection <RoomPermissionGrant> >(newGrants));

            // Assert
            Assert.AreEqual(2, localPerms.ViewModelCount);
            Assert.AreEqual(2, localPerms.ViewModels.Count);
            Assert.IsTrue(localPerms.ViewModels.Any(vm => vm.Model.RoomPermissionGrantId == goodGrant1.RoomPermissionGrantId));
            Assert.IsTrue(localPerms.ViewModels.Any(vm => vm.Model.RoomPermissionGrantId == goodGrant2.RoomPermissionGrantId));
        }
コード例 #2
0
        public void RoomPermissionGrantCollectionSavePermissionsTest()
        {
            // Setup the mock room service
            mockRoomService.Setup(rs => rs.GetRoomPermissions(It.IsAny <OperationCallback <ObservableCollection <RoomPermission> > >()))
            .Callback((OperationCallback <ObservableCollection <RoomPermission> > callback) => callback(null, DesignTimeHelper.GetRoomPermissions()));

            // Setup the room and various users.
            var localUserVm = viewModelFactory.GetViewModel <LocalUserViewModel>();

            localUserVm.Model = user;
            var roomVm = viewModelFactory.GetViewModel <RoomViewModel>();

            roomVm.Model = room;
            var user1   = user;
            var user1Vm = viewModelFactory.GetViewModel <UserViewModel>(u => u.UserId == user1.UserId);

            user1Vm.Model = user1;
            var user2 = new RegisteredUser
            {
                AuthenticationGroupId = user1.AuthenticationGroupId,
                UserId   = Guid.NewGuid(),
                UserTag  = Guid.NewGuid().ToString(),
                UserName = "******"
            };
            var user2Vm = viewModelFactory.GetViewModel <UserViewModel>(u => u.UserId == user2.UserId);

            user2Vm.Model = user2;
            var user3 = new RegisteredUser
            {
                AuthenticationGroupId = user1.AuthenticationGroupId,
                UserId   = Guid.NewGuid(),
                UserTag  = Guid.NewGuid().ToString(),
                UserName = "******"
            };
            var user3Vm = viewModelFactory.GetViewModel <UserViewModel>(u => u.UserId == user3.UserId);

            user3Vm.Model = user3;

            // Load the users into the grants container
            var grantsVm = viewModelFactory.GetViewModel <RoomPermissionGrantCollectionViewModel>();

            grantsVm.SecurityPrincipals.Add(user1Vm);
            grantsVm.SecurityPrincipals.Add(user2Vm);
            grantsVm.SecurityPrincipals.Add(user3Vm);

            // Establish their permissions.
            user1Vm.RoomPermissionGrants.Models = DesignTimeHelper.GetRoomPermissionGrants(user1).Where(g => g.UserId == user1.UserId).ToObservableCollection();
            user2Vm.RoomPermissionGrants.Models = DesignTimeHelper.GetRoomPermissionGrants(user2).Where(g => g.UserId == user2.UserId).ToObservableCollection();
            user3Vm.RoomPermissionGrants.Models = DesignTimeHelper.GetRoomPermissionGrants(user3).Where(g => g.UserId == user3.UserId).ToObservableCollection();

            // Confirm stuff is looking good so far and update grants
            // When this is done, each Join and Chat should be selected, and Administer and Share should not be.
            foreach (var userVm in grantsVm.SecurityPrincipals)
            {
                ConfirmGrantSynchronization(userVm.RoomPermissionGrants);
                userVm.RoomPermissionGrants.PossibleGrants.First(g => g.Model.RoomPermissionTag == "Administer").IsSelected = false;
                userVm.RoomPermissionGrants.PossibleGrants.First(g => g.Model.RoomPermissionTag == "Chat").IsSelected       = true;
                ConfirmGrantSynchronization(userVm.RoomPermissionGrants);
            }

            // Setup the mock room service so we can handle validations.
            mockRoomService.Setup(rs => rs.UpdateRoomPermissions(It.IsAny <LoginSession>(), It.IsAny <Guid>(), It.IsAny <bool>(), It.IsAny <ObservableCollection <RoomPermissionGrant> >(), It.IsAny <OperationCallback>()))
            .Callback((LoginSession loginSession, Guid roomId, bool isPublic, ObservableCollection <RoomPermissionGrant> grants, OperationCallback callback) =>
            {
                Assert.AreEqual(6, grants.Count);
                Assert.AreEqual(0, grants.Count(g => g.RoomPermissionTag == "Administer"));
                Assert.AreEqual(0, grants.Count(g => g.RoomPermissionTag == "Share"));
                Assert.AreEqual(3, grants.Count(g => g.RoomPermissionTag == "Join"));
                Assert.AreEqual(3, grants.Count(g => g.RoomPermissionTag == "Chat"));
                callback(null);
            });

            // Save it and trigger the validation
            grantsVm.Save();
            mockRoomService.VerifyAll();
        }