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);
        }
Exemple #3
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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)));
            }
        }
Exemple #8
0
        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);
        }
Exemple #9
0
 public OpenApiFormatException(OpenApiError error)
     : base($"Invalid OpenAPI format at [{error.Pointer}]: {error.Message}")
 {
 }