@graphql-hive/federation-gateway-audit
Version:
Audit tool for Apollo Federation Gateway
368 lines (366 loc) • 5.83 kB
text/typescript
import { createTest } from "../../testkit.js";
export default [
createTest(
/* GraphQL */ `
query {
anotherUsers {
id
name
username
}
}
`,
{
data: {
anotherUsers: [
{
id: "u1",
name: "u1-name",
username: "u1-username",
},
{
id: "u2",
name: "u2-name",
username: "u2-username",
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
users {
id
name
username
}
}
`,
{
data: {
users: [
{
id: "u1",
name: "u1-name",
username: "u1-username",
},
{
id: "u2",
name: "u2-name",
username: "u2-username",
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
anotherUsers {
... on User {
age
}
}
}
`,
{
data: {
anotherUsers: [
{
age: 11,
},
{
age: 22,
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
users {
... on User {
age
}
}
}
`,
{
data: {
users: [
{
age: 11,
},
{
age: 22,
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
anotherUsers {
... on User {
age
id
name
username
}
id
name
}
}
`,
{
data: {
anotherUsers: [
{
age: 11,
id: "u1",
name: "u1-name",
username: "u1-username",
},
{
age: 22,
id: "u2",
name: "u2-name",
username: "u2-username",
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
users {
... on User {
age
id
name
username
}
id
name
}
}
`,
{
data: {
users: [
{
age: 11,
id: "u1",
name: "u1-name",
username: "u1-username",
},
{
age: 22,
id: "u2",
name: "u2-name",
username: "u2-username",
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
users {
... on User {
age
id
name
username
}
id
name
}
}
`,
{
data: {
users: [
{
age: 11,
id: "u1",
name: "u1-name",
username: "u1-username",
},
{
age: 22,
id: "u2",
name: "u2-name",
username: "u2-username",
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
accounts {
name
}
}
`,
{
data: {
accounts: [
{
name: "Alice",
},
{
name: "Bob",
},
{
name: "Charlie",
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
accounts {
... on Admin {
name
}
}
}
`,
{
data: {
accounts: [
{
name: "Alice",
},
{
name: "Bob",
},
{},
],
},
},
),
createTest(
/* GraphQL */ `
query {
accounts {
name
# NOTE
# __typename is not available in the interfaceObject, needs to be resolved indirectly
__typename
}
}
`,
{
data: {
accounts: [
{
name: "Alice",
__typename: "Admin",
},
{
name: "Bob",
__typename: "Admin",
},
{
name: "Charlie",
__typename: "Regular",
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
accounts {
... on Admin {
__typename
}
}
}
`,
{
data: {
accounts: [
{
__typename: "Admin",
},
{
__typename: "Admin",
},
{},
],
},
},
),
createTest(
/* GraphQL */ `
query {
accounts {
id
isActive
}
}
`,
{
data: {
accounts: [
{
id: "u1",
isActive: false,
},
{
id: "u2",
isActive: false,
},
{
id: "u3",
isActive: false,
},
],
},
},
),
createTest(
/* GraphQL */ `
query {
accounts {
# NOTE
# id is available in the interfaceObject and can be resolved as there's no type condition involved
id
... on Admin {
isActive
}
}
}
`,
{
data: {
accounts: [
{
id: "u1",
isActive: true,
},
{
id: "u2",
isActive: true,
},
{
id: "u3",
},
],
},
},
),
];