module GraphQL::Compatibility::QueryParserSpecification::ParseErrorSpecification

Public Instance Methods

assert_raises_parse_error(query_string) click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 6
def assert_raises_parse_error(query_string)
  assert_raises(GraphQL::ParseError) {
    parse(query_string)
  }
end
assert_rejects_character(char) click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 33
def assert_rejects_character(char)
  err = assert_raises_parse_error("{ field#{char} }")
  expected_char = char.inspect.gsub('"', '').downcase
  msg_downcase = err.message.downcase
  # Case-insensitive for UTF-8 printing
  assert_includes(msg_downcase, expected_char, "The message includes the invalid character")
end
test_it_includes_line_and_column() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 12
def test_it_includes_line_and_column
  err = assert_raises_parse_error("
    query getCoupons {
      allCoupons: {data{id}}
    }
  ")

  assert_includes(err.message, '{')
  assert_equal(3, err.line)
  assert_equal(27, err.col)
end
test_it_rejects_bad_unicode() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 50
def test_it_rejects_bad_unicode
  assert_raises_parse_error(%|{ field(arg:"\\x") }|)
  assert_raises_parse_error(%|{ field(arg:"\\u1") }|)
  assert_raises_parse_error(%|{ field(arg:"\\u0XX1") }|)
  assert_raises_parse_error(%|{ field(arg:"\\uXXXX") }|)
  assert_raises_parse_error(%|{ field(arg:"\\uFXXX") }|)
  assert_raises_parse_error(%|{ field(arg:"\\uXXXF") }|)
end
test_it_rejects_blank_queries() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 73
def test_it_rejects_blank_queries
  assert_raises_parse_error("")
  assert_raises_parse_error(" ")
  assert_raises_parse_error("\t \t")
  assert_raises_parse_error(" # comment ")
end
test_it_rejects_empty_inline_fragments() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 59
def test_it_rejects_empty_inline_fragments
  assert_raises_parse_error("
    query {
      viewer {
        login {
          ... on String {

          }
        }
      }
    }
  ")
end
test_it_rejects_invalid_characters() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 41
def test_it_rejects_invalid_characters
  assert_rejects_character(";")
  assert_rejects_character("\a")
  assert_rejects_character("\xef")
  assert_rejects_character("\v")
  assert_rejects_character("\f")
  assert_rejects_character("\xa0")
end
test_it_rejects_unexpected_ends() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 29
def test_it_rejects_unexpected_ends
  assert_raises_parse_error("query { stuff { thing }")
end
test_it_rejects_unterminated_strings() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 24
def test_it_rejects_unterminated_strings
  assert_raises_parse_error('{ " }')
  assert_raises_parse_error(%|{ "\n" }|)
end
test_it_restricts_on() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 80
def test_it_restricts_on
  assert_raises_parse_error("{ ...on }")
  assert_raises_parse_error("fragment on on Type { field }")
end