Ejemplo n.º 1
0
        public async Task ApplyCustomProfilePattern(HttpStatusCode expectedStatusCode)
        {
            GivenTheStatusCode("publishedproviders/customprofiles", expectedStatusCode, HttpMethod.Post);

            ApplyCustomProfileRequest request = new ApplyCustomProfileRequest
            {
                ProviderId        = NewRandomString(),
                CustomProfileName = NewRandomString(),
                FundingPeriodId   = NewRandomString(),
                FundingStreamId   = NewRandomString(),
                FundingLineCode   = NewRandomString()
            };

            NoValidatedContentApiResponse response = await _client.ApplyCustomProfilePattern(request);

            response
            .Should()
            .NotBeNull();

            response
            .StatusCode
            .Should()
            .Be(expectedStatusCode);

            AndTheRequestContentsShouldHaveBeen(request.AsJson());
        }
        public async Task <IActionResult> ApplyCustomProfile([FromBody] ApplyCustomProfileRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(new BadRequestObjectResult(ModelState));
            }

            IEnumerable <FundingStreamPermission> fundingStreamPermissions = await _authorizationHelper.GetUserFundingStreamPermissions(User);

            if (fundingStreamPermissions.All(
                    x => x.FundingStreamId == request.FundingStreamId && x.CanApplyCustomProfilePattern == false))
            {
                return(new ForbidResult());
            }

            NoValidatedContentApiResponse result = await _publishingApiClient.ApplyCustomProfilePattern(request);

            if (result.StatusCode == HttpStatusCode.BadRequest)
            {
                return(BadRequest(result.ModelState));
            }

            if (result.StatusCode == HttpStatusCode.InternalServerError)
            {
                return(new InternalServerErrorResult($"Unable to apply custom profile. An error has occurred.'"));
            }

            return(StatusCode((int)result.StatusCode));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> PublishTemplate([FromRoute] string templateId, [FromBody] TemplatePublishModel model)
        {
            Guard.ArgumentNotNull(model, nameof(model));

            NoValidatedContentApiResponse result = await _client.PublishTemplate(model);

            if (result.StatusCode == HttpStatusCode.BadRequest)
            {
                return(BadRequest(result.ModelState));
            }

            return(StatusCode((int)result.StatusCode));
        }
        public async Task UploadProviderVersion()
        {
            string providerVersionId       = NewRandomString();
            ProviderVersionViewModel model = new ProviderVersionViewModel();

            GivenTheStatusCode($"providers/versions/{providerVersionId}", HttpStatusCode.OK, HttpMethod.Post);

            NoValidatedContentApiResponse apiResponse = await _client.UploadProviderVersion(providerVersionId, model);

            apiResponse?
            .StatusCode
            .Should()
            .Be(HttpStatusCode.OK);

            AndTheRequestContentsShouldHaveBeen(model.AsJson());
        }
        public async Task UpdateFundingStructureLastModified()
        {
            UpdateFundingStructureLastModifiedRequest request = new UpdateFundingStructureLastModifiedRequest
            {
                SpecificationId = NewRandomString()
            };

            GivenTheStatusCode("funding-structures/lastModified", HttpStatusCode.OK, HttpMethod.Post);

            NoValidatedContentApiResponse apiResponse = await _client.UpdateFundingStructureLastModified(request);

            apiResponse?
            .StatusCode
            .Should()
            .Be(HttpStatusCode.OK);

            AndTheRequestContentsShouldHaveBeen(request.AsJson());
        }
        public async Task <NoValidatedContentApiResponse> ValidatedPostAsync <TRequest>(string url,
                                                                                        TRequest request,
                                                                                        CancellationToken cancellationToken = default(CancellationToken),
                                                                                        TimeSpan?timeout = null)
        {
            HttpClient httpClient = await PrepareRequest(url,
                                                         timeout,
                                                         $"ApiClient Validated POST: {{clientKey}}://{{url}} ({typeof(TRequest).Name})",
                                                         _clientKey,
                                                         url);

            if (cancellationToken == default(CancellationToken))
            {
                cancellationToken = CurrentCancellationToken();
            }

            string json = JsonConvert.SerializeObject(request, _serializerSettings);

            using (HttpResponseMessage response = await httpClient.PostAsync(url, new StringContent(json, Encoding.UTF8, "application/json"), cancellationToken))
            {
                HandleNullResponse(url, response, httpClient);

                if (response.IsSuccessStatusCode)
                {
                    return(new NoValidatedContentApiResponse(response.StatusCode));
                }

                NoValidatedContentApiResponse apiResponse = new NoValidatedContentApiResponse(response.StatusCode);

                if (apiResponse.StatusCode == HttpStatusCode.BadRequest)
                {
                    if (response.Content.HasContent())
                    {
                        string content = await response.Content.ReadAsStringAsync();

                        apiResponse.ModelState = JsonConvert.DeserializeObject <IDictionary <string, IEnumerable <string> > >(content, _serializerSettings);
                    }
                }

                return(apiResponse);
            }
        }