UNPKG

@graphql-hive/federation-gateway-audit

Version:
120 lines (109 loc) 2.04 kB
'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;