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