Skip to content

ObjectType, Input, Enum, and Interface Definitions should not be allowed with zero fields. #441

Open
@ssko1

Description

@ssko1

Current

type Query {}
type Foo {}
input Bar {}
interface Qux {}
enum Quux {}

fails the following test

func TestMustHaveOneField(t *testing.T) {
	_, err := graphql.ParseSchema("type Query {} input Bar {} interface Qux {} enum Quux {}", nil)
	if err == nil {
		t.Fatal("types, inputs, interfaces and enums must have at least one field")
	}
}

Expected

Types, inputs, interfaces, and enums should be validated to ensure that there is at least one field.

Relevant specification links
ObjectTypeDefinition validation: https://spec.graphql.org/draft/#sel-HAHZhCFBABABuBq9O
InterfaceTypeDefinition validation: https://spec.graphql.org/draft/#sel-HAHbnBFBABABxB4a
EnumTypeDefinition validation: https://spec.graphql.org/draft/#sel-HAHfVFBABAB4B_6J
InputObjectTypeDefinition validation: https://spec.graphql.org/draft/#sel-HAHhBXDBABAB6BpkU

Environment

  • tested against the master branch

I'd be more than happy to contribute a fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions