public void ControllerHasAreaAuthorizeAttributeWithCorrectPolicy() { var sut = new ItineraryController(null, null); var attribute = sut.GetAttributes().OfType<AuthorizeAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.Policy, "OrgAdmin"); }
public void ControllerHasAreaAuthorizeAttributeWithCorrectPolicy() { var sut = new ItineraryController(Mock.Of<IMediator>(), MockSuccessValidation().Object); var attribute = sut.GetAttributes().OfType<AuthorizeAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.Policy, "OrgAdmin"); }
public void ControllerHasAreaAtttributeWithTheCorrectAreaName() { var sut = new ItineraryController(null, null); var attribute = sut.GetAttributes().OfType<AreaAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.RouteValue, "Admin"); }
public void DetailsHasRouteAttributeWithCorrectRoute() { var sut = new ItineraryController(Mock.Of<IMediator>(), MockSuccessValidation().Object); var routeAttribute = sut.GetAttributesOn(x => x.Details(It.IsAny<int>())).OfType<RouteAttribute>().SingleOrDefault(); Assert.NotNull(routeAttribute); Assert.Equal(routeAttribute.Template, "Admin/Itinerary/Details/{id}"); }
public void DetailsHasRouteAttributeWithCorrectRoute() { var sut = new ItineraryController(null, null); var routeAttribute = sut.GetAttributesOn(x => x.Details(It.IsAny<int>())).OfType<RouteAttribute>().SingleOrDefault(); Assert.NotNull(routeAttribute); Assert.Equal(routeAttribute.Template, "Admin/Itinerary/Details/{id}"); }
public void ControllerHasAreaAtttributeWithTheCorrectAreaName() { var sut = new ItineraryController(Mock.Of<IMediator>(), MockSuccessValidation().Object); var attribute = sut.GetAttributes().OfType<AreaAttribute>().SingleOrDefault(); Assert.NotNull(attribute); Assert.Equal(attribute.RouteValue, "Admin"); }
public async Task DetailsReturnsHttpNotFoundResultWhenEventIsNull() { var mockMediator = new Mock<IMediator>(); mockMediator.Setup(mock => mock.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(null).Verifiable(); var controller = new ItineraryController(mockMediator.Object, null); Assert.IsType<NotFoundResult>(await controller.Details(It.IsAny<int>())); }
public async Task DetailsSendsEventDetailQueryWithCorrectEventId() { var mockMediator = new Mock<IMediator>(); mockMediator.Setup(mock => mock.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(null).Verifiable(); var sut = new ItineraryController(mockMediator.Object, null); await sut.Details(1); mockMediator.Verify(x => x.SendAsync(It.IsAny<ItineraryDetailQuery>()), Times.Once); }
public async Task SelectRequestsPostWithSingleParameterSetsSelectItineraryRequestsModelWithTheCorrectData() { const int organizationId = 4; var itinerary = GetItineraryForSelectRequestHappyPathTests(); var returnedRequests = GetRequestsForSelectRequestHappyPathTests(); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.Is<ItineraryDetailQuery>(y => y.ItineraryId == itinerary.Id))).ReturnsAsync(itinerary); mediator.Setup(x => x.SendAsync(It.IsAny<RequestListItemsQuery>())).ReturnsAsync(returnedRequests); mediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(organizationId); var sut = new ItineraryController(mediator.Object, null); sut.MakeUserAnOrgAdmin(organizationId.ToString()); var view = await sut.SelectRequests(itinerary.Id, new SelectItineraryRequestsViewModel()); RunSelectRequestsHappyPathTests(view, itinerary, returnedRequests); }
public async Task SelectRequestsGetReturnsUnauthorizedResult_WhenOrgIdIsZero() { var sut = new ItineraryController(Mock.Of<IMediator>(), null); var result = await sut.SelectRequests(It.IsAny<int>()); Assert.IsType<UnauthorizedResult>(result); }
public async Task SelectRequestsGetReturnsUnauthorizedResult_WhenUserIsNotOrgAdmin() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mediator.Object, null); sut.MakeUserNotAnOrgAdmin(); var result = await sut.SelectRequests(It.IsAny<int>()); Assert.IsType<UnauthorizedResult>(result); }
public void SelectRequestsGetHasHttpGetAttribute() { var sut = new ItineraryController(null, null); var attribute = sut.GetAttributesOn(x => x.SelectRequests(It.IsAny<int>())).OfType<HttpGetAttribute>().SingleOrDefault(); Assert.NotNull(attribute); }
public async Task SelectRequestsGetSendsOrganizationIdQueryWithCorrectItineraryId() { const int itineraryId = 1; var mediator = new Mock<IMediator>(); var sut = new ItineraryController(mediator.Object, null); await sut.SelectRequests(itineraryId); mediator.Verify(x => x.SendAsync(It.Is<OrganizationIdQuery>(y => y.ItineraryId == itineraryId))); }
public async Task EditPost_SendsItinerarySummaryQuery_WithCorrectId() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(null).Verifiable(); var sut = new ItineraryController(mediator.Object, Mock.Of<IItineraryEditModelValidator>()); await sut.Edit(new ItineraryEditViewModel { Id = 50 }); mediator.Verify(x => x.SendAsync(It.Is<ItinerarySummaryQuery>(y => y.ItineraryId == 50)), Times.Once); }
public async Task AddTeamMemberRedirectsToCorrectActionWithCorrectRouteValuesWhenOrganizationIdIsNotZero_AndUserIsOrgAdmin_AndIdOrSelectedTeamMemberIsNotZero() { const int itineraryId = 1; const int orgId = 1; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>())).ReturnsAsync(true); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(orgId); var sut = new ItineraryController(mockMediator.Object, null); sut.MakeUserAnOrgAdmin(orgId.ToString()); var result = await sut.AddTeamMember(itineraryId, 1) as RedirectToActionResult; Assert.Equal(result.ActionName, nameof(ItineraryController.Details)); Assert.Equal(result.RouteValues, new Dictionary<string, object> { ["id"] = itineraryId }); }
public async Task EditPost_ReturnsBadResult_WhenEditItineraryQuery_ReturnsNull() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(null); var sut = new ItineraryController(mediator.Object, Mock.Of<IItineraryEditModelValidator>()); Assert.IsType<BadRequestResult>(await sut.Edit(new ItineraryEditViewModel { Id = 50 })); }
public async Task AddTeamMemberSendsOrganizationIdQueryWithCorrectItineraryId() { const int itineraryId = 1; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>())).ReturnsAsync(true); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, null); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()) }); await sut.AddTeamMember(itineraryId, 0); mockMediator.Verify(x => x.SendAsync(It.Is<OrganizationIdQuery>(y => y.ItineraryId == itineraryId)), Times.Once); }
public async Task AddRequestsSendsOrganizationIdQueryWithCorrectItineraryId() { const int itineraryId = 1; var mockMediator = new Mock<IMediator>(); var sut = new ItineraryController(mockMediator.Object, null); await sut.AddRequests(itineraryId, It.IsAny<List<string>>()); mockMediator.Verify(x => x.SendAsync(It.Is<OrganizationIdQuery>(y => y.ItineraryId == itineraryId)), Times.Once); }
public async Task AddRequestsSendsAddRequestsCommandWhenThereAreSelectedRequests() { const int orgId = 1; var itineraryId = It.IsAny<int>(); var selectedRequests = new List<string> { "request1", "request2" }; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(orgId); mockMediator.Setup(x => x.SendAsync(It.IsAny<AddRequestsToItineraryCommand>())).ReturnsAsync(true); var sut = new ItineraryController(mockMediator.Object, null); sut.MakeUserAnOrgAdmin(orgId.ToString()); await sut.AddRequests(itineraryId, selectedRequests); mockMediator.Verify(x => x.SendAsync(It.Is<AddRequestsToItineraryCommand>(y => y.RequestIdsToAdd.Equals(selectedRequests))), Times.Once); }
public async Task DetailsReturnsHttpUnauthorizedResultWhenUserIsNotOrgAdmin() { var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<ItineraryDetailQuery>())).ReturnsAsync(new ItineraryDetailsViewModel()); var sut = new ItineraryController(mediator.Object, null); sut.MakeUserNotAnOrgAdmin(); Assert.IsType<UnauthorizedResult>(await sut.Details(It.IsAny<int>())); }
public async Task EditPost_ReturnsRedirect_AfterCommandIsSent() { var model = new ItineraryEditViewModel { Id = 1, EventId = 1, Name = "Test", Date = new DateTime(2016, 06, 01) }; var mediator = new Mock<IMediator>(); var itinerarySummaryModel = new ItinerarySummaryViewModel { Id = 1, Name = "Itinerary", OrganizationId = 1, EventSummary = new EventSummaryViewModel { StartDateTime = new DateTimeOffset(new DateTime(2016, 01, 01)), EndDateTime = new DateTimeOffset(new DateTime(2016, 12, 31)) } }; mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(itinerarySummaryModel); mediator.Setup(x => x.SendAsync(It.IsAny<EditItineraryCommand>())).ReturnsAsync(0); var mockValidator = new Mock<IItineraryEditModelValidator>(); mockValidator.Setup(mock => mock.Validate(It.IsAny<ItineraryEditViewModel>(), It.IsAny<EventSummaryViewModel>())).Returns(new List<KeyValuePair<string, string>>()); var sut = new ItineraryController(mediator.Object, mockValidator.Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); var result = await sut.Edit(model); var redirectResult = Assert.IsType<RedirectToActionResult>(result); redirectResult.ActionName.ShouldBe("Details"); var id = redirectResult.RouteValues["id"]; id.ShouldNotBeNull(); id.ShouldBe(model.Id); }
public async Task EditPost_SendsEditItineraryCommand_WithCorrectItineraryEditModel() { var model = new ItineraryEditViewModel { EventId = 1, Name = "Test", Date = new DateTime(2016, 06, 01) }; var mediator = new Mock<IMediator>(); var itinerarySummaryModel = new ItinerarySummaryViewModel { Id = 1, Name = "Itinerary", OrganizationId = 1, EventSummary = new EventSummaryViewModel { StartDateTime = new DateTimeOffset(new DateTime(2016, 01, 01)), EndDateTime = new DateTimeOffset(new DateTime(2016, 12, 31)) } }; mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(itinerarySummaryModel); mediator.Setup(x => x.SendAsync(It.IsAny<EditItineraryCommand>())).ReturnsAsync(0).Verifiable(); var mockValidator = new Mock<IItineraryEditModelValidator>(); mockValidator.Setup(mock => mock.Validate(It.IsAny<ItineraryEditViewModel>(), It.IsAny<EventSummaryViewModel>())).Returns(new List<KeyValuePair<string, string>>()); var sut = new ItineraryController(mediator.Object, mockValidator.Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); await sut.Edit(model); mediator.Verify(x => x.SendAsync(It.Is<EditItineraryCommand>(y => y.Itinerary == model)), Times.Once); }
public async Task EditPost_ReturnsHttpUnauthorizedResult_WhenUserIsNotOrgAdminForEventOrg() { const int orgId = 1; var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(new ItinerarySummaryViewModel { OrganizationId = orgId }); var sut = new ItineraryController(mediator.Object, MockSuccessValidation().Object); sut.MakeUserNotAnOrgAdmin(); Assert.IsType<UnauthorizedResult>(await sut.Edit(new ItineraryEditViewModel { Id = 50 })); }
public async Task EditPost_ReturnsViewWithModel_WhenValidatonFails() { var model = new ItineraryEditViewModel { EventId = 1, Name = "Test", Date = new DateTime(2016, 06, 01) }; var mediator = new Mock<IMediator>(); var itinerarySummaryModel = new ItinerarySummaryViewModel { Id = 1, Name = "Itinerary", OrganizationId = 1, EventSummary = new EventSummaryViewModel { StartDateTime = new DateTimeOffset(new DateTime(2016, 01, 01)), EndDateTime = new DateTimeOffset(new DateTime(2016, 12, 31)) } }; mediator.Setup(x => x.SendAsync(It.IsAny<ItinerarySummaryQuery>())).ReturnsAsync(itinerarySummaryModel); var validatorError = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("key", "value") }; var mockValidator = new Mock<IItineraryEditModelValidator>(); mockValidator.Setup(mock => mock.Validate(It.IsAny<ItineraryEditViewModel>(), It.IsAny<EventSummaryViewModel>())).Returns(validatorError); var sut = new ItineraryController(mediator.Object, mockValidator.Object); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()), new Claim(AllReady.Security.ClaimTypes.Organization, "1") }); var result = await sut.Edit(model); var viewResult = Assert.IsType<ViewResult>(result); var resultViewModel = viewResult.ViewData.Model; Assert.IsType<ItineraryEditViewModel>(resultViewModel); Assert.Equal(resultViewModel, model); }
public async Task SelectRequestsPostWithTwoParametersSetsSelectItineraryRequestsModelWithTheCorrectData() { var itineraryRequestsModel = new SelectItineraryRequestsViewModel { KeywordsFilter = "These are keywords" }; var itinerary = GetItineraryForSelectRequestHappyPathTests(); var returnedRequests = GetRequestsForSelectRequestHappyPathTests(); var mediator = new Mock<IMediator>(); mediator.Setup(x => x.SendAsync(It.Is<ItineraryDetailQuery>(y => y.ItineraryId == itinerary.Id))) .ReturnsAsync(itinerary); mediator.Setup(x => x.SendAsync(It.Is<RequestListItemsQuery>(y => y.Criteria.Keywords.Equals(itineraryRequestsModel.KeywordsFilter) && y.Criteria.EventId == itinerary.EventId))) .ReturnsAsync(returnedRequests); var sut = new ItineraryController(mediator.Object, null); var view = await sut.SelectRequests(itinerary.Id, itineraryRequestsModel); RunSelectRequestsHappyPathTests(view, itinerary, returnedRequests); }
public void AddTeamMemberHasHttpPostAttribute() { var sut = new ItineraryController(null, null); var attribute = sut.GetAttributesOn(x => x.AddTeamMember(It.IsAny<int>(), It.IsAny<int>())).OfType<HttpPostAttribute>().SingleOrDefault(); Assert.NotNull(attribute); }
public async Task AddRequestsReturnsHttpUnauthorizedWhenUserIsNotOrgAdmin() { var itineraryId = It.IsAny<int>(); var selectedRequests = new List<string> { "request1", "request2" }; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, null); sut.MakeUserNotAnOrgAdmin(); Assert.IsType<UnauthorizedResult>(await sut.AddRequests(itineraryId, selectedRequests)); }
public void AddTeamMemberHasValidateAntiForgeryAttribute() { var sut = new ItineraryController(null, null); var routeAttribute = sut.GetAttributesOn(x => x.AddTeamMember(It.IsAny<int>(), It.IsAny<int>())).OfType<ValidateAntiForgeryTokenAttribute>().SingleOrDefault(); Assert.NotNull(routeAttribute); }
public async Task AddRequestsRedirectsToCorrectActionWithCorrectRouteValuesWhenOrganizationIdIsNotZero_AndUserIsOrgAdmin_AndThereAreSelectedRequests() { const int orgId = 1; var itineraryId = It.IsAny<int>(); var selectedRequests = new List<string> { "request1", "request2" }; var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(orgId); var sut = new ItineraryController(mockMediator.Object, null); sut.MakeUserAnOrgAdmin(orgId.ToString()); var result = await sut.AddRequests(itineraryId, selectedRequests) as RedirectToActionResult; Assert.Equal(result.ActionName, nameof(ItineraryController.Details)); Assert.Equal(result.RouteValues, new Dictionary<string, object> { ["id"] = itineraryId }); }
public async Task AddTeamMemberDoesNotCallAddTeamMemberCommand_WhenSelectedTeamMemberIsZero() { var mockMediator = new Mock<IMediator>(); mockMediator.Setup(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>())).ReturnsAsync(true); mockMediator.Setup(x => x.SendAsync(It.IsAny<OrganizationIdQuery>())).ReturnsAsync(1); var sut = new ItineraryController(mockMediator.Object, null); sut.SetClaims(new List<Claim> { new Claim(AllReady.Security.ClaimTypes.UserType, UserType.SiteAdmin.ToString()) }); await sut.AddTeamMember(1, 0); mockMediator.Verify(x => x.SendAsync(It.IsAny<AddTeamMemberCommand>()), Times.Never); }