graphql 1.8.7 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/generators/graphql/install_generator.rb +2 -1
- data/lib/generators/graphql/scalar_generator.rb +20 -0
- data/lib/generators/graphql/templates/base_scalar.erb +4 -0
- data/lib/generators/graphql/templates/scalar.erb +13 -0
- data/lib/graphql/analysis/ast/analyzer.rb +62 -0
- data/lib/graphql/analysis/ast/field_usage.rb +28 -0
- data/lib/graphql/analysis/ast/max_query_complexity.rb +23 -0
- data/lib/graphql/analysis/ast/max_query_depth.rb +18 -0
- data/lib/graphql/analysis/ast/query_complexity.rb +114 -0
- data/lib/graphql/analysis/ast/query_depth.rb +66 -0
- data/lib/graphql/analysis/ast/visitor.rb +255 -0
- data/lib/graphql/analysis/ast.rb +82 -0
- data/lib/graphql/analysis.rb +1 -0
- data/lib/graphql/argument.rb +5 -0
- data/lib/graphql/authorization.rb +1 -0
- data/lib/graphql/backwards_compatibility.rb +1 -1
- data/lib/graphql/base_type.rb +1 -1
- data/lib/graphql/compatibility/execution_specification/specification_schema.rb +1 -2
- data/lib/graphql/compatibility/schema_parser_specification.rb +2 -6
- data/lib/graphql/dig.rb +19 -0
- data/lib/graphql/directive/include_directive.rb +1 -7
- data/lib/graphql/directive/skip_directive.rb +1 -8
- data/lib/graphql/directive.rb +13 -1
- data/lib/graphql/enum_type.rb +8 -0
- data/lib/graphql/execution/execute.rb +36 -17
- data/lib/graphql/execution/instrumentation.rb +2 -0
- data/lib/graphql/execution/interpreter/execution_errors.rb +29 -0
- data/lib/graphql/execution/interpreter/hash_response.rb +46 -0
- data/lib/graphql/execution/interpreter/resolve.rb +58 -0
- data/lib/graphql/execution/interpreter/runtime.rb +597 -0
- data/lib/graphql/execution/interpreter.rb +99 -0
- data/lib/graphql/execution/lazy.rb +8 -1
- data/lib/graphql/execution/lookahead.rb +351 -0
- data/lib/graphql/execution/multiplex.rb +37 -29
- data/lib/graphql/execution.rb +2 -0
- data/lib/graphql/execution_error.rb +1 -1
- data/lib/graphql/field.rb +1 -7
- data/lib/graphql/integer_encoding_error.rb +12 -0
- data/lib/graphql/internal_representation/rewrite.rb +127 -142
- data/lib/graphql/introspection/dynamic_fields.rb +8 -2
- data/lib/graphql/introspection/entry_points.rb +11 -6
- data/lib/graphql/introspection/enum_value_type.rb +4 -0
- data/lib/graphql/introspection/schema_type.rb +7 -2
- data/lib/graphql/introspection/type_type.rb +9 -5
- data/lib/graphql/invalid_null_error.rb +1 -1
- data/lib/graphql/language/block_string.rb +37 -0
- data/lib/graphql/language/document_from_schema_definition.rb +10 -7
- data/lib/graphql/language/lexer.rb +55 -36
- data/lib/graphql/language/lexer.rl +8 -3
- data/lib/graphql/language/nodes.rb +440 -362
- data/lib/graphql/language/parser.rb +56 -56
- data/lib/graphql/language/parser.y +12 -12
- data/lib/graphql/language/printer.rb +2 -2
- data/lib/graphql/language/visitor.rb +158 -15
- data/lib/graphql/language.rb +0 -1
- data/lib/graphql/literal_validation_error.rb +6 -0
- data/lib/graphql/query/arguments.rb +3 -2
- data/lib/graphql/query/arguments_cache.rb +1 -1
- data/lib/graphql/query/context.rb +14 -5
- data/lib/graphql/query/executor.rb +1 -1
- data/lib/graphql/query/result.rb +1 -1
- data/lib/graphql/query/validation_pipeline.rb +35 -11
- data/lib/graphql/query/variable_validation_error.rb +10 -1
- data/lib/graphql/query.rb +16 -2
- data/lib/graphql/relay/base_connection.rb +2 -0
- data/lib/graphql/relay/connection_instrumentation.rb +3 -1
- data/lib/graphql/relay/connection_resolve.rb +1 -1
- data/lib/graphql/relay/node.rb +2 -28
- data/lib/graphql/relay/relation_connection.rb +1 -1
- data/lib/graphql/schema/argument.rb +13 -5
- data/lib/graphql/schema/base_64_encoder.rb +4 -4
- data/lib/graphql/schema/build_from_definition.rb +2 -4
- data/lib/graphql/schema/default_type_error.rb +1 -1
- data/lib/graphql/schema/directive/feature.rb +66 -0
- data/lib/graphql/schema/directive/include.rb +25 -0
- data/lib/graphql/schema/directive/skip.rb +25 -0
- data/lib/graphql/schema/directive/transform.rb +48 -0
- data/lib/graphql/schema/directive.rb +103 -0
- data/lib/graphql/schema/enum_value.rb +3 -2
- data/lib/graphql/schema/field/connection_extension.rb +50 -0
- data/lib/graphql/schema/field/scope_extension.rb +18 -0
- data/lib/graphql/schema/field.rb +273 -64
- data/lib/graphql/schema/field_extension.rb +69 -0
- data/lib/graphql/schema/input_object.rb +16 -8
- data/lib/graphql/schema/interface.rb +1 -0
- data/lib/graphql/schema/loader.rb +22 -16
- data/lib/graphql/schema/member/base_dsl_methods.rb +8 -2
- data/lib/graphql/schema/member/build_type.rb +33 -1
- data/lib/graphql/schema/member/has_arguments.rb +6 -2
- data/lib/graphql/schema/member/has_fields.rb +18 -70
- data/lib/graphql/schema/member/has_path.rb +25 -0
- data/lib/graphql/schema/member/instrumentation.rb +10 -7
- data/lib/graphql/schema/member.rb +2 -0
- data/lib/graphql/schema/mutation.rb +6 -48
- data/lib/graphql/schema/non_null.rb +5 -1
- data/lib/graphql/schema/object.rb +18 -4
- data/lib/graphql/schema/printer.rb +1 -1
- data/lib/graphql/schema/relay_classic_mutation.rb +42 -9
- data/lib/graphql/schema/resolver/has_payload_type.rb +65 -0
- data/lib/graphql/schema/resolver.rb +45 -20
- data/lib/graphql/schema/subscription.rb +97 -0
- data/lib/graphql/schema/traversal.rb +11 -7
- data/lib/graphql/schema.rb +186 -38
- data/lib/graphql/static_validation/all_rules.rb +3 -2
- data/lib/graphql/static_validation/base_visitor.rb +199 -0
- data/lib/graphql/static_validation/default_visitor.rb +15 -0
- data/lib/graphql/static_validation/definition_dependencies.rb +62 -68
- data/lib/graphql/static_validation/{message.rb → error.rb} +11 -11
- data/lib/graphql/static_validation/interpreter_visitor.rb +14 -0
- data/lib/graphql/static_validation/literal_validator.rb +54 -11
- data/lib/graphql/static_validation/no_validate_visitor.rb +10 -0
- data/lib/graphql/static_validation/rules/argument_literals_are_compatible.rb +87 -16
- data/lib/graphql/static_validation/rules/argument_literals_are_compatible_error.rb +31 -0
- data/lib/graphql/static_validation/rules/argument_names_are_unique.rb +11 -11
- data/lib/graphql/static_validation/rules/argument_names_are_unique_error.rb +30 -0
- data/lib/graphql/static_validation/rules/arguments_are_defined.rb +52 -8
- data/lib/graphql/static_validation/rules/arguments_are_defined_error.rb +35 -0
- data/lib/graphql/static_validation/rules/directives_are_defined.rb +12 -15
- data/lib/graphql/static_validation/rules/directives_are_defined_error.rb +29 -0
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations.rb +19 -14
- data/lib/graphql/static_validation/rules/directives_are_in_valid_locations_error.rb +31 -0
- data/lib/graphql/static_validation/rules/fields_are_defined_on_type.rb +17 -19
- data/lib/graphql/static_validation/rules/fields_are_defined_on_type_error.rb +32 -0
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections.rb +30 -14
- data/lib/graphql/static_validation/rules/fields_have_appropriate_selections_error.rb +31 -0
- data/lib/graphql/static_validation/rules/fields_will_merge.rb +356 -29
- data/lib/graphql/static_validation/rules/fields_will_merge_error.rb +32 -0
- data/lib/graphql/static_validation/rules/fragment_names_are_unique.rb +20 -13
- data/lib/graphql/static_validation/rules/fragment_names_are_unique_error.rb +29 -0
- data/lib/graphql/static_validation/rules/fragment_spreads_are_possible.rb +37 -29
- data/lib/graphql/static_validation/rules/fragment_spreads_are_possible_error.rb +35 -0
- data/lib/graphql/static_validation/rules/fragment_types_exist.rb +25 -17
- data/lib/graphql/static_validation/rules/fragment_types_exist_error.rb +29 -0
- data/lib/graphql/static_validation/rules/fragments_are_finite.rb +12 -10
- data/lib/graphql/static_validation/rules/fragments_are_finite_error.rb +29 -0
- data/lib/graphql/static_validation/rules/fragments_are_named.rb +7 -11
- data/lib/graphql/static_validation/rules/fragments_are_named_error.rb +26 -0
- data/lib/graphql/static_validation/rules/fragments_are_on_composite_types.rb +16 -16
- data/lib/graphql/static_validation/rules/fragments_are_on_composite_types_error.rb +30 -0
- data/lib/graphql/static_validation/rules/fragments_are_used.rb +21 -14
- data/lib/graphql/static_validation/rules/fragments_are_used_error.rb +29 -0
- data/lib/graphql/static_validation/rules/mutation_root_exists.rb +10 -14
- data/lib/graphql/static_validation/rules/mutation_root_exists_error.rb +26 -0
- data/lib/graphql/static_validation/rules/no_definitions_are_present.rb +30 -30
- data/lib/graphql/static_validation/rules/no_definitions_are_present_error.rb +25 -0
- data/lib/graphql/static_validation/rules/operation_names_are_valid.rb +25 -17
- data/lib/graphql/static_validation/rules/operation_names_are_valid_error.rb +28 -0
- data/lib/graphql/static_validation/rules/required_arguments_are_present.rb +17 -18
- data/lib/graphql/static_validation/rules/required_arguments_are_present_error.rb +35 -0
- data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present.rb +47 -0
- data/lib/graphql/static_validation/rules/required_input_object_attributes_are_present_error.rb +35 -0
- data/lib/graphql/static_validation/rules/subscription_root_exists.rb +10 -14
- data/lib/graphql/static_validation/rules/subscription_root_exists_error.rb +26 -0
- data/lib/graphql/static_validation/rules/unique_directives_per_location.rb +28 -17
- data/lib/graphql/static_validation/rules/unique_directives_per_location_error.rb +29 -0
- data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed.rb +35 -27
- data/lib/graphql/static_validation/rules/variable_default_values_are_correctly_typed_error.rb +39 -0
- data/lib/graphql/static_validation/rules/variable_names_are_unique.rb +15 -14
- data/lib/graphql/static_validation/rules/variable_names_are_unique_error.rb +29 -0
- data/lib/graphql/static_validation/rules/variable_usages_are_allowed.rb +41 -30
- data/lib/graphql/static_validation/rules/variable_usages_are_allowed_error.rb +38 -0
- data/lib/graphql/static_validation/rules/variables_are_input_types.rb +18 -14
- data/lib/graphql/static_validation/rules/variables_are_input_types_error.rb +32 -0
- data/lib/graphql/static_validation/rules/variables_are_used_and_defined.rb +73 -65
- data/lib/graphql/static_validation/rules/variables_are_used_and_defined_error.rb +37 -0
- data/lib/graphql/static_validation/validation_context.rb +8 -51
- data/lib/graphql/static_validation/validator.rb +23 -15
- data/lib/graphql/static_validation.rb +5 -3
- data/lib/graphql/subscriptions/action_cable_subscriptions.rb +21 -2
- data/lib/graphql/subscriptions/event.rb +28 -5
- data/lib/graphql/subscriptions/subscription_root.rb +66 -0
- data/lib/graphql/subscriptions.rb +16 -2
- data/lib/graphql/tracing/active_support_notifications_tracing.rb +0 -1
- data/lib/graphql/tracing/appsignal_tracing.rb +1 -1
- data/lib/graphql/tracing/data_dog_tracing.rb +1 -1
- data/lib/graphql/tracing/new_relic_tracing.rb +3 -3
- data/lib/graphql/tracing/platform_tracing.rb +17 -1
- data/lib/graphql/tracing/prometheus_tracing.rb +1 -1
- data/lib/graphql/tracing/scout_tracing.rb +1 -1
- data/lib/graphql/tracing/skylight_tracing.rb +3 -3
- data/lib/graphql/tracing.rb +8 -8
- data/lib/graphql/types/float.rb +1 -1
- data/lib/graphql/types/int.rb +11 -2
- data/lib/graphql/types/iso_8601_date_time.rb +15 -1
- data/lib/graphql/types/relay/base_connection.rb +15 -1
- data/lib/graphql/types/relay/node.rb +0 -1
- data/lib/graphql/types/relay/node_field.rb +43 -0
- data/lib/graphql/types/relay/nodes_field.rb +45 -0
- data/lib/graphql/types/relay.rb +2 -0
- data/lib/graphql/unauthorized_error.rb +4 -0
- data/lib/graphql/unauthorized_field_error.rb +23 -0
- data/lib/graphql/upgrader/member.rb +5 -0
- data/lib/graphql/version.rb +1 -1
- data/lib/graphql.rb +6 -1
- data/readme.md +7 -7
- data/spec/dummy/Gemfile +1 -1
- data/spec/dummy/Gemfile.lock +157 -0
- data/spec/dummy/app/channels/graphql_channel.rb +22 -11
- data/spec/dummy/config/locales/en.yml +1 -1
- data/spec/dummy/log/test.log +199 -0
- data/spec/dummy/test/test_helper.rb +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4w/4wzXRZrAkwKdgYaSE0pid5eB-fer8vSfSku_NPg4rMA.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7I/7IHVBiJT06QSpgLpLoJIxboQ0B-D_tMTxsvoezBTV3Q.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8w/8wY_SKagj8wHuwGNAAf6JnQ8joMbC6cEYpHrTAI8Urc.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AK/AKzz1u6bGb4auXcrObA_g5LL-oV0ejNGa448AgAi_WQ.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ET/ETW4uxvaYpruL8y6_ZptUH82ZowMaHIqvg5WexBFdEM.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F1/F1TWpjjyA56k9Z90n5B3xRn7DUdGjX73QCkYC6k07JQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8MUNRzORGFgr329fNM0xLaoWCXdv3BIalT7dsvLfjs.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB/KB07ZaKNC5uXJ7TjLi-WqnY6g7dq8wWp_8N3HNjBNxg.cache +2 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ms/MsKSimH_UCB-H1tLvDABDHuvGciuoW6kVqQWDrXU5FQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mt/Mtci-Kim50aPOmeClD4AIicKn1d1WJ0n454IjSd94sk.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QH/QHt3Tc1Y6M66Oo_pDuMyWrQNs4Pp3SMeZR5K1wJj2Ts.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XU/XU4k1OXnfMils5SrirorPvDSyDSqiOWLZNtmAH1HH8k.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZI/ZIof7mZxWWCnraIFOCuV6a8QRWzKJXJnx2Xd7C0ZyX0.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cG/cGc_puuPS5pZKgUcy1Y_i1L6jl5UtsiIrMH59rTzR6c.cache +3 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/dfro_B6bx3KP1Go-7jEOqqZ2j4hVRseXIc3es9PKQno.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/jO1DfbqnG0mTULsjJJANc3fefrG2zt7DIMmcptMT628.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pE/pE7gO6pQ-z187Swb4hT554wmqsq-cNzgPWLrCz-LQQQ.cache +0 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r9/r9iU1l58a6rxkZSW5RSC52_tD-_UQuHxoMVnkfJ7Mhs.cache +1 -0
- data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xi/xitPPFfPIyDMpaznV0sBBcw8eSCV8PJcLLWin78sCgE.cache +0 -0
- data/spec/dummy/tmp/screenshots/failures_test_it_handles_subscriptions.png +0 -0
- data/spec/graphql/analysis/analyze_query_spec.rb +1 -1
- data/spec/graphql/analysis/ast/field_usage_spec.rb +51 -0
- data/spec/graphql/analysis/ast/max_query_complexity_spec.rb +120 -0
- data/spec/graphql/analysis/ast/max_query_depth_spec.rb +114 -0
- data/spec/graphql/analysis/ast/query_complexity_spec.rb +299 -0
- data/spec/graphql/analysis/ast/query_depth_spec.rb +108 -0
- data/spec/graphql/analysis/ast_spec.rb +269 -0
- data/spec/graphql/authorization_spec.rb +120 -23
- data/spec/graphql/base_type_spec.rb +6 -4
- data/spec/graphql/enum_type_spec.rb +6 -1
- data/spec/graphql/execution/execute_spec.rb +9 -9
- data/spec/graphql/execution/instrumentation_spec.rb +19 -0
- data/spec/graphql/execution/interpreter_spec.rb +485 -0
- data/spec/graphql/execution/lazy_spec.rb +67 -1
- data/spec/graphql/execution/lookahead_spec.rb +363 -0
- data/spec/graphql/execution/multiplex_spec.rb +31 -3
- data/spec/graphql/execution/typecast_spec.rb +20 -20
- data/spec/graphql/execution_error_spec.rb +110 -96
- data/spec/graphql/field_spec.rb +1 -1
- data/spec/graphql/input_object_type_spec.rb +13 -352
- data/spec/graphql/int_type_spec.rb +19 -0
- data/spec/graphql/interface_type_spec.rb +4 -4
- data/spec/graphql/internal_representation/rewrite_spec.rb +2 -0
- data/spec/graphql/introspection/input_value_type_spec.rb +1 -1
- data/spec/graphql/introspection/type_type_spec.rb +1 -2
- data/spec/graphql/language/document_from_schema_definition_spec.rb +2 -2
- data/spec/graphql/language/lexer_spec.rb +72 -3
- data/spec/graphql/language/nodes_spec.rb +20 -0
- data/spec/graphql/language/printer_spec.rb +18 -6
- data/spec/graphql/language/visitor_spec.rb +320 -14
- data/spec/graphql/non_null_type_spec.rb +1 -1
- data/spec/graphql/object_type_spec.rb +32 -27
- data/spec/graphql/query/arguments_spec.rb +21 -0
- data/spec/graphql/query/context_spec.rb +28 -0
- data/spec/graphql/query/executor_spec.rb +40 -36
- data/spec/graphql/query_spec.rb +12 -6
- data/spec/graphql/schema/argument_spec.rb +35 -1
- data/spec/graphql/schema/build_from_definition_spec.rb +144 -29
- data/spec/graphql/schema/catchall_middleware_spec.rb +16 -15
- data/spec/graphql/schema/directive/feature_spec.rb +81 -0
- data/spec/graphql/schema/directive/transform_spec.rb +39 -0
- data/spec/graphql/schema/enum_spec.rb +12 -3
- data/spec/graphql/schema/enum_value_spec.rb +11 -0
- data/spec/graphql/schema/field_extension_spec.rb +115 -0
- data/spec/graphql/schema/field_spec.rb +47 -7
- data/spec/graphql/schema/input_object_spec.rb +95 -0
- data/spec/graphql/schema/instrumentation_spec.rb +3 -0
- data/spec/graphql/schema/interface_spec.rb +8 -2
- data/spec/graphql/schema/introspection_system_spec.rb +9 -1
- data/spec/graphql/schema/loader_spec.rb +5 -0
- data/spec/graphql/schema/member/accepts_definition_spec.rb +4 -0
- data/spec/graphql/schema/member/build_type_spec.rb +46 -0
- data/spec/graphql/schema/member/scoped_spec.rb +19 -3
- data/spec/graphql/schema/mutation_spec.rb +5 -3
- data/spec/graphql/schema/object_spec.rb +9 -1
- data/spec/graphql/schema/printer_spec.rb +255 -93
- data/spec/graphql/schema/relay_classic_mutation_spec.rb +133 -0
- data/spec/graphql/schema/resolver_spec.rb +173 -9
- data/spec/graphql/schema/scalar_spec.rb +6 -0
- data/spec/graphql/schema/subscription_spec.rb +416 -0
- data/spec/graphql/schema/traversal_spec.rb +10 -10
- data/spec/graphql/schema/type_expression_spec.rb +2 -2
- data/spec/graphql/schema/union_spec.rb +7 -0
- data/spec/graphql/schema/validation_spec.rb +1 -1
- data/spec/graphql/schema/warden_spec.rb +145 -88
- data/spec/graphql/static_validation/rules/argument_literals_are_compatible_spec.rb +213 -73
- data/spec/graphql/static_validation/rules/argument_names_are_unique_spec.rb +2 -2
- data/spec/graphql/static_validation/rules/arguments_are_defined_spec.rb +72 -29
- data/spec/graphql/static_validation/rules/directives_are_defined_spec.rb +4 -2
- data/spec/graphql/static_validation/rules/directives_are_in_valid_locations_spec.rb +4 -2
- data/spec/graphql/static_validation/rules/fields_are_defined_on_type_spec.rb +10 -5
- data/spec/graphql/static_validation/rules/fields_have_appropriate_selections_spec.rb +10 -5
- data/spec/graphql/static_validation/rules/fields_will_merge_spec.rb +131 -5
- data/spec/graphql/static_validation/rules/fragment_names_are_unique_spec.rb +2 -1
- data/spec/graphql/static_validation/rules/fragment_spreads_are_possible_spec.rb +6 -3
- data/spec/graphql/static_validation/rules/fragment_types_exist_spec.rb +4 -2
- data/spec/graphql/static_validation/rules/fragments_are_finite_spec.rb +4 -2
- data/spec/graphql/static_validation/rules/fragments_are_named_spec.rb +2 -1
- data/spec/graphql/static_validation/rules/fragments_are_on_composite_types_spec.rb +6 -3
- data/spec/graphql/static_validation/rules/fragments_are_used_spec.rb +22 -2
- data/spec/graphql/static_validation/rules/mutation_root_exists_spec.rb +2 -1
- data/spec/graphql/static_validation/rules/operation_names_are_valid_spec.rb +6 -3
- data/spec/graphql/static_validation/rules/required_arguments_are_present_spec.rb +13 -4
- data/spec/graphql/static_validation/rules/required_input_object_attributes_are_present_spec.rb +58 -0
- data/spec/graphql/static_validation/rules/subscription_root_exists_spec.rb +2 -1
- data/spec/graphql/static_validation/rules/unique_directives_per_location_spec.rb +14 -7
- data/spec/graphql/static_validation/rules/variable_default_values_are_correctly_typed_spec.rb +14 -7
- data/spec/graphql/static_validation/rules/variable_usages_are_allowed_spec.rb +8 -4
- data/spec/graphql/static_validation/rules/variables_are_input_types_spec.rb +8 -4
- data/spec/graphql/static_validation/rules/variables_are_used_and_defined_spec.rb +23 -3
- data/spec/graphql/static_validation/type_stack_spec.rb +10 -19
- data/spec/graphql/static_validation/validator_spec.rb +50 -2
- data/spec/graphql/subscriptions_spec.rb +27 -16
- data/spec/graphql/tracing/new_relic_tracing_spec.rb +16 -0
- data/spec/graphql/tracing/platform_tracing_spec.rb +59 -37
- data/spec/graphql/tracing/prometheus_tracing_spec.rb +3 -0
- data/spec/graphql/tracing/skylight_tracing_spec.rb +16 -0
- data/spec/graphql/types/iso_8601_date_time_spec.rb +29 -2
- data/spec/graphql/union_type_spec.rb +2 -2
- data/spec/graphql/upgrader/member_spec.rb +67 -0
- data/spec/{graphql → integration/mongoid/graphql}/relay/mongo_relation_connection_spec.rb +11 -22
- data/spec/integration/mongoid/spec_helper.rb +2 -0
- data/spec/{support → integration/mongoid}/star_trek/data.rb +0 -0
- data/spec/{support → integration/mongoid}/star_trek/schema.rb +56 -34
- data/spec/{support/star_wars → integration/rails}/data.rb +1 -0
- data/spec/{support → integration/rails/generators}/base_generator_test.rb +0 -0
- data/spec/{generators → integration/rails/generators}/graphql/enum_generator_spec.rb +0 -0
- data/spec/{generators → integration/rails/generators}/graphql/install_generator_spec.rb +1 -1
- data/spec/{generators → integration/rails/generators}/graphql/interface_generator_spec.rb +0 -0
- data/spec/{generators → integration/rails/generators}/graphql/loader_generator_spec.rb +0 -0
- data/spec/{generators → integration/rails/generators}/graphql/mutation_generator_spec.rb +0 -0
- data/spec/{generators → integration/rails/generators}/graphql/object_generator_spec.rb +0 -0
- data/spec/integration/rails/generators/graphql/scalar_generator_spec.rb +28 -0
- data/spec/{generators → integration/rails/generators}/graphql/union_generator_spec.rb +0 -0
- data/spec/integration/rails/graphql/input_object_type_spec.rb +364 -0
- data/spec/{graphql → integration/rails/graphql}/query/variables_spec.rb +7 -7
- data/spec/{graphql → integration/rails/graphql}/relay/array_connection_spec.rb +9 -9
- data/spec/{graphql → integration/rails/graphql}/relay/base_connection_spec.rb +11 -3
- data/spec/{graphql → integration/rails/graphql}/relay/connection_instrumentation_spec.rb +19 -22
- data/spec/{graphql → integration/rails/graphql}/relay/connection_resolve_spec.rb +16 -0
- data/spec/{graphql → integration/rails/graphql}/relay/connection_type_spec.rb +0 -0
- data/spec/{graphql → integration/rails/graphql}/relay/edge_spec.rb +0 -0
- data/spec/{graphql → integration/rails/graphql}/relay/mutation_spec.rb +48 -0
- data/spec/{graphql → integration/rails/graphql}/relay/node_spec.rb +0 -0
- data/spec/{graphql → integration/rails/graphql}/relay/page_info_spec.rb +22 -22
- data/spec/{graphql → integration/rails/graphql}/relay/range_add_spec.rb +4 -4
- data/spec/{graphql → integration/rails/graphql}/relay/relation_connection_spec.rb +56 -27
- data/spec/{graphql → integration/rails/graphql}/schema_spec.rb +15 -11
- data/spec/{graphql → integration/rails/graphql}/tracing/active_support_notifications_tracing_spec.rb +16 -9
- data/spec/integration/rails/spec_helper.rb +25 -0
- data/spec/integration/tmp/app/graphql/types/family_type.rb +9 -0
- data/spec/spec_helper.rb +23 -39
- data/spec/support/dummy/data.rb +20 -17
- data/spec/support/dummy/schema.rb +315 -305
- data/spec/support/error_bubbling_helpers.rb +23 -0
- data/spec/support/jazz.rb +213 -46
- data/spec/support/lazy_helpers.rb +69 -27
- data/spec/support/new_relic.rb +3 -0
- data/spec/support/skylight.rb +3 -0
- data/spec/support/star_wars/schema.rb +131 -81
- data/spec/support/static_validation_helpers.rb +9 -5
- metadata +418 -261
- data/lib/graphql/language/comments.rb +0 -45
- data/lib/graphql/static_validation/arguments_validator.rb +0 -50
- data/spec/graphql/schema/member/has_fields_spec.rb +0 -129
- data/spec/rails_dependency_sanity_spec.rb +0 -14
@@ -0,0 +1,199 @@
|
|
1
|
+
-----------------------------------------------------------
|
2
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
3
|
+
-----------------------------------------------------------
|
4
|
+
Started GET "/" for 127.0.0.1 at 2018-09-29 14:31:04 -0400
|
5
|
+
Processing by PagesController#show as HTML
|
6
|
+
Rendering pages/show.html within layouts/application
|
7
|
+
Rendered pages/show.html within layouts/application (1.3ms)
|
8
|
+
Completed 200 OK in 211ms (Views: 208.8ms)
|
9
|
+
Started GET "/assets/application-03569c14ba2ebaf689cf2b8eecd6aba17af7402d872a3eca6c4ec8fac4eb31e9.js" for 127.0.0.1 at 2018-09-29 14:31:05 -0400
|
10
|
+
Started GET "/cable" for 127.0.0.1 at 2018-09-29 14:31:05 -0400
|
11
|
+
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:05 -0400
|
12
|
+
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
|
13
|
+
GraphqlChannel is transmitting the subscription confirmation
|
14
|
+
GraphqlChannel is transmitting the subscription confirmation
|
15
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
|
16
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
|
17
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"1662699726a\"}", "data"=>"{\"query\":\"subscription($id: ID!) { payload(id: $id) { value } }\",\"variables\":{\"id\":\"updates-1\"},\"action\":\"execute\"}"}) [ArgumentError - wrong number of arguments (given 1, expected 0)]: /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:19:in `payload' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:524:in `public_send' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:524:in `block in public_send_field' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:536:in `with_extensions' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:515:in `public_send_field'
|
18
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"166269a4ccc\"}", "data"=>"{\"query\":\"subscription($id: ID!) { payload(id: $id) { value } }\",\"variables\":{\"id\":\"updates-2\"},\"action\":\"execute\"}"}) [ArgumentError - wrong number of arguments (given 1, expected 0)]: /Users/rmosolgo/code/graphql-ruby/spec/dummy/app/channels/graphql_channel.rb:19:in `payload' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:524:in `public_send' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:524:in `block in public_send_field' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:536:in `with_extensions' | /Users/rmosolgo/code/graphql-ruby/lib/graphql/schema/field.rb:515:in `public_send_field'
|
19
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
|
20
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
21
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
|
22
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
23
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
|
24
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
25
|
+
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:08 -0400
|
26
|
+
-----------------------------------------------------------
|
27
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
28
|
+
-----------------------------------------------------------
|
29
|
+
Started GET "/" for 127.0.0.1 at 2018-09-29 14:31:34 -0400
|
30
|
+
Processing by PagesController#show as HTML
|
31
|
+
Rendering pages/show.html within layouts/application
|
32
|
+
Rendered pages/show.html within layouts/application (1.2ms)
|
33
|
+
Completed 200 OK in 209ms (Views: 206.7ms)
|
34
|
+
Started GET "/assets/application-03569c14ba2ebaf689cf2b8eecd6aba17af7402d872a3eca6c4ec8fac4eb31e9.js" for 127.0.0.1 at 2018-09-29 14:31:34 -0400
|
35
|
+
Started GET "/cable" for 127.0.0.1 at 2018-09-29 14:31:34 -0400
|
36
|
+
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:34 -0400
|
37
|
+
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
|
38
|
+
GraphqlChannel is transmitting the subscription confirmation
|
39
|
+
GraphqlChannel is transmitting the subscription confirmation
|
40
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
|
41
|
+
GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
|
42
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
|
43
|
+
GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
|
44
|
+
GraphqlChannel is streaming from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c
|
45
|
+
GraphqlChannel is streaming from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41
|
46
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-1
|
47
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-2
|
48
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
|
49
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
50
|
+
[ActionCable] Broadcasting to graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
51
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c)
|
52
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
|
53
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
54
|
+
[ActionCable] Broadcasting to graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
55
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c)
|
56
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
|
57
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
58
|
+
[ActionCable] Broadcasting to graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
59
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c)
|
60
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>1})
|
61
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
62
|
+
[ActionCable] Broadcasting to graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
63
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41)
|
64
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>2})
|
65
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
66
|
+
[ActionCable] Broadcasting to graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
67
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41)
|
68
|
+
Unsubscribing from channel: {"channel":"GraphqlChannel","id":"166269a8bd0"}
|
69
|
+
GraphqlChannel stopped streaming from graphql-subscription:d39b7767-bfcf-487f-9985-a99e0074a99c
|
70
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-1
|
71
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"166269a8bd0\"}", "data"=>"{\"id\":\"updates-1\",\"value\":4,\"action\":\"make_trigger\"}"}) [RuntimeError - Unable to find subscription with identifier: {"channel":"GraphqlChannel","id":"166269a8bd0"}]: /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:78:in `find' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:55:in `perform_action' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:19:in `execute_command' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/base.rb:87:in `dispatch_websocket_message' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/server/worker.rb:60:in `block in invoke'
|
72
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>3})
|
73
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
74
|
+
[ActionCable] Broadcasting to graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
75
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41)
|
76
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>4})
|
77
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "4x"
|
78
|
+
[ActionCable] Broadcasting to graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41: {:result=>{"data"=>{"payload"=>{"value"=>400}}}, :more=>true}
|
79
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>400}}}, "more"=>true} (via streamed from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41)
|
80
|
+
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:36 -0400
|
81
|
+
GraphqlChannel stopped streaming from graphql-subscription:95a2d0a0-e2a1-47d2-b9c4-a305e9532f41
|
82
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-2
|
83
|
+
-----------------------------------------------------------
|
84
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
85
|
+
-----------------------------------------------------------
|
86
|
+
Started GET "/" for 127.0.0.1 at 2018-09-29 14:31:58 -0400
|
87
|
+
Processing by PagesController#show as HTML
|
88
|
+
Rendering pages/show.html within layouts/application
|
89
|
+
Rendered pages/show.html within layouts/application (1.2ms)
|
90
|
+
Completed 200 OK in 244ms (Views: 241.4ms)
|
91
|
+
Started GET "/assets/application-03569c14ba2ebaf689cf2b8eecd6aba17af7402d872a3eca6c4ec8fac4eb31e9.js" for 127.0.0.1 at 2018-09-29 14:31:58 -0400
|
92
|
+
Started GET "/cable" for 127.0.0.1 at 2018-09-29 14:31:58 -0400
|
93
|
+
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:31:58 -0400
|
94
|
+
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
|
95
|
+
GraphqlChannel is transmitting the subscription confirmation
|
96
|
+
GraphqlChannel is transmitting the subscription confirmation
|
97
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
|
98
|
+
GraphqlChannel transmitting {:result=>{"data"=>{}}, :more=>true}
|
99
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
|
100
|
+
GraphqlChannel transmitting {:result=>{"data"=>{}}, :more=>true}
|
101
|
+
GraphqlChannel is streaming from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b
|
102
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-1
|
103
|
+
GraphqlChannel is streaming from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b
|
104
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-2
|
105
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
|
106
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
107
|
+
[ActionCable] Broadcasting to graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
108
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b)
|
109
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
|
110
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
111
|
+
[ActionCable] Broadcasting to graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
112
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b)
|
113
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
|
114
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
115
|
+
[ActionCable] Broadcasting to graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
116
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b)
|
117
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>1})
|
118
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
119
|
+
[ActionCable] Broadcasting to graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
120
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b)
|
121
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>2})
|
122
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
123
|
+
[ActionCable] Broadcasting to graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
124
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b)
|
125
|
+
Unsubscribing from channel: {"channel":"GraphqlChannel","id":"166269a7cac"}
|
126
|
+
GraphqlChannel stopped streaming from graphql-subscription:2b19317b-9279-4b20-95fc-adee4a81161b
|
127
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-1
|
128
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"166269a7cac\"}", "data"=>"{\"id\":\"updates-1\",\"value\":4,\"action\":\"make_trigger\"}"}) [RuntimeError - Unable to find subscription with identifier: {"channel":"GraphqlChannel","id":"166269a7cac"}]: /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:78:in `find' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:55:in `perform_action' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:19:in `execute_command' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/base.rb:87:in `dispatch_websocket_message' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/server/worker.rb:60:in `block in invoke'
|
129
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>3})
|
130
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
131
|
+
[ActionCable] Broadcasting to graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
132
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b)
|
133
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>4})
|
134
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "4x"
|
135
|
+
[ActionCable] Broadcasting to graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b: {:result=>{"data"=>{"payload"=>{"value"=>400}}}, :more=>true}
|
136
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>400}}}, "more"=>true} (via streamed from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b)
|
137
|
+
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-09-29 14:32:00 -0400
|
138
|
+
GraphqlChannel stopped streaming from graphql-subscription:5f944467-ccfa-4765-9b4a-3bccb29b0b6b
|
139
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-2
|
140
|
+
-----------------------------------------------------------
|
141
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
142
|
+
-----------------------------------------------------------
|
143
|
+
Started GET "/" for 127.0.0.1 at 2018-10-05 11:46:22 -0400
|
144
|
+
Processing by PagesController#show as HTML
|
145
|
+
Rendering pages/show.html within layouts/application
|
146
|
+
Rendered pages/show.html within layouts/application (1.7ms)
|
147
|
+
Completed 200 OK in 254ms (Views: 251.5ms)
|
148
|
+
Started GET "/assets/application-03569c14ba2ebaf689cf2b8eecd6aba17af7402d872a3eca6c4ec8fac4eb31e9.js" for 127.0.0.1 at 2018-10-05 11:46:22 -0400
|
149
|
+
Started GET "/cable" for 127.0.0.1 at 2018-10-05 11:46:22 -0400
|
150
|
+
Started GET "/cable/" [WebSocket] for 127.0.0.1 at 2018-10-05 11:46:22 -0400
|
151
|
+
Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
|
152
|
+
GraphqlChannel is transmitting the subscription confirmation
|
153
|
+
GraphqlChannel is transmitting the subscription confirmation
|
154
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-2"}})
|
155
|
+
GraphqlChannel#execute({"query"=>"subscription($id: ID!) { payload(id: $id) { value } }", "variables"=>{"id"=>"updates-1"}})
|
156
|
+
GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
|
157
|
+
GraphqlChannel transmitting {:result=>{"data"=>nil}, :more=>true}
|
158
|
+
GraphqlChannel is streaming from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f
|
159
|
+
GraphqlChannel is streaming from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad
|
160
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-2
|
161
|
+
GraphqlChannel is streaming from graphql-event::payload:id:updates-1
|
162
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>1})
|
163
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
164
|
+
[ActionCable] Broadcasting to graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
165
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f)
|
166
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>2})
|
167
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
168
|
+
[ActionCable] Broadcasting to graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
169
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f)
|
170
|
+
GraphqlChannel#make_trigger({"id"=>"updates-1", "value"=>3})
|
171
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-1: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
172
|
+
[ActionCable] Broadcasting to graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
173
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f)
|
174
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>1})
|
175
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzE\"}"
|
176
|
+
[ActionCable] Broadcasting to graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad: {:result=>{"data"=>{"payload"=>{"value"=>1}}}, :more=>true}
|
177
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>1}}}, "more"=>true} (via streamed from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad)
|
178
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>2})
|
179
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzI\"}"
|
180
|
+
[ActionCable] Broadcasting to graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad: {:result=>{"data"=>{"payload"=>{"value"=>2}}}, :more=>true}
|
181
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>2}}}, "more"=>true} (via streamed from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad)
|
182
|
+
Unsubscribing from channel: {"channel":"GraphqlChannel","id":"16644e966c2"}
|
183
|
+
GraphqlChannel stopped streaming from graphql-subscription:6da90bd0-cd94-41db-bf3e-760e37b2873f
|
184
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-1
|
185
|
+
Could not execute command from ({"command"=>"message", "identifier"=>"{\"channel\":\"GraphqlChannel\",\"id\":\"16644e966c2\"}", "data"=>"{\"id\":\"updates-1\",\"value\":4,\"action\":\"make_trigger\"}"}) [RuntimeError - Unable to find subscription with identifier: {"channel":"GraphqlChannel","id":"16644e966c2"}]: /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:78:in `find' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:55:in `perform_action' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/subscriptions.rb:19:in `execute_command' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/connection/base.rb:87:in `dispatch_websocket_message' | /Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/action_cable/server/worker.rb:60:in `block in invoke'
|
186
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>3})
|
187
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "{\"__gid__\":\"Z2lkOi8vZHVtbXkvR3JhcGhxbENoYW5uZWw6OkV4YW1wbGVQYXlsb2FkLzM\"}"
|
188
|
+
[ActionCable] Broadcasting to graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad: {:result=>{"data"=>{"payload"=>{"value"=>3}}}, :more=>true}
|
189
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>3}}}, "more"=>true} (via streamed from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad)
|
190
|
+
GraphqlChannel#make_trigger({"id"=>"updates-2", "value"=>4})
|
191
|
+
[ActionCable] Broadcasting to graphql-event::payload:id:updates-2: "4x"
|
192
|
+
[ActionCable] Broadcasting to graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad: {:result=>{"data"=>{"payload"=>{"value"=>400}}}, :more=>true}
|
193
|
+
GraphqlChannel transmitting {"result"=>{"data"=>{"payload"=>{"value"=>400}}}, "more"=>true} (via streamed from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad)
|
194
|
+
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-10-05 11:46:25 -0400
|
195
|
+
GraphqlChannel stopped streaming from graphql-subscription:c781954b-7b9a-4742-9f9c-69b869d85fad
|
196
|
+
GraphqlChannel stopped streaming from graphql-event::payload:id:updates-2
|
197
|
+
-----------------------------------------------------------
|
198
|
+
ActionCableSubscriptionsTest: test_it_handles_subscriptions
|
199
|
+
-----------------------------------------------------------
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4w/4wzXRZrAkwKdgYaSE0pid5eB-fer8vSfSku_NPg4rMA.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7I/7IHVBiJT06QSpgLpLoJIxboQ0B-D_tMTxsvoezBTV3Q.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%��
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8w/8wY_SKagj8wHuwGNAAf6JnQ8joMbC6cEYpHrTAI8Urc.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%A��G�{h t�l�m�V���NE���f���
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AK/AKzz1u6bGb4auXcrObA_g5LL-oV0ejNGa448AgAi_WQ.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�/Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs.js?type=application/javascript&pipeline=self&id=796d21c1f660d0727db2c56f43915a7a091f297126acf936c5ffbbeeae910c17:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ET/ETW4uxvaYpruL8y6_ZptUH82ZowMaHIqvg5WexBFdEM.cache
ADDED
@@ -0,0 +1,3 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}
|
3
|
+
I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"~file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs.js;TTF
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F1/F1TWpjjyA56k9Z90n5B3xRn7DUdGjX73QCkYC6k07JQ.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/F8/F8MUNRzORGFgr329fNM0xLaoWCXdv3BIalT7dsvLfjs.cache
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"8file-digest://app/assets/javascripts/application.js;TTI"$file-digest://app/assets/config;TTI".file-digest://app/assets/config/rails-ujs;TTI")file-digest://app/assets/javascripts;TTI"3file-digest://app/assets/javascripts/rails-ujs;TTI"wfile-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled;TTI"|file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/rails-ujs;TTI"vfile-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled;TTI"{file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs;TTI"~file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs.js;TTI"1file-digest://app/assets/config/action_cable;TTI"6file-digest://app/assets/javascripts/action_cable;TTI"file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable;TTI"�file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable.js;TTF
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB/KB07ZaKNC5uXJ7TjLi-WqnY6g7dq8wWp_8N3HNjBNxg.cache
ADDED
@@ -0,0 +1,2 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"8file-digest://app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"~file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs.js;TTI"�file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable.js;TTI"$file-digest://app/assets/config;TTI".file-digest://app/assets/config/rails-ujs;TTI")file-digest://app/assets/javascripts;TTI"3file-digest://app/assets/javascripts/rails-ujs;TTI"wfile-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled;TTI"|file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/rails-ujs;TTI"vfile-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled;TTI"{file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actionview-5.2.1/lib/assets/compiled/rails-ujs;TTI"1file-digest://app/assets/config/action_cable;TTI"6file-digest://app/assets/javascripts/action_cable;TTI"file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable;TTF
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Ms/MsKSimH_UCB-H1tLvDABDHuvGciuoW6kVqQWDrXU5FQ.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Mt/Mtci-Kim50aPOmeClD4AIicKn1d1WJ0n454IjSd94sk.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/QH/QHt3Tc1Y6M66Oo_pDuMyWrQNs4Pp3SMeZR5K1wJj2Ts.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&id=2ee40e48961834681557f3d62ba66cca730386fc65c8e753fcc131c5eb57f691:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/XU/XU4k1OXnfMils5SrirorPvDSyDSqiOWLZNtmAH1HH8k.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ZI/ZIof7mZxWWCnraIFOCuV6a8QRWzKJXJnx2Xd7C0ZyX0.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=cc953a7e5d4fae38988cd3dedb6bc5c7d501af2190fe07930d5a3ac7b8f03ad7:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/cG/cGc_puuPS5pZKgUcy1Y_i1L6jl5UtsiIrMH59rTzR6c.cache
ADDED
@@ -0,0 +1,3 @@
|
|
1
|
+
[o:Set:
|
2
|
+
@hash}
|
3
|
+
I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"�file-digest:///Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable.js;TTF
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/df/dfro_B6bx3KP1Go-7jEOqqZ2j4hVRseXIc3es9PKQno.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
I"�/Users/rmosolgo/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/actioncable-5.2.1/lib/assets/compiled/action_cable.js?type=application/javascript&pipeline=self&id=511553fd80002b90bc2b116eebc32ea1592732ff16395e6f2424f75f0ffc1870:ET
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jO/jO1DfbqnG0mTULsjJJANc3fefrG2zt7DIMmcptMT628.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%�d�-�K���`���8Y��3�/Y����a~K
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pE/pE7gO6pQ-z187Swb4hT554wmqsq-cNzgPWLrCz-LQQQ.cache
ADDED
Binary file
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/r9/r9iU1l58a6rxkZSW5RSC52_tD-_UQuHxoMVnkfJ7Mhs.cache
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"%i����O����H�3
|
data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xi/xitPPFfPIyDMpaznV0sBBcw8eSCV8PJcLLWin78sCgE.cache
ADDED
Binary file
|
@@ -78,7 +78,7 @@ describe GraphQL::Analysis do
|
|
78
78
|
|
79
79
|
it "calls the defined analyzers" do
|
80
80
|
collected_types, node_counts = reduce_result
|
81
|
-
expected_visited_types = [Dummy::
|
81
|
+
expected_visited_types = [Dummy::DairyAppQuery.graphql_definition, Dummy::Cheese.graphql_definition, GraphQL::INT_TYPE, GraphQL::STRING_TYPE]
|
82
82
|
assert_equal expected_visited_types, collected_types
|
83
83
|
expected_node_counts = {
|
84
84
|
GraphQL::Language::Nodes::OperationDefinition => 1,
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe GraphQL::Analysis::AST::FieldUsage do
|
5
|
+
let(:result) { GraphQL::Analysis::AST.analyze_query(query, [GraphQL::Analysis::AST::FieldUsage]).first }
|
6
|
+
let(:query) { GraphQL::Query.new(Dummy::Schema, query_string, variables: variables) }
|
7
|
+
let(:variables) { {} }
|
8
|
+
|
9
|
+
describe "query with deprecated fields" do
|
10
|
+
let(:query_string) {%|
|
11
|
+
query {
|
12
|
+
cheese(id: 1) {
|
13
|
+
id
|
14
|
+
fatContent
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|}
|
18
|
+
|
19
|
+
it "keeps track of used fields" do
|
20
|
+
assert_equal ['Cheese.id', 'Cheese.fatContent', 'Query.cheese'], result[:used_fields]
|
21
|
+
end
|
22
|
+
|
23
|
+
it "keeps track of deprecated fields" do
|
24
|
+
assert_equal ['Cheese.fatContent'], result[:used_deprecated_fields]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "query with deprecated fields used more than once" do
|
29
|
+
let(:query_string) {%|
|
30
|
+
query {
|
31
|
+
cheese1: cheese(id: 1) {
|
32
|
+
id
|
33
|
+
fatContent
|
34
|
+
}
|
35
|
+
|
36
|
+
cheese2: cheese(id: 2) {
|
37
|
+
id
|
38
|
+
fatContent
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|}
|
42
|
+
|
43
|
+
it "omits duplicate usage of a field" do
|
44
|
+
assert_equal ['Cheese.id', 'Cheese.fatContent', 'Query.cheese'], result[:used_fields]
|
45
|
+
end
|
46
|
+
|
47
|
+
it "omits duplicate usage of a deprecated field" do
|
48
|
+
assert_equal ['Cheese.fatContent'], result[:used_deprecated_fields]
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe GraphQL::Analysis::AST::MaxQueryComplexity do
|
5
|
+
before do
|
6
|
+
@prev_max_complexity = Dummy::Schema.max_complexity
|
7
|
+
end
|
8
|
+
|
9
|
+
after do
|
10
|
+
Dummy::Schema.max_complexity = @prev_max_complexity
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:query_string) {%|
|
14
|
+
{
|
15
|
+
a: cheese(id: 1) { id }
|
16
|
+
b: cheese(id: 1) { id }
|
17
|
+
c: cheese(id: 1) { id }
|
18
|
+
d: cheese(id: 1) { id }
|
19
|
+
e: cheese(id: 1) { id }
|
20
|
+
}
|
21
|
+
|}
|
22
|
+
let(:query) { GraphQL::Query.new(Dummy::Schema, query_string, variables: {}, max_complexity: max_complexity) }
|
23
|
+
let(:result) {
|
24
|
+
GraphQL::Analysis::AST.analyze_query(query, [GraphQL::Analysis::AST::MaxQueryComplexity]).first
|
25
|
+
}
|
26
|
+
|
27
|
+
|
28
|
+
describe "when a query goes over max complexity" do
|
29
|
+
let(:max_complexity) { 9 }
|
30
|
+
|
31
|
+
it "returns an error" do
|
32
|
+
assert_equal GraphQL::AnalysisError, result.class
|
33
|
+
assert_equal "Query has complexity of 10, which exceeds max complexity of 9", result.message
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "when there is no max complexity" do
|
38
|
+
let(:max_complexity) { nil }
|
39
|
+
|
40
|
+
it "doesn't error" do
|
41
|
+
assert_nil result
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "when the query is less than the max complexity" do
|
46
|
+
let(:max_complexity) { 99 }
|
47
|
+
|
48
|
+
it "doesn't error" do
|
49
|
+
assert_nil result
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "when max_complexity is decreased at query-level" do
|
54
|
+
before do
|
55
|
+
Dummy::Schema.max_complexity = 100
|
56
|
+
end
|
57
|
+
|
58
|
+
let(:max_complexity) { 7 }
|
59
|
+
|
60
|
+
it "is applied" do
|
61
|
+
assert_equal GraphQL::AnalysisError, result.class
|
62
|
+
assert_equal "Query has complexity of 10, which exceeds max complexity of 7", result.message
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "when max_complexity is increased at query-level" do
|
67
|
+
before do
|
68
|
+
Dummy::Schema.max_complexity = 1
|
69
|
+
end
|
70
|
+
|
71
|
+
let(:max_complexity) { 10 }
|
72
|
+
|
73
|
+
it "doesn't error" do
|
74
|
+
assert_nil result
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "across a multiplex" do
|
79
|
+
before do
|
80
|
+
@old_analysis_engine = Dummy::Schema.analysis_engine
|
81
|
+
Dummy::Schema.analysis_engine = GraphQL::Analysis::AST
|
82
|
+
end
|
83
|
+
|
84
|
+
after do
|
85
|
+
Dummy::Schema.analysis_engine = @old_analysis_engine
|
86
|
+
end
|
87
|
+
|
88
|
+
let(:queries) {
|
89
|
+
5.times.map { |n|
|
90
|
+
GraphQL::Query.new(Dummy::Schema, "{ cheese(id: #{n}) { id } }", variables: {})
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
let(:max_complexity) { 9 }
|
95
|
+
let(:multiplex) { GraphQL::Execution::Multiplex.new(schema: Dummy::Schema, queries: queries, context: {}, max_complexity: max_complexity) }
|
96
|
+
let(:analyze_multiplex) {
|
97
|
+
GraphQL::Analysis::AST.analyze_multiplex(multiplex, [GraphQL::Analysis::AST::MaxQueryComplexity])
|
98
|
+
}
|
99
|
+
|
100
|
+
it "returns errors for all queries" do
|
101
|
+
analyze_multiplex
|
102
|
+
err_msg = "Query has complexity of 10, which exceeds max complexity of 9"
|
103
|
+
queries.each do |query|
|
104
|
+
assert_equal err_msg, query.analysis_errors[0].message
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
describe "with a local override" do
|
109
|
+
let(:max_complexity) { 10 }
|
110
|
+
|
111
|
+
it "uses the override" do
|
112
|
+
analyze_multiplex
|
113
|
+
|
114
|
+
queries.each do |query|
|
115
|
+
assert query.analysis_errors.empty?
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe GraphQL::Analysis::AST::MaxQueryDepth do
|
5
|
+
before do
|
6
|
+
@prev_max_depth = Dummy::Schema.max_depth
|
7
|
+
end
|
8
|
+
|
9
|
+
after do
|
10
|
+
Dummy::Schema.max_depth = @prev_max_depth
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:query_string) { "
|
14
|
+
{
|
15
|
+
cheese(id: 1) {
|
16
|
+
similarCheese(source: SHEEP) {
|
17
|
+
similarCheese(source: SHEEP) {
|
18
|
+
similarCheese(source: SHEEP) {
|
19
|
+
similarCheese(source: SHEEP) {
|
20
|
+
similarCheese(source: SHEEP) {
|
21
|
+
id
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
"}
|
30
|
+
let(:max_depth) { nil }
|
31
|
+
let(:query) {
|
32
|
+
GraphQL::Query.new(
|
33
|
+
Dummy::Schema.graphql_definition,
|
34
|
+
query_string,
|
35
|
+
variables: {},
|
36
|
+
max_depth: max_depth
|
37
|
+
)
|
38
|
+
}
|
39
|
+
let(:result) {
|
40
|
+
GraphQL::Analysis::AST.analyze_query(query, [GraphQL::Analysis::AST::MaxQueryDepth]).first
|
41
|
+
}
|
42
|
+
|
43
|
+
describe "when the query is deeper than max depth" do
|
44
|
+
let(:max_depth) { 5 }
|
45
|
+
|
46
|
+
it "adds an error message for a too-deep query" do
|
47
|
+
assert_equal "Query has depth of 7, which exceeds max depth of 5", result.message
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "when the query specifies a different max_depth" do
|
52
|
+
let(:max_depth) { 100 }
|
53
|
+
|
54
|
+
it "obeys that max_depth" do
|
55
|
+
assert_nil result
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "When the query is not deeper than max_depth" do
|
60
|
+
before do
|
61
|
+
Dummy::Schema.max_depth = 100
|
62
|
+
end
|
63
|
+
|
64
|
+
it "doesn't add an error" do
|
65
|
+
assert_nil result
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "when the max depth isn't set" do
|
70
|
+
before do
|
71
|
+
Dummy::Schema.max_depth = nil
|
72
|
+
end
|
73
|
+
|
74
|
+
it "doesn't add an error message" do
|
75
|
+
assert_nil result
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "when a fragment exceeds max depth" do
|
80
|
+
before do
|
81
|
+
Dummy::Schema.max_depth = 4
|
82
|
+
end
|
83
|
+
|
84
|
+
let(:query_string) { "
|
85
|
+
{
|
86
|
+
cheese(id: 1) {
|
87
|
+
...moreFields
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
fragment moreFields on Cheese {
|
92
|
+
similarCheese(source: SHEEP) {
|
93
|
+
similarCheese(source: SHEEP) {
|
94
|
+
similarCheese(source: SHEEP) {
|
95
|
+
...evenMoreFields
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
fragment evenMoreFields on Cheese {
|
102
|
+
similarCheese(source: SHEEP) {
|
103
|
+
similarCheese(source: SHEEP) {
|
104
|
+
id
|
105
|
+
}
|
106
|
+
}
|
107
|
+
}
|
108
|
+
"}
|
109
|
+
|
110
|
+
it "adds an error message for a too-deep query" do
|
111
|
+
assert_equal "Query has depth of 7, which exceeds max depth of 4", result.message
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|