Exemple #1
0
        private async Task<List<ApplicationHealthModel>> CreateApplicationHealthModelTasksAsync(IList<Models.PathModel> paths)
        {
            var bearerToken = User.Identity.IsAuthenticated ? await bearerTokenRetriever.GetToken(HttpContext).ConfigureAwait(false) : null;

            var applicationHealthModels = new List<ApplicationHealthModel>();

            foreach (var path in paths)
            {
                logger.LogInformation($"{nameof(Action)}: Getting child Health for: {path.Path}");

                var applicationBaseUrl = await GetPathBaseUrlFromBodyRegionAsync(path.Path).ConfigureAwait(false);

                var applicationHealthModel = new ApplicationHealthModel
                {
                    Path = path.Path,
                    BearerToken = bearerToken,
                    HealthUrl = $"{applicationBaseUrl}/health",
                };

                applicationHealthModel.RetrievalTask = applicationHealthService.GetAsync(applicationHealthModel);

                applicationHealthModels.Add(applicationHealthModel);
            }

            return applicationHealthModels;
        }
Exemple #2
0
        public async Task HealthReturnsSuccess(string mediaTypeName)
        {
            //Arrange
            var claims = new List <Claim>();
            var user   = new ClaimsPrincipal(new ClaimsIdentity(claims));

            healthController.ControllerContext             = new ControllerContext();
            healthController.ControllerContext.HttpContext = new DefaultHttpContext()
            {
                User = user
            };
            healthController.ControllerContext.HttpContext.Request.Headers.Add(HeaderNames.Accept, mediaTypeName);

            var path1      = "path1";
            var path2      = "path2";
            var pathModels = new List <PathModel>
            {
                new PathModel
                {
                    Path     = path1,
                    IsOnline = true,
                },
                new PathModel
                {
                    Path     = path2,
                    IsOnline = false,
                },
            };

            var regions = new List <RegionModel>()
            {
                new RegionModel()
                {
                    Path           = path1,
                    RegionEndpoint = $"http://localhost/{path1}/region1",
                    PageRegion     = PageRegion.Body,
                },
                new RegionModel()
                {
                    Path           = path2,
                    RegionEndpoint = $"http://localhost/{path2}/region2",
                    PageRegion     = PageRegion.Body,
                },
            };

            var path1HealthItemModels = new List <HealthItemModel>();

            path1HealthItemModels.Add(new HealthItemModel()
            {
                Message = "Message1", Service = "Service1"
            });
            path1HealthItemModels.Add(new HealthItemModel()
            {
                Message = "Message2", Service = "Service2"
            });

            A.CallTo(() => pathDataService.GetPaths()).Returns(pathModels);
            A.CallTo(() => regionService.GetRegions(A <string> .Ignored)).Returns(regions);
            A.CallTo(() => applicationHealthService.GetAsync(A <ApplicationHealthModel> .Ignored)).Returns(path1HealthItemModels);

            //Act
            var result = await healthController.Health().ConfigureAwait(false);

            var model = GetModel <HealthViewModel>(result);

            //Assert
            Assert.Equal(4, model.HealthItems.Count);
            Assert.Contains(model.HealthItems, x => x.Message.Contains("Composite Shell is available", StringComparison.OrdinalIgnoreCase));
            Assert.Contains(model.HealthItems, x => x.Message.Contains("Message1", StringComparison.OrdinalIgnoreCase));
            Assert.Contains(model.HealthItems, x => x.Message.Contains("Message2", StringComparison.OrdinalIgnoreCase));
            Assert.Contains(model.HealthItems, x => x.Message.Contains("Skipped health check for: path2, because it is offline", StringComparison.OrdinalIgnoreCase));
        }