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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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();
        }