public async Task GetPathsReturnsPathModelResults() { using var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new ObjectContent(typeof(List <AppRegistrationModel>), appRegistrationModels, new JsonMediaTypeFormatter()), }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); using var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var logger = A.Fake <ILogger <AppRegistryService> >(); using var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomePathBaseAddress"), }; using var memoryCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); var appRegistryService = new AppRegistryService(logger, httpClient, memoryCache); var result = await appRegistryService.GetPaths(); Assert.Equal(appRegistrationModels, result); }
public async Task SetRegionHealthStateSuccess() { // Arrange const bool expectedResult = true; using var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); using var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var logger = A.Fake <ILogger <AppRegistryService> >(); using var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomePathBaseAddress"), }; using var memoryCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); var appRegistryService = new AppRegistryService(logger, httpClient, memoryCache); // Act var result = await appRegistryService.SetRegionHealthState(appRegistrationModels.First().Path, appRegistrationModels.First().Regions.First().PageRegion, expectedResult); // Assert Assert.Equal(expectedResult, result); }
public async Task MarkAjaxRequestAsHealthyReturnsAppropriateResponseWhenPatchMessageSent(bool success, HttpStatusCode statusCode) { // Arrange var httpClientFactory = A.Fake <IHttpClientFactory>(); using var httpResponse = new HttpResponseMessage { StatusCode = statusCode }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); var fakeILogger = A.Fake <ILogger <AppRegistryService> >(); using var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); using var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://baseaddress.com") }; A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); A.CallTo(() => httpClientFactory.CreateClient(A <string> .Ignored)).Returns(httpClient); var appRegistryService = new AppRegistryService(httpClientFactory, fakeILogger); // Act var response = await appRegistryService.MarkAjaxRequestAsHealthy("path1", "ajax-1").ConfigureAwait(false); // Assert Assert.Equal(success, response); }
public async Task SetAjaxRequestHealthStateThrowsException() { // Arrange using var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.NotFound, }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); using var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var logger = A.Fake <ILogger <AppRegistryService> >(); using var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomePathBaseAddress"), }; using var memoryCache = new MemoryCache(Options.Create(new MemoryCacheOptions())); var appRegistryService = new AppRegistryService(logger, httpClient, memoryCache); // Act & Assert await Assert.ThrowsAnyAsync <HttpRequestException>(async() => await appRegistryService.SetAjaxRequestHealthState(appRegistrationModels.First().Path, appRegistrationModels.First().AjaxRequests.First().Name, true)); }
public async Task SetAjaxRequestHealthStateCircuitBreakerException() { // Arrange const bool expectedResult = false; using var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Throws <BrokenCircuitException>(); using var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var logger = A.Fake <ILogger <AppRegistryService> >(); using var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomePathBaseAddress"), }; var appRegistryService = new AppRegistryService(logger, httpClient); // Act var result = await appRegistryService.SetAjaxRequestHealthState(appRegistrationModels.First().Path, appRegistrationModels.First().AjaxRequests.First().Name, expectedResult).ConfigureAwait(false); // Assert Assert.Equal(expectedResult, result); }
public async Task GetPathsAndRegionsReturnsListOfPaths() { var regionHead = new RegionModel() { IsHealthy = true, HealthCheckRequired = true, PageRegion = Data.Enums.PageRegion.Head }; var regionBody = new RegionModel() { IsHealthy = true, HealthCheckRequired = true, PageRegion = Data.Enums.PageRegion.Body }; // Arrange var listOfPaths = new List <AppRegistryModel> { new AppRegistryModel { Path = "Path1", Regions = new List <RegionModel>() { regionBody }, }, new AppRegistryModel { Path = "Path2", Regions = new List <RegionModel>() { regionHead }, }, }; var content = new StringContent(JsonConvert.SerializeObject(listOfPaths), Encoding.Default, "application/json"); var httpClientFactory = A.Fake <IHttpClientFactory>(); var fakeILogger = A.Fake <ILogger <AppRegistryService> >(); using var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = content }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); using var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); using var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://baseaddress.com") }; A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); A.CallTo(() => httpClientFactory.CreateClient(A <string> .Ignored)).Returns(httpClient); var appRegistryService = new AppRegistryService(httpClientFactory, fakeILogger); // Act var result = await appRegistryService.GetPathsAndRegions().ConfigureAwait(false); // Assert Assert.True(result.ToList().Count == listOfPaths.Count); }
public async Task MarkAjaxRequestAsHealthyCatchesExceoptionTest() { // Arrange var httpClientFactory = A.Fake <IHttpClientFactory>(); var fakeILogger = A.Fake <ILogger <AppRegistryService> >(); A.CallTo(() => httpClientFactory.CreateClient(A <string> .Ignored)).Throws <HttpRequestException>(); var appRegistryService = new AppRegistryService(httpClientFactory, fakeILogger); // Act var response = await appRegistryService.MarkAjaxRequestAsHealthy("path1", "ajax-1").ConfigureAwait(false); // Assert Assert.False(response); }
public async Task GetPathsAndRegionsThrowsExceptionWhenNotOkFromPathsApi() { // Arrange var httpClientFactory = A.Fake <IHttpClientFactory>(); using var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.BadRequest }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); var fakeILogger = A.Fake <ILogger <AppRegistryService> >(); using var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); using var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://baseaddress.com") }; A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); A.CallTo(() => httpClientFactory.CreateClient(A <string> .Ignored)).Returns(httpClient); var appRegistryService = new AppRegistryService(httpClientFactory, fakeILogger); // Assert await Assert.ThrowsAsync <HttpRequestException>(async() => await appRegistryService.GetPathsAndRegions().ConfigureAwait(false)).ConfigureAwait(false); }
public async Task GetPathsReturnsPathModelResults() { var responseContent = new List <AppRegistrationModel> { new AppRegistrationModel { IsOnline = true, Path = "SomeFakePath", }, }; var httpResponse = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new ObjectContent(typeof(List <AppRegistrationModel>), responseContent, new JsonMediaTypeFormatter()), }; var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>(); A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse); var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender); var logger = A.Fake <ILogger <AppRegistryService> >(); var httpClient = new HttpClient(fakeHttpMessageHandler) { BaseAddress = new Uri("http://SomePathBaseAddress"), }; var appRegistryService = new AppRegistryService(logger, httpClient); var result = await appRegistryService.GetPaths().ConfigureAwait(false); Assert.Equal(responseContent, result); httpResponse.Dispose(); httpClient.Dispose(); fakeHttpMessageHandler.Dispose(); }