public async Task ReturnsBadRequestWithInvalidDuration() { var fixture = new Fixture(); var testShift = fixture.Build <NewShift>() .With(j => j.Duration, TimeSpan.FromHours(-2)) .Create(); var body = JsonConvert.SerializeObject(testShift); var bodyArray = Encoding.UTF8.GetBytes(body); var bodyStream = new MemoryStream(bodyArray); var shiftService = new Mock <IShiftService>(MockBehavior.Strict).Object; var function = new LogShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); request.Body = bodyStream; var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <BadRequestResult>(); }
public async Task ReturnsOkIfValidRequest() { var fixture = new Fixture(); var testId = fixture.Create <string>(); var testShift = fixture.Build <NewShift>() .With(j => j.Duration, TimeSpan.FromHours(2)) .Create(); var body = JsonConvert.SerializeObject(testShift); var bodyArray = Encoding.UTF8.GetBytes(body); var bodyStream = new MemoryStream(bodyArray); var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict); shiftServiceMock.Setup(s => s.AddShift(AuthenticationHelperMock.GoodUserId, It.Is <NewShift>(j => j.Equals(testShift)))).ReturnsAsync(testId); var shiftService = shiftServiceMock.Object; var function = new LogShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); request.Body = bodyStream; var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <OkResult>(); shiftServiceMock.Verify(s => s.AddShift(AuthenticationHelperMock.GoodUserId, It.Is <NewShift>(j => j.Equals(testShift)))); }
public async Task ReturnsShiftWithGoodId() { var fixture = new Fixture(); var testShift = fixture.Create <Shift>(); var expectedResult = new UpdatedShift { CrewMate = testShift.CrewMate, Date = testShift.Date, Duration = testShift.Duration, Event = testShift.Event, Id = testShift.Id, Location = testShift.Location, Role = testShift.Role }; var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict); shiftServiceMock.Setup(s => s.GetShift(AuthenticationHelperMock.GoodUserId, testShift.Id)).ReturnsAsync(testShift); var shiftService = shiftServiceMock.Object; var function = new GetShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); request.QueryString = new QueryString($"?id={testShift.Id}"); var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <OkObjectResult>() .Which.Value.Should().BeEquivalentTo(expectedResult); }
public async Task ReturnsUnauthorisedWithNoClaims() { var shiftService = new Mock <IShiftService>(MockBehavior.Strict).Object; var function = new GetJobs(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <UnauthorizedResult>(); }
public async Task ReturnsBadRequestIfNoShiftId() { var shiftService = new Mock <IShiftService>(MockBehavior.Strict).Object; var function = new GetJobs(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <BadRequestResult>(); }
public async Task ReturnsOkIfValidRequest() { var fixture = new Fixture(); var testId = fixture.Create <string>(); var testOriginalShift = fixture.Build <Shift>() .With(j => j.Duration, TimeSpan.FromHours(2)) .Create(); var testUpdatedShift = fixture.Build <UpdatedShift>() .With(j => j.Id, testOriginalShift.Id) .With(j => j.Duration, TimeSpan.FromHours(3)) .Create(); var updatedShift = new Shift { CrewMate = testUpdatedShift.CrewMate, Date = testUpdatedShift.Date, Duration = testUpdatedShift.Duration, Event = testUpdatedShift.Event, Id = testUpdatedShift.Id, Location = testUpdatedShift.Location, Role = testUpdatedShift.Role, UserId = testOriginalShift.UserId, Jobs = testOriginalShift.Jobs }; var body = JsonConvert.SerializeObject(testUpdatedShift); var bodyArray = Encoding.UTF8.GetBytes(body); var bodyStream = new MemoryStream(bodyArray); var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict); shiftServiceMock.Setup(s => s.GetShift(AuthenticationHelperMock.GoodUserId, testOriginalShift.Id)).ReturnsAsync(testOriginalShift); shiftServiceMock.Setup(s => s.UpdateShift(AuthenticationHelperMock.GoodUserId, It.Is <Shift>(u => updatedShift.Equals(u)))).Returns(Task.CompletedTask); var shiftService = shiftServiceMock.Object; var function = new UpdateShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); request.Body = bodyStream; var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <OkResult>(); shiftServiceMock.Verify(s => s.UpdateShift(AuthenticationHelperMock.GoodUserId, It.Is <Shift>(u => updatedShift.Equals(u)))); }
public async Task ReturnsBadRequestWithInvalidJson() { var body = JsonConvert.SerializeObject("{ invalidjson }"); var bodyArray = Encoding.UTF8.GetBytes(body); var bodyStream = new MemoryStream(bodyArray); var shiftService = new Mock <IShiftService>(MockBehavior.Strict).Object; var function = new UpdateShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); request.Body = bodyStream; var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <BadRequestResult>(); }
public async Task ReturnsNotFoundRequestIfNoShift() { var fixture = new Fixture(); var testShift = fixture.Create <Shift>(); var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict); shiftServiceMock.Setup(s => s.GetShift(AuthenticationHelperMock.GoodUserId, testShift.Id)).Returns(Task.FromResult <Shift>(null)); var shiftService = shiftServiceMock.Object; var function = new GetJobs(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); request.QueryString = new QueryString($"?shiftId={testShift.Id}"); var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <NotFoundResult>(); }
public async Task ReturnsEmptyIfPageTooLarge() { var fixture = new Fixture(); var testShifts = fixture.CreateMany <Shift>(20); var expectedShifts = Enumerable.Empty <ShiftSummary>(); var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict); shiftServiceMock.Setup(s => s.GetAllShifts(AuthenticationHelperMock.GoodUserId)).ReturnsAsync(testShifts); var shiftService = shiftServiceMock.Object; var function = new GetAllShifts(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); request.QueryString = new QueryString($"?page=10"); var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <OkObjectResult>() .Which.Value.Should().BeEquivalentTo(expectedShifts); request.HttpContext.Response.Headers["X-Total-Count"].Should().BeEquivalentTo(new[] { testShifts.Count().ToString() }); }
public async Task ReturnsSpecifiedIfPageAndCountSpecified() { const int count = 5; const int page = 2; var fixture = new Fixture(); var testShifts = fixture.CreateMany <Shift>(20); var expectedShifts = testShifts.OrderByDescending(s => s.Date).Skip(count * page).Take(count).Select(s => new ShiftSummary { CrewMate = s.CrewMate, Date = s.Date, Duration = s.Duration, Event = s.Event, Id = s.Id, Location = s.Location, LoggedCalls = s.Jobs?.Count ?? 0, Role = s.Role }); var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict); shiftServiceMock.Setup(s => s.GetAllShifts(AuthenticationHelperMock.GoodUserId)).ReturnsAsync(testShifts); var shiftService = shiftServiceMock.Object; var function = new GetAllShifts(shiftService, AuthenticationHelperMock.GetAuthenticationHelper()); var request = new DefaultHttpRequest(new DefaultHttpContext()); request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader); request.QueryString = new QueryString($"?count={count}&page={page}"); var result = await function.Run(request, NullLogger.Instance); result.Should().BeOfType <OkObjectResult>() .Which.Value.Should().BeEquivalentTo(expectedShifts); request.HttpContext.Response.Headers["X-Total-Count"].Should().BeEquivalentTo(new[] { testShifts.Count().ToString() }); }