public async Task <IActionResult> ValidateGherkin(HttpRequest request) { string json = await request.GetRawBodyStringAsync(); ValidateGherkinRequestModel model = JsonConvert.DeserializeObject <ValidateGherkinRequestModel>(json); if (model == null) { _logger.Error("Null model was provided to ValidateGherkin"); return(new BadRequestObjectResult("Null or empty specification id provided")); } if (string.IsNullOrWhiteSpace(model.SpecificationId)) { _logger.Error("No specification id was provided to ValidateGherkin"); return(new BadRequestObjectResult("Null or empty specification id provided")); } if (string.IsNullOrWhiteSpace(model.Gherkin)) { _logger.Error("Null or empty gherkin was provided to ValidateGherkin"); return(new BadRequestObjectResult("Null or empty gherkin name provided")); } BuildProject buildProject = await _buildProjectRepositoryPolicy.ExecuteAsync(() => _buildProjectRepository.GetBuildProjectBySpecificationId(model.SpecificationId)); if (buildProject == null || buildProject.Build == null) { _logger.Error($"Failed to find a valid build project for specification id: {model.SpecificationId}"); return(new StatusCodeResult(412)); } GherkinParseResult parseResult = await _gherkinParser.Parse(model.SpecificationId, model.Gherkin, buildProject); if (parseResult.HasErrors) { _logger.Information($"Gherkin parser failed validation with "); } return(new OkObjectResult(parseResult.Errors)); }
public async Task <IActionResult> ValidateGherkin(ValidateGherkinRequestModel model) { if (model == null) { _logger.Error("Null model was provided to ValidateGherkin"); return(new BadRequestObjectResult("Null or empty specification id provided")); } if (string.IsNullOrWhiteSpace(model.SpecificationId)) { _logger.Error("No specification id was provided to ValidateGherkin"); return(new BadRequestObjectResult("Null or empty specification id provided")); } if (string.IsNullOrWhiteSpace(model.Gherkin)) { _logger.Error("Null or empty gherkin was provided to ValidateGherkin"); return(new BadRequestObjectResult("Null or empty gherkin name provided")); } BuildProject buildProject = _mapper.Map <BuildProject>(await _calcsApiClientPolicy.ExecuteAsync(() => _calcsApiClient.GetBuildProjectBySpecificationId(model.SpecificationId))); if (buildProject == null || buildProject.Build == null) { _logger.Error($"Failed to find a valid build project for specification id: {model.SpecificationId}"); return(new StatusCodeResult((int)HttpStatusCode.PreconditionFailed)); } GherkinParseResult parseResult = await _gherkinParser.Parse(model.SpecificationId, model.Gherkin, buildProject); if (parseResult.HasErrors) { _logger.Information($"Gherkin parser failed validation with "); } return(new OkObjectResult(parseResult.Errors)); }
public Task <IActionResult> RunValidateGherkin([FromBody] ValidateGherkinRequestModel validateGherkinRequestModel) { return(_gherkinParserService.ValidateGherkin(validateGherkinRequestModel)); }