Ejemplo n.º 1
0
        public async Task WhenSCSClientReturnsOtherThan200And304_ThenSalesCatalougeServiceIsHealthy()
        {
            A.CallTo(() => fakeAuthScsTokenProvider.GetManagedIdentityAuthAsync(A <string> .Ignored)).Returns("notRequiredDuringTesting");
            A.CallTo(() => fakeSalesCatalogueClient.CallSalesCatalogueServiceApi(A <HttpMethod> .Ignored, null, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored))
            .Returns(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.BadRequest, RequestMessage = new HttpRequestMessage()
                {
                    RequestUri = new Uri("http://abc.com")
                }, Content = new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes("BadRequest")))
            });

            var response = await salesCatalogueServiceHealthCheck.CheckHealthAsync(new HealthCheckContext());

            Assert.AreEqual(HealthStatus.Unhealthy, response.Status);
        }
Ejemplo n.º 2
0
        public Task <SalesCatalogueResponse> GetProductsFromSpecificDateAsync(string sinceDateTime, string correlationId)
        {
            return(logger.LogStartEndAndElapsedTimeAsync(
                       EventIds.SCSGetProductsFromSpecificDateRequestStart,
                       EventIds.SCSGetProductsFromSpecificDateRequestCompleted,
                       "Get sales catalogue service from specific date time for _X-Correlation-ID:{CorrelationId}",
                       async() => {
                var accessToken = await authScsTokenProvider.GetManagedIdentityAuthAsync(salesCatalogueConfig.Value.ResourceId);
                var uri = $"/{salesCatalogueConfig.Value.Version}/productData/{salesCatalogueConfig.Value.ProductType}/products?sinceDateTime={sinceDateTime}";

                var httpResponse = await salesCatalogueClient.CallSalesCatalogueServiceApi(HttpMethod.Get, null, accessToken, uri);

                SalesCatalogueResponse response = await CreateSalesCatalogueServiceResponse(httpResponse, correlationId);
                return response;
            },
                       correlationId));
        }
Ejemplo n.º 3
0
        public async Task <HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default)
        {
            string sinceDateTime = DateTime.UtcNow.AddDays(-salesCatalogueConfig.Value.SinceDays).ToString("R");
            var    accessToken   = await authScsTokenProvider.GetManagedIdentityAuthAsync(salesCatalogueConfig.Value.ResourceId);

            var uri = $"/{salesCatalogueConfig.Value.Version}/productData/{salesCatalogueConfig.Value.ProductType}/products?sinceDateTime={sinceDateTime}";
            var salesCatalogueServiceResponse = await salesCatalogueClient.CallSalesCatalogueServiceApi(HttpMethod.Get, null, accessToken, uri);

            if (salesCatalogueServiceResponse.StatusCode == HttpStatusCode.OK || salesCatalogueServiceResponse.StatusCode == HttpStatusCode.NotModified)
            {
                logger.LogDebug(EventIds.SalesCatalogueServiceIsHealthy.ToEventId(), "Sales catalogue service is healthy responded with {StatusCode}", salesCatalogueServiceResponse.StatusCode);
                return(HealthCheckResult.Healthy("Sales catalogue service is healthy"));
            }
            else
            {
                logger.LogError(EventIds.SalesCatalogueServiceIsUnhealthy.ToEventId(), "Sales catalogue service is unhealthy responded with {StatusCode} for request uri {RequestUri}", salesCatalogueServiceResponse.StatusCode, salesCatalogueServiceResponse.RequestMessage.RequestUri);
                return(HealthCheckResult.Unhealthy("Sales catalogue service is unhealthy"));
            }
        }
Ejemplo n.º 4
0
        public async Task WhenSCSClientReturnsOtherThan200And304_ThenGetProductsFromSpecificDateAsyncReturnsSameStatusAndNullInResponse()
        {
            A.CallTo(() => fakeAuthScsTokenProvider.GetManagedIdentityAuthAsync(A <string> .Ignored)).Returns("notRequiredDuringTesting");
            A.CallTo(() => fakeSalesCatalogueClient.CallSalesCatalogueServiceApi(A <HttpMethod> .Ignored, null, A <string> .Ignored, A <string> .Ignored, A <string> .Ignored))
            .Returns(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.BadRequest, RequestMessage = new HttpRequestMessage()
                {
                    RequestUri = new Uri("http://abc.com")
                }, Content = new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes("Bad request")))
            });
            var response = await salesCatalogueService.GetProductsFromSpecificDateAsync(DateTime.UtcNow.ToString(), string.Empty);

            Assert.AreEqual(HttpStatusCode.BadRequest, response.ResponseCode, $"Expected {HttpStatusCode.BadRequest} got {response.ResponseCode}");
            Assert.IsNull(response.ResponseBody);
        }