@graphql-hive/federation-gateway-audit
Version:
Audit tool for Apollo Federation Gateway
216 lines (206 loc) • 3.54 kB
JavaScript
'use strict';
var testkit = require('./testkit-CAf-AsDy.cjs');
require('@apollo/composition');
require('graphql');
require('fets');
require('@apollo/subgraph');
require('graphql-yoga');
const users = [
{
id: "u1",
rid: "u1-rid",
name: "u1-name",
nickname: "u1-nickname"
},
{
id: "u2",
rid: "u2-rid",
name: "u2-name",
nickname: "u2-nickname"
}
];
var a = testkit.createSubgraph("a", {
typeDefs: (
/* GraphQL */
`
type Query {
randomUser: User
providedRandomUser: User @provides(fields: "name")
}
extend type User @key(fields: "id") {
id: ID! @external
name: String! @external
rid: ID
}
`
),
resolvers: {
Query: {
randomUser() {
return {
id: users[0].id,
rid: users[0].rid
};
},
providedRandomUser() {
return {
id: users[0].id,
rid: users[0].rid,
name: users[0].name
};
}
},
User: {
__resolveReference(key) {
const user = users.find((u) => u.id === key.id);
if (!user) {
return null;
}
return {
id: user.id,
rid: user.rid
};
},
name(user) {
return user.name ?? "never";
}
}
}
});
var b = testkit.createSubgraph("b", {
typeDefs: (
/* GraphQL */
`
type Query {
userById(id: ID): User
}
type User @key(fields: "id") {
id: ID!
name: String!
nickname: String
}
`
),
resolvers: {
Query: {
userById: (_, { id }) => {
const user = users.find((u) => u.id === id);
if (!user) {
return null;
}
return {
id: user.id,
name: user.name,
nickname: user.nickname
};
}
},
User: {
__resolveReference: (key) => {
const user = users.find((u) => u.id === key.id);
if (!user) {
return null;
}
return {
id: user.id,
name: user.name,
nickname: user.nickname
};
}
}
}
});
var test = [
testkit.createTest(
/* GraphQL */
`
query {
randomUser {
id
name
}
userById(id: "u2") {
id
name
nickname
}
}
`,
{
data: {
randomUser: {
id: "u1",
name: "u1-name"
},
userById: {
id: "u2",
name: "u2-name",
nickname: "u2-nickname"
}
}
}
),
testkit.createTest(
/* GraphQL */
`
query {
randomUser {
id
rid
}
}
`,
{
data: {
randomUser: {
id: "u1",
rid: "u1-rid"
}
}
}
),
testkit.createTest(
/* GraphQL */
`
query {
randomUser {
id
rid
name
}
}
`,
{
data: {
randomUser: {
id: "u1",
rid: "u1-rid",
name: "u1-name"
}
}
}
),
testkit.createTest(
/* GraphQL */
`
query {
providedRandomUser {
id
rid
name
}
}
`,
{
data: {
providedRandomUser: {
id: "u1",
rid: "u1-rid",
name: "u1-name"
}
}
}
)
];
var index = testkit.serve("fed1-external-extension", [a, b], test);
exports.default = index;