graphql 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 280ed673cf1dbbf668aa99c14d43ab9ac9b97af8
4
- data.tar.gz: c2b66a6c3bcad312b56bdf565dfd39475e0f627d
3
+ metadata.gz: f79f91876d8a49ea48c4d551a073491c33eefc31
4
+ data.tar.gz: 3e91b2b21c60df562e95879a4a8fd24f214553e2
5
5
  SHA512:
6
- metadata.gz: 7147139cddf0a0381c16cbc95ef614d00d6fe6993db51648d04b66d020f75cfad00e36ba1ec31e5ac04e793f55e54b898410cd0da9e1ba9d452465257abdbd7a
7
- data.tar.gz: d8b2f834717227a408bd4a953f0dcbc82f8e05941fd848230c1895744bfdadddd45bdd50b61ca07e58eb091de1a648ad9c175b4149f3be77da83c7afd524911f
6
+ metadata.gz: 86a409aedbc0f2261b80b1f4cbca9e5fcc529abdb609557299de5547ff554e5f98a35188dcf6ba1a82650995f8989d867738c98aeafda4de7686b33932dff371
7
+ data.tar.gz: 23135beccd828141bb898bd12514899a0125035f38284146f2941a36e5117449854759e6b202937996e078782123e7f87437f5244be6af392186fd8d1d798cdc
@@ -104,7 +104,7 @@ module GraphQL
104
104
  matching_value = allowed_values.find { |v| v.name == value_name }
105
105
 
106
106
  if matching_value.nil?
107
- result.add_problem("Expected #{JSON.generate(value_name, quirks_mode: true)} to be one of: #{allowed_values.join(', ')}")
107
+ result.add_problem("Expected #{JSON.generate(value_name, quirks_mode: true)} to be one of: #{allowed_values.map(&:name).join(', ')}")
108
108
  end
109
109
 
110
110
  result
@@ -1029,9 +1029,11 @@ end
1029
1029
  UTF_8 = /\\u[\dAa-f]{4}/i
1030
1030
  UTF_8_REPLACE = ->(m) { [m[-4..-1].to_i(16)].pack('U'.freeze) }
1031
1031
 
1032
+ VALID_STRING = /\A(?:[^\\]|#{ESCAPES}|#{UTF_8})*\z/o
1033
+
1032
1034
  def self.emit_string(ts, te, meta)
1033
1035
  value = meta[:data][ts...te].pack("c*").force_encoding("UTF-8")
1034
- if value =~ /\\u|\\./ && value !~ ESCAPES
1036
+ if value !~ VALID_STRING
1035
1037
  meta[:tokens] << token = GraphQL::Language::Token.new(
1036
1038
  name: :BAD_UNICODE_ESCAPE,
1037
1039
  value: value,
@@ -184,9 +184,11 @@ module GraphQL
184
184
  UTF_8 = /\\u[\dAa-f]{4}/i
185
185
  UTF_8_REPLACE = ->(m) { [m[-4..-1].to_i(16)].pack('U'.freeze) }
186
186
 
187
+ VALID_STRING = /\A(?:[^\\]|#{ESCAPES}|#{UTF_8})*\z/o
188
+
187
189
  def self.emit_string(ts, te, meta)
188
190
  value = meta[:data][ts...te].pack("c*").force_encoding("UTF-8")
189
- if value =~ /\\u|\\./ && value !~ ESCAPES
191
+ if value !~ VALID_STRING
190
192
  meta[:tokens] << token = GraphQL::Language::Token.new(
191
193
  name: :BAD_UNICODE_ESCAPE,
192
194
  value: value,
@@ -1,3 +1,3 @@
1
1
  module GraphQL
2
- VERSION = "1.2.3"
2
+ VERSION = "1.2.4"
3
3
  end
@@ -75,6 +75,10 @@ describe GraphQL::EnumType do
75
75
 
76
76
  it "returns an invalid result" do
77
77
  assert(!result.valid?)
78
+ assert_equal(
79
+ result.problems.first['explanation'],
80
+ "Expected \"bad enum\" to be one of: COW, DONKEY, GOAT, REINDEER, SHEEP, YAK"
81
+ )
78
82
  end
79
83
  end
80
84
 
@@ -19,6 +19,18 @@ describe GraphQL::Language::Lexer do
19
19
  assert_equal tokens[0], tokens[1].prev_token
20
20
  end
21
21
 
22
+ it "unescapes escaped characters" do
23
+ assert_equal "\" \\ / \b \f \n \r \t", subject.tokenize('"\\" \\\\ \\/ \\b \\f \\n \\r \\t"').first.to_s
24
+ end
25
+
26
+ it "unescapes escaped unicode characters" do
27
+ assert_equal "\t", subject.tokenize('"\\u0009"').first.to_s
28
+ end
29
+
30
+ it "rejects bad unicode, even when there's good unicode in the string" do
31
+ assert_equal :BAD_UNICODE_ESCAPE, subject.tokenize('"\\u0XXF \\u0009"').first.name
32
+ end
33
+
22
34
  it "clears the previous_token between runs" do
23
35
  tok_1 = subject.tokenize(query_string)
24
36
  tok_2 = subject.tokenize(query_string)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-14 00:00:00.000000000 Z
11
+ date: 2016-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: codeclimate-test-reporter