public async Task WhenGivenAValidRoadIdGetRoadStatusReturnHttpStatusCode200AndRoadStatus() { //arrange var mockHttpMessageHandler = new Mock <HttpMessageHandler>(); mockHttpMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>() ).ReturnsAsync(new HttpResponseMessage() { StatusCode = HttpStatusCode.OK, Content = new StringContent("[{\"$type\":\"Tfl.Api.Presentation.Entities.RoadCorridor, " + "Tfl.Api.Presentation.Entities\",\"id\":\"a2\",\"displayName\":\"" + "A2\",\"statusSeverity\":\"Good\",\"statusSeverityDescription\":\"" + "No Exceptional Delays\",\"bounds\":\"[[-0.0857,51.44091],[0.17118,51.49438]]\"," + "\"envelope\":\"[[-0.0857,51.44091],[-0.0857,51.49438],[0.17118,51.49438],[0.17118,51.44091],[-0.0857,51.44091]]\"," + "\"url\":\"/Road/a2\"}]") }); _mockHttpClientFactory.Setup(x => x.CreateClient(It.IsAny <string>())) .Returns(new HttpClient(mockHttpMessageHandler.Object)); var httpClient = new HttpClient(mockHttpMessageHandler.Object) { BaseAddress = new Uri("https://test.com/"), Timeout = new TimeSpan(0, 0, 45) }; httpClient.DefaultRequestHeaders.Clear(); _mockHttpClientFactory.Setup(x => x.CreateClient(It.IsAny <string>())) .Returns(httpClient); _mockTflApiSettings.Setup <TflApiSettings>(x => x.Value).Returns(new TflApiSettings { ApiId = "12345678", ApiKey = "89101123ABCDEFGH" }); var roadCorridorService = new RoadCorridorService(_mockHttpClientFactory.Object, _mockTflApiSettings.Object, _mockLogger.Object); var cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource.CancelAfter(30000); //act var roadCorridorResponse = await roadCorridorService.GetRoadStatus("A2", cancellationTokenSource.Token); //assert roadCorridorResponse.ShouldNotBeNull(); ((int)roadCorridorResponse.HttpStatus).ShouldEqual(200); roadCorridorResponse.RoadCorridor.ShouldNotBeNull(); roadCorridorResponse.RoadCorridor.DisplayName.ShouldEqual("A2"); roadCorridorResponse.RoadCorridor.RoadStatus.ShouldEqual("Good"); roadCorridorResponse.RoadCorridor.RoadStatusDescription.ShouldEqual("No Exceptional Delays"); }
public void GetRoadStatusMethodShouldThrowArgumentNullExceptionWhenNullRoadIdPassed() { //arrange _mockTflApiSettings.Setup <TflApiSettings>(x => x.Value).Returns(new TflApiSettings { ApiId = "12345678", ApiKey = "89101123ABCDEFGH" }); var roadCorridorService = new RoadCorridorService(_mockHttpClientFactory.Object, _mockTflApiSettings.Object, _mockLogger.Object); var cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource.CancelAfter(30000); //assert async Task <RoadCorridorResponse> ActualValueDelegate() => await roadCorridorService.GetRoadStatus(null, cancellationTokenSource.Token); Assert.That(ActualValueDelegate, Throws.Exception.TypeOf <ArgumentNullException>()); }
public async Task WhenGivenAnInvalidRoadIdGetRoadStatusReturnHttpStatusCode404() { //arrange var mockHttpMessageHandler = new Mock <HttpMessageHandler>(); mockHttpMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>() ).ReturnsAsync(new HttpResponseMessage() { StatusCode = HttpStatusCode.NotFound }); _mockHttpClientFactory.Setup(x => x.CreateClient(It.IsAny <string>())) .Returns(new HttpClient(mockHttpMessageHandler.Object)); var httpClient = new HttpClient(mockHttpMessageHandler.Object) { BaseAddress = new Uri("https://test.com/"), Timeout = new TimeSpan(0, 0, 45) }; httpClient.DefaultRequestHeaders.Clear(); _mockHttpClientFactory.Setup(x => x.CreateClient(It.IsAny <string>())) .Returns(httpClient); _mockTflApiSettings.Setup <TflApiSettings>(x => x.Value).Returns(new TflApiSettings { ApiId = "12345678", ApiKey = "89101123ABCDEFGH" }); var roadCorridorService = new RoadCorridorService(_mockHttpClientFactory.Object, _mockTflApiSettings.Object, _mockLogger.Object); var cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource.CancelAfter(30000); //act var roadCorridorResponse = await roadCorridorService.GetRoadStatus("A338", cancellationTokenSource.Token); //assert roadCorridorResponse.ShouldNotBeNull(); ((int)roadCorridorResponse.HttpStatus).ShouldEqual(404); roadCorridorResponse.RoadCorridor.ShouldEqual(null); }