Skip to content

Generic auth plugin creates malformed data in results and error paths for fragment spreads #2743

@enisdenjo

Description

@enisdenjo

Discovered while working on #2742.

If schema is:

type Query {
  public: String
  person: Person
}
interface Person {
  name: String
}
type Admin implements Person @authenticated {
  name: String
  email: String
}

then

{
  public
  person {
    ... on Admin {
      email
    }
  }
}

should return:

{
  "data": {
    "public": "public",
    "person": {
      "email": null
    }
  }
}

and not:

{
  "data": {
    "public": "public",
    "person": []
  }
}

also:

{
  public
  person {
    ...A
  }
}
fragment A on Admin {
  email
}

should also return:

{
  "data": {
    "public": "public",
    "person": {
      "email": null
    }
  },
  "errors": [
    {
      "message": "Unauthorized field or type",
      "path": ["person", "email"]
    }
  ]
}

but it returns

{
  "data": {
    "public": "public",
    "person": {},
    "email": null
  },
  "errors": [
    {
      "message": "Unauthorized field or type",
      "path": ["email"]
    }
  ]
}

Metadata

Metadata

Assignees

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