public void Ok() { ImmunizationViewResponse expectedViewResponse = new ImmunizationViewResponse() { Id = Guid.NewGuid(), SourceSystemId = "mockSourceSystemId", Name = "mockName", OccurrenceDateTime = DateTime.ParseExact("2020/09/10 17:16:10.809", "yyyy/MM/dd HH:mm:ss.fff", CultureInfo.InvariantCulture) }; PHSAResult <ImmunizationResponse> phsaResponse = new PHSAResult <ImmunizationResponse>() { Result = new ImmunizationResponse() { ImmunizationViews = new List <ImmunizationViewResponse>() { expectedViewResponse } } }; string json = JsonSerializer.Serialize(phsaResponse, null); using Microsoft.Extensions.Logging.ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); IHttpClientService httpClientService = GetHttpClientService(HttpStatusCode.OK, json); IImmunizationDelegate immsDelegate = new RestImmunizationDelegate(loggerFactory.CreateLogger <RestImmunizationDelegate>(), httpClientService, this.configuration); var actualResult = immsDelegate.GetImmunizations("token", 0).Result; Assert.Equal(Common.Constants.ResultType.Success, actualResult.ResultStatus); Assert.NotNull(actualResult.ResourcePayload); Assert.Equal(1, actualResult.ResourcePayload.Result.ImmunizationViews.Count()); }
/// <inheritdoc/> public async Task <RequestResult <IEnumerable <LaboratoryOrder> > > GetLaboratoryOrders(string bearerToken, string hdid, int pageIndex = 0) { using (Source.StartActivity("GetLaboratoryOrders")) { RequestResult <IEnumerable <LaboratoryOrder> > retVal = new RequestResult <IEnumerable <LaboratoryOrder> >() { ResultStatus = Common.Constants.ResultType.Error, PageIndex = pageIndex, }; this.logger.LogDebug($"Getting laboratory orders..."); using HttpClient client = this.httpClientService.CreateDefaultHttpClient(); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", bearerToken); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json)); var query = new Dictionary <string, string?> { ["limit"] = this.labConfig.FetchSize, ["subjectHdid"] = hdid, }; try { Uri endpoint = new Uri(QueryHelpers.AddQueryString(this.labConfig.Endpoint, query)); HttpResponseMessage response = await client.GetAsync(endpoint).ConfigureAwait(true); string payload = await response.Content.ReadAsStringAsync().ConfigureAwait(true); this.logger.LogTrace($"Response: {response}"); switch (response.StatusCode) { case HttpStatusCode.OK: var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, IgnoreNullValues = true, WriteIndented = true, }; this.logger.LogTrace($"Response payload: {payload}"); PHSAResult <List <LaboratoryOrder> >?phsaResult = JsonSerializer.Deserialize <PHSAResult <List <LaboratoryOrder> > >(payload, options); if (phsaResult != null && phsaResult.Result != null) { retVal.ResultStatus = Common.Constants.ResultType.Success; retVal.ResourcePayload = phsaResult.Result; retVal.TotalResultCount = phsaResult.Result.Count; #pragma warning disable CA1305 // Specify IFormatProvider retVal.PageSize = int.Parse(this.labConfig.FetchSize); #pragma warning restore CA1305 // Specify IFormatProvider } else { retVal.ResultError = new RequestResultError() { ResultMessage = "Error with JSON data", ErrorCode = ErrorTranslator.ServiceError(ErrorType.CommunicationExternal, ServiceType.PHSA) }; } break; case HttpStatusCode.NoContent: // No Lab exits for this user retVal.ResultStatus = Common.Constants.ResultType.Success; retVal.ResourcePayload = new List <LaboratoryOrder>(); retVal.TotalResultCount = 0; #pragma warning disable CA1305 // Specify IFormatProvider retVal.PageSize = int.Parse(this.labConfig.FetchSize); #pragma warning restore CA1305 // Specify IFormatProvider break; case HttpStatusCode.Forbidden: retVal.ResultError = new RequestResultError() { ResultMessage = $"DID Claim is missing or can not resolve PHN, HTTP Error {response.StatusCode}", ErrorCode = ErrorTranslator.ServiceError(ErrorType.CommunicationExternal, ServiceType.PHSA) }; break; default: retVal.ResultError = new RequestResultError() { ResultMessage = $"Unable to connect to Labs Endpoint, HTTP Error {response.StatusCode}", ErrorCode = ErrorTranslator.ServiceError(ErrorType.CommunicationExternal, ServiceType.PHSA) }; this.logger.LogError($"Unable to connect to endpoint {endpoint}, HTTP Error {response.StatusCode}\n{payload}"); break; } } #pragma warning disable CA1031 // Do not catch general exception types catch (Exception e) #pragma warning restore CA1031 // Do not catch general exception types { retVal.ResultError = new RequestResultError() { ResultMessage = $"Exception getting Lab Orders: {e}", ErrorCode = ErrorTranslator.ServiceError(ErrorType.CommunicationExternal, ServiceType.PHSA) }; this.logger.LogError($"Unexpected exception in Get Lab Orders {e}"); } this.logger.LogDebug($"Finished getting Laboratory Orders"); return(retVal); } }