public async Task GetSystems_WithValidResponse_ReturnsSystems() { // arrange var mockFactory = new Mock <IHttpClientFactory>(); var mockHttpMessageHandler = new Mock <HttpMessageHandler>(); var mockContentResponse = GetFakeCosyDeviceReponse(); mockHttpMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()).ReturnsAsync( new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(mockContentResponse), Encoding.UTF8, "application/json"), }); var client = new HttpClient(mockHttpMessageHandler.Object); mockFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client); var geoCosyClient = new GeoCosyClient(mockFactory.Object); // act var response = await geoCosyClient.GetSystems("incorrect-token", false); // assert response.Data.ShouldNotBeNull(); response.Data.SystemDetails[0].ShouldBeEquivalentTo(mockContentResponse.SystemDetails[0]); response.Data.SystemRoles[0].ShouldBeEquivalentTo(mockContentResponse.SystemRoles[0]); }
public async Task GetSystems_WithInvalidToken_ReturnsErrorResponse() { // arrange var mockFactory = new Mock <IHttpClientFactory>(); var mockHttpMessageHandler = new Mock <HttpMessageHandler>(); mockHttpMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >( "SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()).ReturnsAsync( new HttpResponseMessage { StatusCode = HttpStatusCode.Forbidden }); var client = new HttpClient(mockHttpMessageHandler.Object); mockFactory.Setup(_ => _.CreateClient(It.IsAny <string>())).Returns(client); var geoCosyClient = new GeoCosyClient(mockFactory.Object); // act var response = await geoCosyClient.GetSystems("incorrect-token", false); // assert response.Data.ShouldBeNull(); response.Errors.ShouldContain(x => x.ErrorCode == ErrorCode.NotAllowed); }