module GraphQL::Compatibility::QueryParserSpecification::ParseErrorSpecification

Public Instance Methods

assert_empty_document(query_string) click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 72
def assert_empty_document(query_string)
  doc = parse(query_string)
  assert_equal 0, doc.definitions.length
end
assert_raises_parse_error(query_string) click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 5
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 32
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 11
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_parses_blank_queries() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 77
def test_it_parses_blank_queries
  assert_empty_document("")
  assert_empty_document(" ")
  assert_empty_document("\t \t")
end
test_it_rejects_bad_unicode() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 49
def test_it_rejects_bad_unicode
  assert_raises_parse_error(%Q|{ field(arg:"\\x") }|)
  assert_raises_parse_error(%Q|{ field(arg:"\\u1") }|)
  assert_raises_parse_error(%Q|{ field(arg:"\\u0XX1") }|)
  assert_raises_parse_error(%Q|{ field(arg:"\\uXXXX") }|)
  assert_raises_parse_error(%Q|{ field(arg:"\\uFXXX") }|)
  assert_raises_parse_error(%Q|{ field(arg:"\\uXXXF") }|)
end
test_it_rejects_empty_inline_fragments() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 58
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 40
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 28
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 23
def test_it_rejects_unterminated_strings
  assert_raises_parse_error('{ " }')
  assert_raises_parse_error(%Q|{ "\n" }|)
end
test_it_restricts_on() click to toggle source
# File lib/graphql/compatibility/query_parser_specification/parse_error_specification.rb, line 83
def test_it_restricts_on
  assert_raises_parse_error("{ ...on }")
  assert_raises_parse_error("fragment on on Type { field }")
end