@graphql-hive/federation-gateway-audit
Version:
Audit tool for Apollo Federation Gateway
171 lines (157 loc) • 3.05 kB
JavaScript
'use strict';
var testkit = require('./testkit-CAf-AsDy.cjs');
require('@apollo/composition');
require('graphql');
require('fets');
require('@apollo/subgraph');
require('graphql-yoga');
var a = testkit.createSubgraph("a", {
typeDefs: (
/* GraphQL */
`
extend schema
@link(
url: "https://specs.apollo.dev/federation/v2.3"
import: ["@key", "@external", "@shareable"]
)
type Product @key(fields: "id") {
id: ID @external
category: Category @shareable
}
type Category {
details: String
}
`
),
resolvers: {
Product: {
__resolveReference(product) {
return {
id: product.id,
category: { details: `Details for Product#${product.id}` }
};
}
}
}
});
var b = testkit.createSubgraph("b", {
typeDefs: (
/* GraphQL */
`
extend schema
@link(
url: "https://specs.apollo.dev/federation/v2.3"
import: ["@key", "@external", "@shareable"]
)
type Product @key(fields: "id") {
id: ID @external
category: Category @shareable
}
type Category {
id: ID @shareable
}
`
),
resolvers: {
Product: {
__resolveReference(product) {
return {
id: product.id,
category: {
id: 3
}
};
}
}
}
});
var c = testkit.createSubgraph("c", {
typeDefs: (
/* GraphQL */
`
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.3", import: ["@key"])
type Category @key(fields: "id") {
id: ID
name: String
}
`
),
resolvers: {
Category: {
__resolveReference(category) {
return {
id: category.id,
name: `Category#${category.id}`
};
}
}
}
});
var d = testkit.createSubgraph("d", {
typeDefs: (
/* GraphQL */
`
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.3", import: ["@key"])
type Query {
productFromD(id: ID!): Product
}
type Product @key(fields: "id") {
id: ID
name: String
}
`
),
resolvers: {
Product: {
__resolveReference(product) {
return {
id: product.id,
name: `Product#${product.id}`
};
}
},
Query: {
productFromD(_, { id }) {
return {
id,
name: `Product#${id}`
};
}
}
}
});
var test = [
testkit.createTest(
/* GraphQL */
`
query {
productFromD(id: "1") {
id
name
category {
id
name
details
}
}
}
`,
{
data: {
productFromD: {
id: "1",
name: "Product#1",
category: {
id: "3",
name: "Category#3",
details: "Details for Product#1"
}
}
}
}
)
];
var index = testkit.serve("parent-entity-call-complex", [a, b, c, d], test);
exports.default = index;