コード例 #1
0
        public static void MissingSelectGeneratesErrors(String request, params string[] expectedErrors)
        {
            IEdmModel model = GetModel();
            Uri       uri   = new Uri(request, UriKind.Relative);

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

            uri.ValidateODataUrl(model, rules, out errors);
            int errorCount = errors.Count();

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

            foreach (ODataUrlValidationMessage error in errors)
            {
                Assert.Equal("missingSelect", error.MessageCode);
                Assert.Contains(expectedErrors[iError++], error.Message);
            }
        }
コード例 #2
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));

                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);
            }
        }
コード例 #3
0
        /// <summary>
        /// Validate the OData Uri using a specified set of rules.
        /// </summary>
        /// <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 bool Validate(ODataUrlValidationRuleSet rules, out IEnumerable <ODataUrlValidationMessage> validationMessages)
        {
            ODataUrlValidator validator = new ODataUrlValidator(this.Model, rules);

            return(validator.ValidateUrl(this.ParseUri(), out validationMessages));
        }