public void ValidateExtensionNameStartsWithXDashInTag() { // Arrange IEnumerable <OpenApiError> errors; OpenApiTag tag = new OpenApiTag { Name = "tag" }; tag.Extensions.Add("tagExt", new OpenApiString("value")); // Act var validator = new OpenApiValidator(); validator.Visit(tag as IOpenApiExtensible); errors = validator.Errors; bool result = !errors.Any(); // Assert Assert.False(result); Assert.NotNull(errors); OpenApiError error = Assert.Single(errors); Assert.Equal(String.Format(SRResource.Validation_ExtensionNameMustBeginWithXDash, "tagExt", "#/extensions"), error.Message); }
public void ValidateKeyMustMatchRegularExpressionInComponents() { // Arrange const string key = "%@abc"; OpenApiComponents components = new OpenApiComponents() { Responses = new Dictionary <string, OpenApiResponse> { { key, new OpenApiResponse { Description = "any" } } } }; var errors = components.Validate(ValidationRuleSet.GetDefaultRuleSet()); // Act bool result = !errors.Any(); // Assert Assert.False(result); Assert.NotNull(errors); OpenApiError error = Assert.Single(errors); Assert.Equal(String.Format(SRResource.Validation_ComponentsKeyMustMatchRegularExpr, key, "responses", OpenApiComponentsRules.KeyRegex.ToString()), error.Message); }
public void ValidateUrlIsRequiredInExternalDocs() { // Arrange OpenApiExternalDocs externalDocs = new OpenApiExternalDocs(); // Act var errors = externalDocs.Validate(ValidationRuleSet.GetDefaultRuleSet()); // Assert bool result = !errors.Any(); Assert.False(result); Assert.NotNull(errors); OpenApiError error = Assert.Single(errors); Assert.Equal(String.Format(SRResource.Validation_FieldIsRequired, "url", "External Documentation"), error.Message); }
public void ValidateFieldIsRequiredInServer() { // Arrange IEnumerable <OpenApiError> errors; OpenApiServer server = new OpenApiServer(); // Act var validator = new OpenApiValidator(); validator.Visit(server); errors = validator.Errors; bool result = !errors.Any(); // Assert Assert.False(result); Assert.NotNull(errors); OpenApiError error = Assert.Single(errors); Assert.Equal(String.Format(SRResource.Validation_FieldIsRequired, "url", "server"), error.Message); }
public void ValidateNameIsRequiredInTag() { // Arrange IEnumerable <OpenApiError> errors; OpenApiTag tag = new OpenApiTag(); // Act var validator = new OpenApiValidator(); validator.Visit(tag); errors = validator.Errors; bool result = !errors.Any(); // Assert Assert.False(result); Assert.NotNull(errors); OpenApiError error = Assert.Single(errors); Assert.Equal(String.Format(SRResource.Validation_FieldIsRequired, "name", "tag"), error.Message); }
public void ValidateEmailFieldIsEmailAddressInContact() { // Arrange const string testEmail = "support/example.com"; OpenApiContact contact = new OpenApiContact() { Email = testEmail }; // Act var errors = contact.Validate(); bool result = !errors.Any(); // Assert Assert.False(result); Assert.NotNull(errors); OpenApiError error = Assert.Single(errors); Assert.Equal(String.Format(SRResource.Validation_StringMustBeEmailAddress, testEmail), error.Message); }
protected async Task <IActionResult> RunDefaultAsync(Func <Task <IActionResult> > predicate) { if (!ModelState.IsValid) { var errors = new OpenApiError(HttpContext.Request.Path, ModelState.Values.FirstOrDefault()?.Errors.FirstOrDefault()?.ErrorMessage); return(BadRequest(errors)); } try { return(await predicate()); } catch (InvalidProgramException exception) { return(BadRequest(new OpenApiError(HttpContext.Request.Path, exception.Message))); } catch (Exception exception) { return(BadRequest(new OpenApiError(HttpContext.Request.Path, exception.Message))); } }
public void ValidateFieldIsRequiredInLicense() { // Arrange IEnumerable <OpenApiError> errors; OpenApiLicense license = new OpenApiLicense(); // Act var validator = new OpenApiValidator(); var walker = new OpenApiWalker(validator); walker.Walk(license); errors = validator.Errors; bool result = !errors.Any(); // Assert Assert.False(result); Assert.NotNull(errors); OpenApiError error = Assert.Single(errors); Assert.Equal(String.Format(SRResource.Validation_FieldIsRequired, "name", "license"), error.Message); }
public OpenApiFormatException(OpenApiError error) : base($"Invalid OpenAPI format at [{error.Pointer}]: {error.Message}") { }