Commit Graph

20 Commits

Author SHA1 Message Date
Derek Lavigne
d22385cc93 Update query variable coercion to meet the rules outlined in the
specification.

The framework currently coerces query variables similar to the way it
treats output values, which means it attempts to coerce the value into
the field's corresponding data type regardless of the received value.
According to items 3f and 3g in section 6.1.2
(http://facebook.github.io/graphql/#sec-Validating-Requests) of
Facebook's GraphQL specification query variables should be coerced
according to their type's input coercion rules laid out in section
3.1.1 (http://facebook.github.io/graphql/#sec-Scalars). If the value
can not be coerced into the correct type according the the input
coercion rules for the type a query error should be thrown. This
ensures that client provided query variables were of the correct format
and will be a valid format and type by the time they are passed into an
implementing resolver.

This patch fixes the above issue by updating the way query variables
are sanitized during the process of parsing the query. It directly
follows the rules for scalar input coercion laid out by the
specification and throws query errors when a value that cannot be
coerced to the correct type is given. Tests for isValidPHPValue will
also be updated to ensure that it is doing the correct type checks on
Values::isValidPHPValue for the given type and value provided. A new
test case will also be added to test Values::getVariableValues and make
sure it is also enforcing the scalar input coercion rules and throwing
errors for invalid values.
2017-09-18 12:14:09 -04:00
Vladimir Razuvaev
e52fe8c384 BuildSchema::build() now accepts DocumentNode as well 2017-08-17 20:33:36 +07:00
Vladimir Razuvaev
6845b28a35 Deprecated GraphQL\Type\Definition\Config (#148) 2017-08-14 00:09:02 +07:00
Vladimir Razuvaev
34eae0b891 Schema validation + tests (#148) 2017-08-13 23:04:03 +07:00
Vladimir Razuvaev
09070485c1 Added ability to decorate type configs in BuildSchema + made type creation lazy 2017-07-28 17:55:25 +07:00
Vladimir Razuvaev
296544089c Moved GraphQL\Utils to GraphQL\Utils\Utils 2017-07-10 19:53:46 +07:00
Vladimir Razuvaev
3beeb06340 Merge branches 'master' and 'v0.10' of https://github.com/webonyx/graphql-php into v0.10
# Conflicts:
#	src/Utils/MixedStore.php
2017-07-06 19:50:23 +07:00
Vladimir Razuvaev
bc6a7a3d1d Fix: allow MixedStore to accept true, false, null and floats as keys + related tests 2017-07-06 19:29:33 +07:00
Vladimir Razuvaev
24bcc65314 SchemaPrinter: reverted sorting of fields in printed version (as it breaks s = parse(print(s)) rule) 2017-07-05 19:45:02 +07:00
Vladimir Razuvaev
0b7d55c30d SchemaPrinter: sort fields before printing to get more stable diff 2017-07-05 18:33:16 +07:00
Vladimir Razuvaev
b47c87f793 Allow null values for enums 2017-07-04 20:19:52 +07:00
Vladimir Razuvaev
f569c6de2d Spec compliance: coercion of Int values 2017-07-04 18:27:20 +07:00
Vladimir Razuvaev
76e182e616 Forbid duplicate type definitions 2017-07-04 14:01:00 +07:00
Vladimir Razuvaev
3f909e3e11 Separate utility for extractTypes 2017-02-24 16:29:28 +07:00
petecoop
fc629a292d BuildSchema and SchemaPrinter 2017-02-19 19:26:56 +00:00
vladar
8d696edee5 Renamed AST nodes to *Node to disambiguate types 2016-11-19 06:12:18 +07:00
vladar
439959b292 Enforce input coercion rules 2016-11-19 04:15:40 +07:00
vladar
8a676cde99 Support for NullValue 2016-11-18 23:59:28 +07:00
vladar
3b0e52f254 Updated AST Utils to match the behavior of reference implementation 2016-11-02 00:11:33 +07:00
vladar
e7c7924dc0 New AST utils + test 2016-09-14 18:41:02 +07:00