public void TestBaseSetUp() { _validationResult = new ValidationResult(); SpecificationId = NewRandomString(); string providerId = NewRandomString(); ProviderIds = new[] { providerId }; FundingStreamId = NewRandomString(); FundingPeriodId = NewRandomString(); CorrelationId = NewRandomString(); User = NewUser(); Jobs = Substitute.For <TJobCreation>(); SpecificationIdValidator = Substitute.For <ISpecificationIdServiceRequestValidator>(); ProviderIdsValidator = Substitute.For <IPublishedProviderIdsServiceRequestValidator>(); SpecificationIdValidator.Validate(SpecificationId) .Returns(_validationResult); ProviderIdsValidator.Validate(Arg.Is <string[]>(_ => _.SequenceEqual(ProviderIds))) .Returns(_validationResult); Specifications = Substitute.For <ISpecificationsApiClient>(); ProviderService = Substitute.For <IProviderService>(); ResiliencePolicies = new ResiliencePolicies { SpecificationsRepositoryPolicy = Polly.Policy.NoOpAsync(), PublishedFundingRepository = Polly.Policy.NoOpAsync() }; FundingConfigurationService = Substitute.For <IFundingConfigurationService>(); }
public async Task <IActionResult> PublishBatchProvidersFunding(string specificationId, PublishedProviderIdsRequest publishedProviderIdsRequest, Reference user, string correlationId) { ValidationResult specificationIdValidationResult = SpecificationIdValidator.Validate(specificationId); if (!specificationIdValidationResult.IsValid) { return(specificationIdValidationResult.AsBadRequest()); } ValidationResult publishedProviderIdsValidationResult = PublishedProviderIdsValidator.Validate(publishedProviderIdsRequest.PublishedProviderIds.ToArray()); if (!publishedProviderIdsValidationResult.IsValid) { return(publishedProviderIdsValidationResult.AsBadRequest()); } IActionResult actionResult = await IsSpecificationReadyForPublish(specificationId, ApprovalMode.Batches); if (!actionResult.IsOk()) { return(actionResult); } await FilterOutPublishedProvidersInError(publishedProviderIdsRequest); ApiJob job = await _createBatchPublishProviderFundingJobs.CreateJob(specificationId, user, correlationId, messageBody : JsonExtensions.AsJson(publishedProviderIdsRequest), compress : true); return(ProcessJobResponse(job, specificationId, JobConstants.DefinitionNames.PublishBatchProviderFundingJob)); }
public async Task <IActionResult> CreateRefreshFundingJob(string specificationId, Reference user, string correlationId) { ValidationResult validationResult = SpecificationIdValidator.Validate(specificationId); if (!validationResult.IsValid) { return(validationResult.AsBadRequest()); } ApiResponse <ApiSpecificationSummary> specificationIdResponse = await ResiliencePolicy.ExecuteAsync(() => Specifications.GetSpecificationSummaryById(specificationId)); ApiSpecificationSummary specificationSummary = specificationIdResponse.Content; if (specificationSummary == null) { return(new NotFoundResult()); } SpecificationFundingStatus chooseCheck = await _specificationFundingStatusService.CheckChooseForFundingStatus(specificationSummary); if (chooseCheck == SpecificationFundingStatus.SharesAlreadyChosenFundingStream) { return(new ConflictResult()); } IDictionary <string, Provider> scopedProviders = await _providerService.GetScopedProvidersForSpecification(specificationSummary.Id, specificationSummary.ProviderVersionId); // Check prerequisites for this specification to be chosen/refreshed IPrerequisiteChecker prerequisiteChecker = _prerequisiteCheckerLocator.GetPreReqChecker(PrerequisiteCheckerType.Refresh); try { await prerequisiteChecker.PerformChecks( specificationSummary, null, Array.Empty <PublishedProvider>(), scopedProviders?.Values); } catch (JobPrereqFailedException ex) { return(new BadRequestObjectResult(new [] { $"Prerequisite check for refresh failed {ex.Message}" }.ToModelStateDictionary())); } ApiJob refreshFundingJob = await _refreshFundingJobs.CreateJob(specificationId, user, correlationId); Guard.ArgumentNotNull(refreshFundingJob, nameof(refreshFundingJob), "Failed to create RefreshFundingJob"); JobCreationResponse jobCreationResponse = new JobCreationResponse() { JobId = refreshFundingJob.Id, }; return(new OkObjectResult(jobCreationResponse)); }
public async Task <IActionResult> ValidateSpecificationForRefresh(string specificationId) { List <string> prereqErrors = new List <string>(); ValidationResult validationResult = SpecificationIdValidator.Validate(specificationId); if (!validationResult.IsValid) { return(validationResult.AsBadRequest()); } ApiResponse <ApiSpecificationSummary> specificationIdResponse = await ResiliencePolicy.ExecuteAsync(() => Specifications.GetSpecificationSummaryById(specificationId)); ApiSpecificationSummary specificationSummary = specificationIdResponse.Content; if (specificationSummary == null) { return(new NotFoundResult()); } IDictionary <string, Provider> scopedProviders = await _providerService.GetScopedProvidersForSpecification(specificationSummary.Id, specificationSummary.ProviderVersionId); IPrerequisiteChecker prerequisiteChecker = _prerequisiteCheckerLocator.GetPreReqChecker(PrerequisiteCheckerType.Refresh); try { await prerequisiteChecker.PerformChecks( specificationSummary, null, Array.Empty <PublishedProvider>(), scopedProviders?.Values); } catch (JobPrereqFailedException ex) { return(new BadRequestObjectResult(ex.Errors.ToArray().ToModelStateDictionary())); } return(new NoContentResult()); }
public async Task <IActionResult> PublishAllProvidersFunding(string specificationId, Reference user, string correlationId) { ValidationResult validationResult = SpecificationIdValidator.Validate(specificationId); if (!validationResult.IsValid) { return(validationResult.AsBadRequest()); } IActionResult actionResult = await IsSpecificationReadyForPublish(specificationId, ApprovalMode.All); if (!actionResult.IsOk()) { return(actionResult); } ApiJob job = await _createAllPublishProviderFundingJobs.CreateJob(specificationId, user, correlationId); return(ProcessJobResponse(job, specificationId, JobConstants.DefinitionNames.PublishAllProviderFundingJob)); }
public async Task <IActionResult> PublishIntegrityCheck(string specificationId, Reference user, string correlationId, bool publishAll = false) { ValidationResult validationResult = SpecificationIdValidator.Validate(specificationId); if (!validationResult.IsValid) { return(validationResult.AsBadRequest()); } ApiJob job = await _createPublishIntegrityJob.CreateJob(specificationId, user, correlationId, publishAll?new Dictionary <string, string> { { "publish-all", "True" } } : null); return(ProcessJobResponse(job, specificationId, JobConstants.DefinitionNames.PublishIntegrityCheckJob)); }