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; }
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)); }