Beispiel #1
0
        public static void WithDeprecatedElementsGeneratesErrors(String request, params string[] expectedErrors)
        {
            IEdmModel      model  = GetModel();
            ODataUriParser parser = new ODataUriParser(model, new Uri(request, UriKind.Relative));
            ODataUri       uri    = parser.ParseUri();

            IEnumerable <ODataUrlValidationMessage> errors;
            ODataUrlValidationRuleSet rules = new ODataUrlValidationRuleSet(new ODataUrlValidationRule[]
            {
                ODataUrlValidationRules.DeprecatedNavigationSourceRule,
                ODataUrlValidationRules.DeprecatedPropertyRule,
                ODataUrlValidationRules.DeprecatedTypeRule
            });

            parser.Validate(rules, out errors);
            int errorCount = errors.Count();

            Assert.Equal(expectedErrors.Count(), errorCount);
            int iError = 0;

            foreach (ODataUrlValidationMessage error in errors)
            {
                Assert.Equal(ODataUrlValidationMessageCodes.DeprecatedElement, error.MessageCode);
                object elementName;
                Assert.True(error.ExtendedProperties.TryGetValue("ElementName", out elementName));
                Assert.Equal(elementName as string, expectedErrors[iError++]);
            }
        }
Beispiel #2
0
        public static void WithoutDeprecatedElementsDoesntGenerateErrors(String request)
        {
            IEdmModel      model  = GetModel();
            ODataUriParser parser = new ODataUriParser(model, new Uri(request, UriKind.Relative));
            ODataUri       uri    = parser.ParseUri();

            IEnumerable <ODataUrlValidationMessage> errors;
            ODataUrlValidationRuleSet rules = new ODataUrlValidationRuleSet(new ODataUrlValidationRule[] { ODataUrlValidationRules.DeprecatedPropertyRule, ODataUrlValidationRules.DeprecatedTypeRule });

            parser.Validate(rules, out errors);
            Assert.Empty(errors);
        }
Beispiel #3
0
        public static void PassingRulesSucceeds()
        {
            const string request = @"company";

            IEdmModel      model  = CreateModel();
            ODataUriParser parser = new ODataUriParser(model, new Uri(request, UriKind.Relative));

            IEnumerable <ODataUrlValidationMessage> errors;

            parser.Validate(dummyRuleset, out errors);
            Assert.Collection <ODataUrlValidationMessage>(errors, (error) =>
            {
                Assert.Equal("dummyCode", error.MessageCode);
                Assert.Equal("dummyMessage", error.Message);
                Assert.Equal(OData.UriParser.Validation.Severity.Warning, error.Severity);
            });
        }
        /// <summary>
        /// Validate a Uri as an OData Url for a given model using a specified set of rules.
        /// </summary>
        /// <param name="uri">The <see cref="Uri"/> to validate.</param>
        /// <param name="model">The model to validate the Uri against.</param>
        /// <param name="rules">The set of rules to use in validating the OData Uri.</param>
        /// <param name="validationMessages">The collection of validation messages found during validation.</param>
        /// <returns>True if validation messages are discovered during validation, otherwise false.</returns>
        public static bool ValidateODataUrl(this Uri uri, IEdmModel model, ODataUrlValidationRuleSet rules, out IEnumerable <ODataUrlValidationMessage> validationMessages)
        {
            try
            {
                ODataUriParser parser = new ODataUriParser(model, uri);
                return(parser.Validate(rules, out validationMessages));
            }
            catch (ODataException e)
            {
                validationMessages = new ODataUrlValidationMessage[]
                {
                    new ODataUrlValidationMessage(ODataUrlValidationMessageCodes.UnableToParseUri, e.Message, Severity.Error)
                };

                return(false);
            }
        }
Beispiel #5
0
        public static void MustUseSameModel()
        {
            const string request = @"company";

            IEdmModel model  = CreateModel();
            IEdmModel model2 = CreateModel();

            ODataUrlValidator validator = new ODataUrlValidator(model2, ODataUrlValidationRuleSet.AllRules);
            ODataUriParser    parser    = new ODataUriParser(model, new Uri(request, UriKind.Relative));

            Action validate = () =>
            {
                IEnumerable <ODataUrlValidationMessage> errors;
                parser.Validate(validator, out errors);
            };

            validate.Throws <ODataException>(Strings.UriValidator_ValidatorMustUseSameModelAsParser);
        }
Beispiel #6
0
        public static void WithDeprecatedElementsGeneratesErrors(String request, params string[] expectedErrors)
        {
            string expectedDateAsString        = "2020-03-30";
            Date   expectedDate                = Date.Parse(expectedDateAsString);
            string expectedRemovalDateAsString = "2022-03-30";
            Date   expectedRemovalDate         = Date.Parse(expectedRemovalDateAsString);

            IEdmModel      model  = GetModel();
            ODataUriParser parser = new ODataUriParser(model, new Uri(request, UriKind.Relative));

            IEnumerable <ODataUrlValidationMessage> errors;
            ODataUrlValidationRuleSet rules = new ODataUrlValidationRuleSet(new ODataUrlValidationRule[]
            {
                ODataUrlValidationRules.DeprecatedNavigationSourceRule,
                ODataUrlValidationRules.DeprecatedPropertyRule,
                ODataUrlValidationRules.DeprecatedTypeRule
            });

            parser.Validate(rules, out errors);

            Assert.Equal(expectedErrors.Count(), errors.Count());
            foreach (ODataUrlValidationMessage error in errors)
            {
                Assert.Equal(ODataUrlValidationMessageCodes.DeprecatedElement, error.MessageCode);
                object elementName;
                Assert.True(error.ExtendedProperties.TryGetValue("ElementName", out elementName));
                object date;
                Assert.True(error.ExtendedProperties.TryGetValue("Date", out date));
                object removalDate;
                Assert.True(error.ExtendedProperties.TryGetValue("RemovalDate", out removalDate));
                object version;
                Assert.True(error.ExtendedProperties.TryGetValue("Version", out version));

                string elementNameAsString = elementName as string;
                elementName = elementNameAsString.Substring(elementNameAsString.LastIndexOf('.') + 1);

                Assert.Contains(elementName as string, expectedErrors);
                Assert.Equal(date as Date?, expectedDate);
                Assert.Equal(version as string, expectedDateAsString);
                Assert.Equal(removalDate as Date?, expectedRemovalDate);
                Assert.Contains(elementName as string, error.Message);
                Assert.Contains(expectedRemovalDateAsString, error.Message);
            }
        }