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); } }
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); } }
/// <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)); }