Пример #1
0
def duplicate_op(op_name, l1, c1, l2, c2):
    return {
        'message':
        UniqueOperationNames.duplicate_operation_name_message(op_name),
        'locations': [SourceLocation(l1, c1),
                      SourceLocation(l2, c2)]
    }
Пример #2
0
def duplicate_fragment(fragment_name, l1, c1, l2, c2):
    return {
        'message':
        UniqueFragmentNames.duplicate_fragment_name_message(fragment_name),
        'locations': [SourceLocation(l1, c1),
                      SourceLocation(l2, c2)]
    }
Пример #3
0
def undefined_var_by_op(var_name, l1, c1, op_name, l2, c2):
    return {
        'message':
        NoUndefinedVariables.undefined_var_by_op_message(var_name, op_name),
        'locations': [
            SourceLocation(l1, c1),
            SourceLocation(l2, c2),
        ]
    }
Пример #4
0
def test_string_non_null_boolean_in_directive():
    expect_fails_rule(
        VariablesInAllowedPosition, '''
      query Query($stringVar: String) {
        dog @include(if: $stringVar)
      }
    ''', [{
            'message':
            VariablesInAllowedPosition.bad_var_pos_message(
                'stringVar', 'String', 'Boolean!'),
            'locations': [SourceLocation(2, 19),
                          SourceLocation(3, 26)]
        }])
Пример #5
0
def test_string_string_fail():
    expect_fails_rule(
        VariablesInAllowedPosition, '''
      query Query($stringVar: String) {
        complicatedArgs {
          stringListArgField(stringListArg: $stringVar)
        }
      }
    ''', [{
            'message':
            VariablesInAllowedPosition.bad_var_pos_message(
                'stringVar', 'String', '[String]'),
            'locations': [SourceLocation(2, 19),
                          SourceLocation(4, 45)]
        }])
Пример #6
0
def test_string_over_boolean():
    expect_fails_rule(
        VariablesInAllowedPosition, '''
      query Query($stringVar: String) {
        complicatedArgs {
          booleanArgField(booleanArg: $stringVar)
        }
      }
    ''', [{
            'message':
            VariablesInAllowedPosition.bad_var_pos_message(
                'stringVar', 'String', 'Boolean'),
            'locations': [SourceLocation(2, 19),
                          SourceLocation(4, 39)]
        }])
Пример #7
0
def test_int_non_null_int():
    expect_fails_rule(
        VariablesInAllowedPosition, '''
      query Query($intArg: Int) {
        complicatedArgs {
          nonNullIntArgField(nonNullIntArg: $intArg)
        }
      }
    ''', [{
            'message':
            VariablesInAllowedPosition.bad_var_pos_message(
                'intArg', 'Int', 'Int!'),
            'locations': [SourceLocation(4, 45),
                          SourceLocation(2, 19)]
        }])
def unknown_directive_arg(arg_name, directive_name, line, column):
    return {
        'message':
        KnownArgumentNames.unknown_directive_arg_message(
            arg_name, directive_name),
        'locations': [SourceLocation(line, column)]
    }
def missing_field_arg(field_name, arg_name, type_name, line, column):
    return {
        'message':
        ProvidedNonNullArguments.missing_field_arg_message(
            field_name, arg_name, type_name),
        'locations': [SourceLocation(line, column)]
    }
def unknown_arg(arg_name, field_name, type_name, line, column):
    return {
        'message':
        KnownArgumentNames.unknown_arg_message(arg_name, field_name,
                                               type_name),
        'locations': [SourceLocation(line, column)]
    }
Пример #11
0
def test_parse_provides_useful_errors():
    with raises(LanguageError) as excinfo:
        parse("""{""")
    assert (u'Syntax Error GraphQL (1:2) Expected Name, found EOF\n'
            u'\n'
            u'1: {\n'
            u'    ^\n'
            u'') == excinfo.value.message

    assert excinfo.value.positions == [1]
    assert excinfo.value.locations == [SourceLocation(line=1, column=2)]

    with raises(LanguageError) as excinfo:
        parse("""{ ...MissingOn }
fragment MissingOn Type
""")
    assert 'Syntax Error GraphQL (2:20) Expected "on", found Name "Type"' in str(
        excinfo.value)

    with raises(LanguageError) as excinfo:
        parse('{ field: {} }')
    assert 'Syntax Error GraphQL (1:10) Expected Name, found {' in str(
        excinfo.value)

    with raises(LanguageError) as excinfo:
        parse('notanoperation Foo { field }')
    assert 'Syntax Error GraphQL (1:1) Unexpected Name "notanoperation"' in str(
        excinfo.value)

    with raises(LanguageError) as excinfo:
        parse('...')
    assert 'Syntax Error GraphQL (1:1) Unexpected ...' in str(excinfo.value)
Пример #12
0
def non_input_type_on_variable(variable_name, type_name, line, col):
    return {
        'message':
        VariablesAreInputTypes.non_input_type_on_variable_message(
            variable_name, type_name),
        'locations': [SourceLocation(line, col)]
    }
def fragment_on_non_composite_error(frag_name, type_name, line, column):
    return {
        'message':
        FragmentsOnCompositeTypes.fragment_on_non_composite_error_message(
            frag_name, type_name),
        'locations': [SourceLocation(line, column)]
    }
def bad_value(var_name, type_name, value, line, column):
    return {
        'message':
        DefaultValuesOfCorrectType.bad_value_for_default_arg_message(
            var_name, type_name, value),
        'locations': [SourceLocation(line, column)]
    }
Пример #15
0
def error(frag_name, parent_type, frag_type, line, column):
    return {
        'message':
        PossibleFragmentSpreads.type_incompatible_spread_message(
            frag_name, parent_type, frag_type),
        'locations': [SourceLocation(line, column)]
    }
Пример #16
0
def default_for_non_null_arg(var_name, type_name, guess_type_name, line,
                             column):
    return {
        'message':
        DefaultValuesOfCorrectType.default_for_non_null_arg_message(
            var_name, type_name, guess_type_name),
        'locations': [SourceLocation(line, column)]
    }
def bad_value(arg_name, type_name, value, line, column, errors=None):
    if not errors:
        errors = [u'Expected type "{}", found {}.'.format(type_name, value)]

    return {
        'message': ArgumentsOfCorrectType.bad_value_message(arg_name, type_name, value, errors),
        'locations': [SourceLocation(line, column)]
    }
Пример #18
0
def test_int_non_null_int_within_fragment():
    expect_fails_rule(
        VariablesInAllowedPosition, '''
      fragment nonNullIntArgFieldFrag on ComplicatedArgs {
        nonNullIntArgField(nonNullIntArg: $intArg)
      }
      query Query($intArg: Int) {
        complicatedArgs {
          ...nonNullIntArgFieldFrag
        }
      }
    ''', [{
            'message':
            VariablesInAllowedPosition.bad_var_pos_message(
                'intArg', 'Int', 'Int!'),
            'locations': [SourceLocation(5, 19),
                          SourceLocation(3, 43)]
        }])
Пример #19
0
def bad_value(var_name, type_name, value, line, column, errors=None):
    if not errors:
        errors = ['Expected type "{}", found {}.'.format(type_name, value)]

    return {
        'message':
        DefaultValuesOfCorrectType.bad_value_for_default_arg_message(
            var_name, type_name, value, errors),
        'locations': [SourceLocation(line, column)]
    }
Пример #20
0
def test_scalar_is_invalid_inline_fragment_type():
    expect_fails_rule(
        FragmentsOnCompositeTypes, '''
      fragment invalidFragment on Pet {
        ... on String {
          barks
        }
      }
    ''', [{
            'message': FragmentsOnCompositeTypes.inline_message('String'),
            'locations': [SourceLocation(3, 16)]
        }])
def test_output_types_are_invalid():
    expect_fails_rule(
        VariablesAreInputTypes, '''
      query Foo($a: Dog, $b: [[CatOrDog!]]!, $c: Pet) {
        field(a: $a, b: $b, c: $c)
      }
    ''', [
            {
                'locations': [SourceLocation(2, 21)],
                'message': VariablesAreInputTypes.message('a', 'Dog')
            },
            {
                'locations': [SourceLocation(2, 30)],
                'message': VariablesAreInputTypes.message(
                    'b', '[[CatOrDog!]]!')
            },
            {
                'locations': [SourceLocation(2, 50)],
                'message': VariablesAreInputTypes.message('c', 'Pet')
            },
        ])
def test_boolean_non_null_boolean_in_directive():
    expect_fails_rule(
        VariablesInAllowedPosition, '''
      query Query($boolVar: Boolean)
      {
        dog @include(if: $boolVar)
      }
    ''', [{
            'message':
            VariablesInAllowedPosition.bad_var_pos_message(
                'boolVar', 'Boolean', 'Boolean!'),
            'locations': [SourceLocation(4, 26)]
        }])
Пример #23
0
def test_fails_as_expected_on_the_type_root_field_without_an_arg():
    TestType = GraphQLObjectType('TestType',
                                 {'testField': GraphQLField(GraphQLString)})
    schema = GraphQLSchema(TestType)
    request = '''
    {
        __type {
           name
        }
    }'''
    result = graphql(schema, request)
    expected_error = {
        'message':
        ProvidedNonNullArguments.missing_field_arg_message(
            '__type', 'name', 'String!'),
        'locations': [SourceLocation(line=3, column=9)]
    }
    assert (expected_error in [format_error(error) for error in result.errors])
Пример #24
0
def unknown_directive(directive_name, line, column):
    return {
        'message': KnownDirectives.unknown_directive_message(directive_name),
        'locations': [SourceLocation(line, column)]
    }
Пример #25
0
def misplaced_directive(directive_name, placement, line, column):
    return {
        'message': KnownDirectives.misplaced_directive_message(directive_name, placement),
        'locations': [SourceLocation(line, column)]
    }
Пример #26
0
def unknown_type(type_name, line, column):
    return {
        'message': KnownTypeNames.message(type_name),
        'locations': [SourceLocation(line, column)]
    }
Пример #27
0
def undefined_fragment(fragment_name, line, column):
    return {
        'message': KnownFragmentNames.unknown_fragment_message(fragment_name),
        'locations': [SourceLocation(line, column)]
    }
def anon_not_alone(line, column):
    return {
        'message': LoneAnonymousOperation.anonymous_operation_not_alone_message(),
        'locations': [SourceLocation(line, column)]
    }
Пример #29
0
def unused_fragment(fragment_name, line, column):
    return {
        'message': NoUnusedFragments.unused_fragment_message(fragment_name),
        'locations': [SourceLocation(line, column)]
    }
def unused_variable(variable_name, line, column):
    return {
        'message': NoUnusedVariables.unused_variable_message(variable_name),
        'locations': [SourceLocation(line, column)]
    }