@graphql-hive/federation-gateway-audit
Version:
Audit tool for Apollo Federation Gateway
120 lines (109 loc) • 2.04 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: "1",
email: "user1@gmail.com",
nickname: "user1"
},
{
id: "2",
email: "user2@gmail.com",
nickname: "user2"
}
];
var email = testkit.createSubgraph("email", {
typeDefs: (
/* GraphQL */
`
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.0", import: ["@key"])
type Query {
user: User
}
type User @key(fields: "id") {
id: ID!
email: String!
}
`
),
resolvers: {
Query: {
user() {
return {
id: users[0].id,
email: users[0].email
};
}
},
User: {
__resolveReference(key) {
const user = users.find((u) => u.id === key.id);
if (!user) {
return null;
}
return {
id: user.id,
email: user.email
};
}
}
}
});
var nickname = testkit.createSubgraph("nickname", {
typeDefs: (
/* GraphQL */
`
extend schema
@link(
url: "https://specs.apollo.dev/federation/v2.0"
import: ["@key", "@external"]
)
type User @key(fields: "email") {
email: String! @external
nickname: String!
}
`
),
resolvers: {
User: {
__resolveReference(key) {
const user = users.find((u) => u.email === key.email);
if (!user) {
return null;
}
return {
nickname: user.nickname
};
}
}
}
});
var test = [
testkit.createTest(
/* GraphQL */
`
query {
user {
id
nickname
}
}
`,
{
data: {
user: {
id: users[0].id,
nickname: users[0].nickname
}
}
}
)
];
var index = testkit.serve("simple-entity-call", [email, nickname], test);
exports.default = index;