public void When_format_date_time_correct_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.DateTime; var token = new JValue("2014-12-01 11:00:01"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public static Tuple <ValidationResult, Dictionary <int, string> > Validate(JsonSchema4 schema, string jsonToValidate) { // Find errors. ValidationResult result = ValidationResult.Valid; Dictionary <int, string> errors = new Dictionary <int, string>(); try { if (schema == null) { // No schema. Just make sure the JSON is valid. JToken.Parse(jsonToValidate); } else { // Validate based on the schema. var rawErrors = schema.Validate(jsonToValidate); if (rawErrors.Count > 0) { result = ValidationResult.DoesNotSatisfySchema; foreach (var rawError in schema.Validate(jsonToValidate)) { foreach (var error in GenerateErrorMessages(rawError)) { if (error.LineNumber <= 0) { continue; } var zeroBasedLine = error.LineNumber - 1; if (errors.ContainsKey(zeroBasedLine)) { errors[zeroBasedLine] = error.Message + '\n' + errors[zeroBasedLine]; } else { errors[zeroBasedLine] = error.Message; } } } } } } catch (JsonReaderException exception) { result = ValidationResult.InvalidJson; errors[exception.LineNumber - 1] = exception.Message; } return(new Tuple <ValidationResult, Dictionary <int, string> >(result, errors)); }
private bool TryParseMarketPlaceError(string jsonResponse, out MarketPlaceError error) { // Check expected error keywords presence : if (!jsonResponse.Contains("error") || !jsonResponse.Contains("message") || !jsonResponse.Contains("code")) { error = null; return(false); } ICollection <ValidationError> errors = _schema.Validate(jsonResponse); if (errors.Count > 0) { error = null; return(false); } // Try to deserialize : try { error = JsonConvert.DeserializeObject <MarketPlaceError>(jsonResponse); return(true); } catch { error = null; return(false); } }
public void When_is_not_any_of_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.AnyOf.Add(new JsonSchema4 { Type = JsonObjectType.String }); schema.AnyOf.Add(new JsonSchema4 { Type = JsonObjectType.Integer }); var token = new JValue(1.5); //// Act var errors = schema.Validate(token); //// Assert var error = (ChildSchemaValidationError)errors.First(); Assert.AreEqual(ValidationErrorKind.NotAnyOf, error.Kind); Assert.AreSame(schema, error.Schema); Assert.AreEqual(ValidationErrorKind.StringExpected, error.Errors.First().Value.First().Kind); Assert.AreSame(schema.AnyOf.First(), error.Errors.First().Value.First().Schema); }
public void When_one_of_matches_multiple_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.OneOf.Add(new JsonSchema4 { Type = JsonObjectType.String }); schema.OneOf.Add(new JsonSchema4 { Type = JsonObjectType.Integer }); schema.OneOf.Add(new JsonSchema4 { Type = JsonObjectType.Integer }); var token = new JValue(5); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.NotOneOf, errors.First().Kind); Assert.AreSame(schema, errors.First().Schema); }
public void When_second_item_validation_fails_then_path_should_be_correct() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Array; schema.Item = new JsonSchema4(); schema.Item.Type = JsonObjectType.String; var token = new JArray(); token.Add(new JValue("Foo")); token.Add(new JValue(10)); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(1, errors.Count()); Assert.AreEqual(ValidationErrorKind.ArrayItemNotValid, errors.First().Kind); var firstItemError = ((ChildSchemaValidationError)errors.First()).Errors.First().Value.First(); Assert.AreEqual(ValidationErrorKind.StringExpected, firstItemError.Kind); Assert.AreEqual("[1]", errors.First().Property); Assert.AreEqual("#/[1]", errors.First().Path); Assert.AreSame(schema.Item, errors.First().Schema); }
public void When_there_are_no_properties_matching_pattern_then_validation_fails() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Object; schema.AllowAdditionalProperties = false; schema.PatternProperties.Add("^[a-z]+$", new JsonProperty() { Type = JsonObjectType.Object }); var token = new JObject(); token.Add("123", new JObject()); token.Add("qwe123", new JObject()); //// Act var errors = schema.Validate(token); //// Assert Assert.Equal(2, errors.Count()); foreach (var validationError in errors) { Assert.Equal(ValidationErrorKind.NoAdditionalPropertiesAllowed, validationError.Kind); } }
public void When_tuple_too_large_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Array; schema.Items.Add(new JsonSchema4 { Type = JsonObjectType.String }); schema.Items.Add(new JsonSchema4 { Type = JsonObjectType.Integer }); schema.AllowAdditionalItems = false; var token = new JArray(); token.Add(new JValue("Foo")); token.Add(new JValue(5)); token.Add(new JValue(5)); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(1, errors.Count()); Assert.AreEqual(ValidationErrorKind.TooManyItemsInTuple, errors.First().Kind); Assert.AreSame(schema, errors.First().Schema); }
private bool TryParseErrorResponse(string jsonResponse, out ErrorResponse error) { if (!jsonResponse.Contains("code") || !jsonResponse.Contains("message")) { error = null; return(false); } ICollection <ValidationError> errors = _schema.Validate(jsonResponse); if (errors.Count > 0) { error = null; return(false); } try { error = JsonConvert.DeserializeObject <ErrorResponse>(jsonResponse); return(true); } catch { error = null; return(false); } }
/// <summary> /// Validates the json of current <see cref="HttpContext"/>. /// </summary> /// <param name="context">Current context.</param> /// <returns>The <see cref="Task{ValidationResult}"/> that represents the asynchronous validation process.</returns> public override async Task <ValidationResult> ValidateAsync(HttpContext context) { var errors = _jsonSchema.Validate(await StreamToString(context.Request.Body)); if (errors.Any()) { return(ValidationResult.Failed()); } return(ValidationResult.Success); }
private static float ScoreSchemaMatch(JsonSchema4 schema, JToken contextObject, string activeProperty) { if (contextObject is JObject && (schema.Type == JsonObjectType.Object || schema.Type == JsonObjectType.None)) { var errors = schema.Validate(contextObject); var score = 100.0f - ScoreErrors(errors.ToList()); if (activeProperty != null && schema.ActualProperties.ContainsKey(activeProperty)) { score += 5; } return(score); } else if (schema.Type == JsonObjectType.Array && (contextObject is JArray)) { return(100.0f - ScoreErrors(schema.Validate(contextObject))); } else { return(0.0f); // Non-objects can't match. } }
public void When_boolean_required_and_boolean_provided_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Boolean; var token = new JValue(true); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_boolean_required_but_string_provided_then_validation_fails() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Boolean; var token = new JValue("foo"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.BooleanExpected, errors.First().Kind); }
public void When_format_hostname_is_ip_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.Hostname; var token = new JValue("rsuter.com"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_format_hostname_incorrect_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.Hostname; var token = new JValue("foo:bar"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.HostnameExpected, errors.First().Kind); }
public void When_token_is_not_array_then_validation_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Array; var token = new JValue(10); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.ArrayExpected, errors.First().Kind); }
public void When_format_ipv6_correct_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.IpV6; var token = new JValue("::1"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_string_required_and_string_provided_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; var token = new JValue("test"); //// Act var errors = schema.Validate(token); //// Assert Assert.Empty(errors); }
public void When_integer_required_and_integer_provided_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Integer; var token = new JValue(10); //// Act var errors = schema.Validate(token); //// Assert Assert.Empty(errors); }
public void When_format_ipv6_incorrect_then_validation_fails() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.IpV6; var token = new JValue("test"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.IpV6Expected, errors.First().Kind); }
public void When_number_required_and_integer_provided_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Number; var token = new JValue(10); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_integer_minimum_does_not_match_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Integer; schema.Minimum = 2; var token = new JValue(1); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.NumberTooSmall, errors.First().Kind); }
public void When_format_date_time_then_validation_fails() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.Date; var token = new JValue("2014-12-01 11:54"); //// Act var errors = schema.Validate(token); //// Assert Assert.Equal(ValidationErrorKind.DateExpected, errors.First().Kind); }
public void When_format_uri_incorrect_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.Uri; var token = new JValue("test"); //// Act var errors = schema.Validate(token); //// Assert Assert.Equal(ValidationErrorKind.UriExpected, errors.First().Kind); }
public void When_format_uri_correct_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.Uri; var token = new JValue("http://rsuter.com"); //// Act var errors = schema.Validate(token); //// Assert Assert.Empty(errors); }
public void When_format_guid_correct_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.Guid; var guid = Guid.NewGuid().ToString(); var token = new JValue(guid); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_format_hostname_is_ip_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.Hostname; var token = new JValue("rsuter.com"); //// Act var errors = schema.Validate(token); //// Assert Assert.Empty(errors); }
public void When_format_date_time_correct_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.DateTime; var token = new JValue("2014-12-01 11:00:01"); //// Act var errors = schema.Validate(token); //// Assert Assert.Empty(errors); }
public void When_number_maximum_does_not_match_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Number; schema.Maximum = 1.5; var token = new JValue(1.6); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.NumberTooBig, errors.First().Kind); }
public void When_format_date_time_with_iso8601_with_timezone_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.DateTime; var token = new JValue("2015-01-25T15:43:30+10:00"); //// Act var errors = schema.Validate(token); //// Assert Assert.Empty(errors); }
public void When_format_date_time_with_non_iso8601_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.DateTime; var token = new JValue("25/01/2015"); //// Act var errors = schema.Validate(token); //// Assert Assert.Equal(ValidationErrorKind.DateTimeExpected, errors.First().Kind); }
public void When_format_email_correct_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.Email; var token = new JValue("*****@*****.**"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_format_ipv4_correct_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.IpV4; var token = new JValue("192.168.0.1"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_format_time_span_correct_then_validation_succeeds() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.TimeSpan; var token = new JValue("1:30:45"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_integer_required_but_string_provided_then_validation_fails() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Integer; var token = new JValue("foo"); //// Act var errors = schema.Validate(token); //// Assert Assert.Equal(ValidationErrorKind.IntegerExpected, errors.First().Kind); Assert.Same(schema, errors.First().Schema); }
public void When_format_time_span_incorrect_then_validation_fails() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Format = JsonFormatStrings.TimeSpan; var token = new JValue("test"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.TimeSpanExpected, errors.First().Kind); }
public void Numeric_type_should_not_trigger_validation_if_has_byte_format() { //// Arrange var numericSchema = new JsonSchema4 { Type = JsonObjectType.Integer, Format = JsonFormatStrings.Byte }; var token = new JValue(1); //// Act var numericErrors = numericSchema.Validate(token); //// Assert Assert.AreEqual(0, numericErrors.Count); }
public void When_optional_property_is_missing_then_it_should_succeed() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Object; schema.Properties["Foo"] = new JsonProperty { IsRequired = false, }; var token = new JObject(); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void Validation_should_fail_if_string_is_not_byte_formatted() { //// Arrange var schema = new JsonSchema4 { Type = JsonObjectType.String, Format = JsonFormatStrings.Byte }; var token = new JValue("invalid"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(1, errors.Count); Assert.AreEqual(ValidationErrorKind.Base64Expected, errors.Single().Kind); }
public void When_array_item_are_valid_then_it_should_succeed() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Array; schema.Item = new JsonSchema4(); schema.Item.Type = JsonObjectType.String; var token = new JArray(); token.Add(new JValue("Foo")); token.Add(new JValue("Bar")); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_min_items_does_not_match_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Array; schema.MinItems = 2; schema.Item = new JsonSchema4(); schema.Item.Type = JsonObjectType.String; var token = new JArray(); token.Add(new JValue("Foo")); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(1, errors.Count()); Assert.AreEqual(ValidationErrorKind.TooFewItems, errors.First().Kind); }
public void When_property_matches_one_of_the_types_then_it_should_succeed() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Object; schema.Properties["Foo"] = new JsonProperty { Type = JsonObjectType.Number | JsonObjectType.Null }; var token = new JObject(); token["Foo"] = new JValue(5); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_string_property_is_available_then_it_should_succeed() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Object; schema.Properties["Foo"] = new JsonProperty { IsRequired = true, Type = JsonObjectType.String }; var token = new JObject(); token["Foo"] = new JValue("Bar"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_required_property_is_missing_then_it_should_be_in_error_list() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Object; schema.Properties["Foo"] = new JsonProperty { IsRequired = true, }; var token = new JObject(); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(1, errors.Count()); Assert.AreEqual("Foo", errors.First().Property); Assert.AreEqual("Foo", errors.First().Path); Assert.AreEqual(ValidationErrorKind.PropertyRequired, errors.First().Kind); }
public void When_is_not_all_of_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.AllOf.Add(new JsonSchema4 { Type = JsonObjectType.String }); schema.AllOf.Add(new JsonSchema4 { Type = JsonObjectType.Integer }); var token = new JValue(5); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.NotAllOf, errors.First().Kind); }
public void When_is_any_of_then_it_should_succeed() { //// Arrange var schema = new JsonSchema4(); schema.AnyOf.Add(new JsonSchema4 { Type = JsonObjectType.String }); schema.AnyOf.Add(new JsonSchema4 { Type = JsonObjectType.Integer }); var token = new JValue(10); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count); }
public void When_tuple_too_large_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Array; schema.Items.Add(new JsonSchema4 { Type = JsonObjectType.String }); schema.Items.Add(new JsonSchema4 { Type = JsonObjectType.Integer }); schema.AllowAdditionalItems = false; var token = new JArray(); token.Add(new JValue("Foo")); token.Add(new JValue(5)); token.Add(new JValue(5)); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(1, errors.Count()); Assert.AreEqual(ValidationErrorKind.TooManyItemsInTuple, errors.First().Kind); }
public void When_second_item_validation_fails_then_path_should_be_correct() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Array; schema.Item = new JsonSchema4(); schema.Item.Type = JsonObjectType.String; var token = new JArray(); token.Add(new JValue("Foo")); token.Add(new JValue(10)); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(1, errors.Count()); Assert.AreEqual(ValidationErrorKind.ArrayItemNotValid, errors.First().Kind); var firstItemError = ((ChildSchemaValidationError) errors.First()).Errors.First().Value.First(); Assert.AreEqual(ValidationErrorKind.StringExpected, firstItemError.Kind); Assert.AreEqual("[1]", errors.First().Property); Assert.AreEqual("[1]", errors.First().Path); }
public void When_token_is_not_object_then_validation_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Object; schema.Properties["Foo"] = new JsonProperty(); var token = new JValue(10); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.ObjectExpected, errors.First().Kind); }
public void When_string_property_required_but_integer_provided_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Object; schema.Properties["Foo"] = new JsonProperty { IsRequired = true, Type = JsonObjectType.String }; var token = new JObject(); token["Foo"] = new JValue(10); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.StringExpected, errors.First().Kind); Assert.AreEqual("Foo", errors.First().Property); Assert.AreEqual("Foo", errors.First().Path); }
public void When_tuple_correct_then_it_should_pass() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.Array; schema.Items.Add(new JsonSchema4 { Type = JsonObjectType.String }); schema.Items.Add(new JsonSchema4 { Type = JsonObjectType.Integer }); var token = new JArray(); token.Add(new JValue("Foo")); token.Add(new JValue(5)); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count()); }
public void When_string_min_length_does_not_match_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.MinLength = 2; var token = new JValue("a"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.StringTooShort, errors.First().Kind); }
public void When_string_pattern_does_not_match_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Pattern = "aa(.*)aa"; var token = new JValue("aaccbb"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.PatternMismatch, errors.First().Kind); }
public void When_value_in_enumeration_then_it_should_succeed() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Enumeration.Add("Red"); schema.Enumeration.Add("Green"); schema.Enumeration.Add("Blue"); var token = new JValue("Red"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(0, errors.Count); }
public void When_value_not_in_enumeration_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Enumeration.Add("Red"); schema.Enumeration.Add("Green"); schema.Enumeration.Add("Blue"); var token = new JValue("Yellow"); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(ValidationErrorKind.NotInEnumeration, errors.First().Kind); }
public void When_value_is_wrong_type_in_enumeration_then_it_should_fail() { //// Arrange var schema = new JsonSchema4(); schema.Type = JsonObjectType.String; schema.Enumeration.Add("1"); schema.Enumeration.Add("2"); schema.Enumeration.Add("3"); var token = new JValue(3); //// Act var errors = schema.Validate(token); //// Assert Assert.AreEqual(1, errors.Count); // wrong type }