public void ApproveModerationTest_Invitation() { // Arrange dependencies var requests = viewModelFactory.GetViewModel <ModerationRequestCollectionViewModel>(); requests.Models = DesignTimeHelper.GetModerationRequests(DesignTimeHelper.GetGuestUser()); var grantsVm = viewModelFactory.GetViewModel <RoomPermissionGrantCollectionViewModel>(); var requestVm = requests.ViewModels[0]; var roomVm = viewModelFactory.GetViewModel <RoomViewModel>(); roomVm.Model = room; var localUserVm = viewModelFactory.GetViewModel <LocalUserViewModel>(); localUserVm.Model = user; // Configure mock RoomServiceAdapter. mockRoomService.Setup(rs => rs.CreateInvitation(It.IsAny <LoginSession>(), It.IsAny <Guid>(), It.IsAny <Invitation>(), It.IsAny <OperationCallback>())) .Callback((LoginSession loginSessionId, Guid roomId, Invitation invitation, OperationCallback callback) => { Assert.IsNotNull(invitation); Assert.AreEqual(user.UserId, invitation.UserId); Assert.AreEqual(room.RoomId, invitation.RoomId); callback(null); }); mockRoomService.Setup(rs => rs.UpdateRoomPermissionsForInvitation(It.IsAny <LoginSession>(), It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <ObservableCollection <RoomPermissionGrant> >(), It.IsAny <OperationCallback>())) .Callback((LoginSession loginSessionId, Guid moderationRequestId, Guid securityPrincipalId, ObservableCollection <RoomPermissionGrant> grants, OperationCallback callback) => { Assert.AreEqual(2, grants.Count); Assert.AreEqual(1, grants.Count(g => g.RoomPermissionTag == "Share")); Assert.AreEqual(1, grants.Count(g => g.RoomPermissionTag == "Join")); callback(null); }); // Affirm Assert.IsTrue(requestVm.Model.ModerationRequestedRoomPermissions.Count > 0); Assert.IsTrue(requestVm.Model.ModerationRequestedRoomPermissions.All(p => !string.IsNullOrEmpty(p.RoomPermissionTag))); // Act grantsVm.ApproveModerationRequest(requestVm); // Assert mockRoomService.VerifyAll(); Assert.AreEqual(1, grantsVm.SecurityPrincipals.OfType <InvitationViewModel>().Count()); var invitationVm = grantsVm.SecurityPrincipals.OfType <InvitationViewModel>().First(); Assert.AreEqual(requestVm.Model.ModerationRequestedRoomPermissions.Count, invitationVm.RoomPermissionGrants.ViewModelCount); foreach (var grantvm in invitationVm.RoomPermissionGrants.ViewModels) { string roomPermissionTag = grantvm.Model.RoomPermissionTag; Assert.AreEqual(RoomPermissionScopeValues.Invitation, grantvm.Model.RoomPermissionScopeTag); Assert.AreEqual(1, requestVm.Model.ModerationRequestedRoomPermissions.Count(p => p.RoomPermissionTag == roomPermissionTag)); } }
public void ApproveModerationTest_User() { // Arrange var requests = viewModelFactory.GetViewModel <ModerationRequestCollectionViewModel>(); requests.Models = DesignTimeHelper.GetModerationRequests(user); var grantsVm = viewModelFactory.GetViewModel <RoomPermissionGrantCollectionViewModel>(); var requestVm = requests.ViewModels[0]; var roomVm = viewModelFactory.GetViewModel <RoomViewModel>(); roomVm.Model = room; mockRoomService.Setup(rs => rs.UpdateRoomPermissionsForUser(It.IsAny <LoginSession>(), It.IsAny <Guid>(), It.IsAny <ObservableCollection <RoomPermissionGrant> >(), It.IsAny <OperationCallback>())) .Callback((LoginSession loginSession, Guid moderationRequestId, ObservableCollection <RoomPermissionGrant> grants, OperationCallback callback) => { Assert.AreEqual(2, grants.Count); Assert.AreEqual(1, grants.Count(g => g.RoomPermissionTag == "Share")); Assert.AreEqual(1, grants.Count(g => g.RoomPermissionTag == "Join")); callback(null); }); // Affirm Assert.IsTrue(requestVm.Model.ModerationRequestedRoomPermissions.Count > 0); Assert.IsTrue(requestVm.Model.ModerationRequestedRoomPermissions.All(p => !string.IsNullOrEmpty(p.RoomPermissionTag))); // Act grantsVm.ApproveModerationRequest(requestVm); // Assert mockRoomService.VerifyAll(); Assert.IsTrue(grantsVm.SecurityPrincipals.Count(p => p.SecurityPrincipalId == requestVm.Model.UserId) == 1, "The generated grant should have the same SecurityPrincipalId as the request's UserId"); var uservm = (UserViewModel)grantsVm.SecurityPrincipals.First(p => p.SecurityPrincipalId == requestVm.Model.UserId); Assert.AreEqual(requestVm.Model.ModerationRequestedRoomPermissions.Count, uservm.RoomPermissionGrants.ViewModelCount); foreach (var grantvm in uservm.RoomPermissionGrants.ViewModels) { string roomPermissionTag = grantvm.Model.RoomPermissionTag; Assert.AreEqual(RoomPermissionScopeValues.User, grantvm.Model.RoomPermissionScopeTag); Assert.AreEqual(1, requestVm.Model.ModerationRequestedRoomPermissions.Count(p => p.RoomPermissionTag == roomPermissionTag)); } }