public async Task MeetingControllerRecurUnauthorised() { var data = new MeetingApiDataHandler(); var logic = new InteractApiLogicHandler(); var viewModel = new RecurViewModel() { MeetingId = MeetingData.FirstId, When = DateHelper.FormatDayStart(DateTime.UtcNow) }; data.Result.Setup(m => m.Execute(It.IsAny <Loader <Meeting> >())).Returns(MeetingData.GetFirst()); var controller = new MeetingController(data, logic) { CurrentUser = NonTenantUser }; var result = await controller.Recur(viewModel) as UnauthorizedResult; result.Should().NotBeNull(); result.Should().BeOfType <UnauthorizedResult>(); data.HasExecuted.Should().BeTrue(); data.HasCommitted.Should().BeFalse(); data.Result.Verify(s => s.Execute(It.IsAny <Loader <Meeting> >()), Times.Once); data.Result.Verify(s => s.Execute(It.IsAny <Persist <Meeting> >()), Times.Never()); }
public async Task MeetingControllerRecurAttendFail() { var data = new MeetingApiDataHandler(); var logic = new InteractApiLogicHandler(); var viewModel = new RecurViewModel() { MeetingId = MeetingData.FirstId, When = DateHelper.FormatDayStart(DateTime.UtcNow) }; data.Result.Setup(m => m.Execute(It.IsAny <Loader <Meeting> >())).Returns(MeetingData.GetFirst()); data.Result.Setup(m => m.Execute(It.IsAny <Persist <Meeting> >())).Returns(MeetingData.GetSecond()); logic.Result.Setup(m => m.Execute(It.IsAny <AttendCheck>())).Returns(false); var controller = new MeetingController(data, logic) { CurrentUser = StandardUser }; var result = await controller.Recur(viewModel) as OkObjectResult; result.Should().NotBeNull(); result.Should().BeOfType <OkObjectResult>(); result.Value.Should().NotBeNull(); var check = result.Value as ConfirmViewModel; check.Success.Should().BeFalse(); data.HasExecuted.Should().BeTrue(); data.HasCommitted.Should().BeFalse(); data.Result.Verify(s => s.Execute(It.IsAny <Loader <Meeting> >()), Times.Once); data.Result.Verify(s => s.Execute(It.IsAny <Persist <Meeting> >()), Times.Never()); }
public async Task <IActionResult> Recur([FromBody] RecurViewModel viewModel) { var loader = new Loader <Meeting>() { Id = viewModel.MeetingId }; await DataHandler.Execute(loader); if (loader.Result == null) { return(NotFound()); } if (loader.Result.AuthorId == CurrentUser.Id || (loader.Result.TenantId == CurrentUser.TenantId && (CurrentUser.Right.CanAdmin || CurrentUser.Right.CanAuth)) || CurrentUser.Right.CanSuperuser) { var model = new Meeting() { Participants = loader.Result.Participants, AuthorId = CurrentUser.Id, AuthorName = CurrentUser.Name, TenantId = CurrentUser.TenantId, TenantName = CurrentUser.TenantName, MeetingTypeId = loader.Result.MeetingTypeId, RegionKey = CurrentUser.RegionKey, Text = loader.Result.Text, Name = loader.Result.Name, IsPrivate = loader.Result.IsPrivate, When = viewModel.When, PreviousId = loader.Result.Id, ForceNotify = false }; var attendCheck = new AttendCheck() { CurrentUser = CurrentUser, DataHandler = DataHandler, LogicHandler = LogicHandler, Meeting = model }; await LogicHandler.Execute(attendCheck); if (attendCheck.Result) { loader.Result.NextId = attendCheck.Meeting.Id; loader.Result.IsComplete = true; var persist = new Persist <Meeting> { Model = loader.Result }; await DataHandler.Execute(persist); if (persist.Confirm.Success) { await DataHandler.Commit(); return(Ok(ConfirmViewModel.CreateSuccess(attendCheck.Meeting))); } } return(Ok(ConfirmViewModel.CreateFailure("Failed to save Meeting"))); } return(Unauthorized()); }