@apollo/gateway 2.4.5 → 2.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/__generated__/graphqlTypes.d.ts +19 -1
  2. package/dist/__generated__/graphqlTypes.d.ts.map +1 -1
  3. package/dist/__generated__/graphqlTypes.js +1 -0
  4. package/dist/__generated__/graphqlTypes.js.map +1 -1
  5. package/dist/executeQueryPlan.js +1 -1
  6. package/dist/executeQueryPlan.js.map +1 -1
  7. package/package.json +4 -4
  8. package/src/__generated__/graphqlTypes.ts +33 -2
  9. package/src/executeQueryPlan.ts +1 -1
  10. package/src/__mocks__/tsconfig.json +0 -7
  11. package/src/__tests__/.gitkeep +0 -0
  12. package/src/__tests__/CucumberREADME.md +0 -96
  13. package/src/__tests__/build-query-plan.feature +0 -1471
  14. package/src/__tests__/buildQueryPlan.test.ts +0 -1225
  15. package/src/__tests__/executeQueryPlan.conditions.test.ts +0 -1488
  16. package/src/__tests__/executeQueryPlan.introspection.test.ts +0 -140
  17. package/src/__tests__/executeQueryPlan.test.ts +0 -6140
  18. package/src/__tests__/execution-utils.ts +0 -124
  19. package/src/__tests__/gateway/__snapshots__/opentelemetry.test.ts.snap +0 -195
  20. package/src/__tests__/gateway/buildService.test.ts +0 -249
  21. package/src/__tests__/gateway/endToEnd.test.ts +0 -486
  22. package/src/__tests__/gateway/executor.test.ts +0 -96
  23. package/src/__tests__/gateway/extensions.test.ts +0 -37
  24. package/src/__tests__/gateway/lifecycle-hooks.test.ts +0 -239
  25. package/src/__tests__/gateway/opentelemetry.test.ts +0 -123
  26. package/src/__tests__/gateway/queryPlanCache.test.ts +0 -231
  27. package/src/__tests__/gateway/queryPlannerConfig.test.ts +0 -101
  28. package/src/__tests__/gateway/reporting.test.ts +0 -616
  29. package/src/__tests__/gateway/supergraphSdl.test.ts +0 -396
  30. package/src/__tests__/gateway/testUtils.ts +0 -89
  31. package/src/__tests__/integration/abstract-types.test.ts +0 -1861
  32. package/src/__tests__/integration/aliases.test.ts +0 -180
  33. package/src/__tests__/integration/boolean.test.ts +0 -279
  34. package/src/__tests__/integration/complex-key.test.ts +0 -197
  35. package/src/__tests__/integration/configuration.test.ts +0 -404
  36. package/src/__tests__/integration/custom-directives.test.ts +0 -174
  37. package/src/__tests__/integration/execution-style.test.ts +0 -35
  38. package/src/__tests__/integration/fragments.test.ts +0 -237
  39. package/src/__tests__/integration/list-key.test.ts +0 -128
  40. package/src/__tests__/integration/logger.test.ts +0 -122
  41. package/src/__tests__/integration/managed.test.ts +0 -319
  42. package/src/__tests__/integration/merge-arrays.test.ts +0 -34
  43. package/src/__tests__/integration/multiple-key.test.ts +0 -327
  44. package/src/__tests__/integration/mutations.test.ts +0 -287
  45. package/src/__tests__/integration/networkRequests.test.ts +0 -542
  46. package/src/__tests__/integration/nockMocks.ts +0 -157
  47. package/src/__tests__/integration/provides.test.ts +0 -77
  48. package/src/__tests__/integration/requires.test.ts +0 -359
  49. package/src/__tests__/integration/scope.test.ts +0 -557
  50. package/src/__tests__/integration/single-service.test.ts +0 -119
  51. package/src/__tests__/integration/unions.test.ts +0 -79
  52. package/src/__tests__/integration/value-types.test.ts +0 -382
  53. package/src/__tests__/integration/variables.test.ts +0 -120
  54. package/src/__tests__/nockAssertions.ts +0 -20
  55. package/src/__tests__/queryPlanCucumber.test.ts +0 -55
  56. package/src/__tests__/resultShaping.test.ts +0 -605
  57. package/src/__tests__/testSetup.ts +0 -1
  58. package/src/__tests__/tsconfig.json +0 -8
  59. package/src/core/__tests__/core.test.ts +0 -412
  60. package/src/datasources/__tests__/LocalGraphQLDataSource.test.ts +0 -51
  61. package/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts +0 -574
  62. package/src/schema-helper/__tests__/addExtensions.test.ts +0 -70
  63. package/src/supergraphManagers/IntrospectAndCompose/__tests__/IntrospectAndCompose.test.ts +0 -364
  64. package/src/supergraphManagers/IntrospectAndCompose/__tests__/loadServicesFromRemoteEndpoint.test.ts +0 -40
  65. package/src/supergraphManagers/UplinkSupergraphManager/__tests__/UplinkSupergraphManager.test.ts +0 -65
  66. package/src/supergraphManagers/UplinkSupergraphManager/__tests__/loadSupergraphSdlFromStorage.test.ts +0 -511
  67. package/src/utilities/__tests__/deepMerge.test.ts +0 -77
@@ -1,287 +0,0 @@
1
- import { execute } from '../execution-utils';
2
- import {
3
- astSerializer,
4
- queryPlanSerializer,
5
- } from 'apollo-federation-integration-testsuite';
6
- import { accounts, reviews } from 'apollo-federation-integration-testsuite';
7
-
8
- expect.addSnapshotSerializer(astSerializer);
9
- expect.addSnapshotSerializer(queryPlanSerializer);
10
-
11
- function spyOnResolver<T extends string>(resolverMap: any, resolverName: T) {
12
- return jest.spyOn<any, T>(resolverMap, resolverName).mockName(resolverName);
13
- }
14
-
15
- it('supports mutations', async () => {
16
- const query = `#graphql
17
- mutation Login($username: String!, $password: String!) {
18
- login(username: $username, password: $password) {
19
- reviews {
20
- product {
21
- upc
22
- }
23
- }
24
- }
25
- }
26
- `;
27
-
28
- const variables = { username: '@complete', password: 'css_completes_me' };
29
- const { data, queryPlan } = await execute({
30
- query,
31
- variables,
32
- });
33
-
34
- expect(data).toEqual({
35
- login: {
36
- reviews: [
37
- { product: { upc: '3' } },
38
- { product: { upc: '1' } },
39
- { product: { upc: '0262510871' } },
40
- { product: { upc: '0136291554' } },
41
- ],
42
- },
43
- });
44
-
45
- expect(queryPlan).toCallService('accounts');
46
- expect(queryPlan).toCallService('reviews');
47
- expect(queryPlan).toCallService('product');
48
- });
49
-
50
- it('returning across service boundaries', async () => {
51
- const query = `#graphql
52
- mutation Review($upc: String!, $body: String!) {
53
- reviewProduct(input: { upc: $upc, body: $body }) {
54
- ... on Furniture {
55
- name
56
- }
57
- }
58
- }
59
- `;
60
-
61
- const variables = { upc: '1', body: 'A great table' };
62
- const { data, queryPlan } = await execute({
63
- query,
64
- variables,
65
- });
66
-
67
- expect(data).toEqual({
68
- reviewProduct: {
69
- name: 'Table',
70
- },
71
- });
72
-
73
- expect(queryPlan).toCallService('reviews');
74
- expect(queryPlan).toCallService('product');
75
- });
76
-
77
- it('multiple root mutations', async () => {
78
- const login = spyOnResolver(accounts.resolvers.Mutation, 'login');
79
- const reviewProduct = spyOnResolver(
80
- reviews.resolvers.Mutation,
81
- 'reviewProduct',
82
- );
83
-
84
- const query = `#graphql
85
- mutation LoginAndReview(
86
- $username: String!
87
- $password: String!
88
- $upc: String!
89
- $body: String!
90
- ) {
91
- login(username: $username, password: $password) {
92
- reviews {
93
- product {
94
- upc
95
- }
96
- }
97
- }
98
- reviewProduct(input: { upc: $upc, body: $body }) {
99
- ... on Furniture {
100
- name
101
- }
102
- }
103
- }
104
- `;
105
-
106
- const variables = {
107
- username: '@complete',
108
- password: 'css_completes_me',
109
- upc: '1',
110
- body: 'A great table.',
111
- };
112
- const { data, queryPlan } = await execute({
113
- query,
114
- variables,
115
- });
116
-
117
- expect(data).toEqual({
118
- login: {
119
- reviews: [
120
- { product: { upc: '3' } },
121
- { product: { upc: '1' } },
122
- { product: { upc: '0262510871' } },
123
- { product: { upc: '0136291554' } },
124
- ],
125
- },
126
- reviewProduct: {
127
- name: 'Table',
128
- },
129
- });
130
-
131
- expect(queryPlan).toCallService('accounts');
132
- expect(queryPlan).toCallService('reviews');
133
- expect(queryPlan).toCallService('product');
134
-
135
- expect(login).toHaveBeenCalledBefore(reviewProduct);
136
- });
137
-
138
- it('multiple root mutations with correct service order', async () => {
139
- const reviewsMutations = reviews.resolvers.Mutation;
140
- const reviewProduct = spyOnResolver(reviewsMutations, 'reviewProduct');
141
- const login = spyOnResolver(accounts.resolvers.Mutation, 'login');
142
- const updateReview = spyOnResolver(reviewsMutations, 'updateReview');
143
- const deleteReview = spyOnResolver(reviewsMutations, 'deleteReview');
144
-
145
- const query = `#graphql
146
- mutation LoginAndReview(
147
- $upc: String!
148
- $body: String!
149
- $updatedReview: UpdateReviewInput!
150
- $username: String!
151
- $password: String!
152
- $reviewId: ID!
153
- ) {
154
- reviewProduct(input: { upc: $upc, body: $body }) {
155
- ... on Furniture {
156
- upc
157
- }
158
- }
159
- updateReview(review: $updatedReview) {
160
- id
161
- body
162
- }
163
- login(username: $username, password: $password) {
164
- reviews {
165
- product {
166
- upc
167
- }
168
- }
169
- }
170
- deleteReview(id: $reviewId)
171
- }
172
- `;
173
-
174
- const variables = {
175
- upc: '1',
176
- body: 'A great table.',
177
- updatedReview: {
178
- id: '1',
179
- body: 'An excellent table.',
180
- },
181
- username: '@complete',
182
- password: 'css_completes_me',
183
- reviewId: '6',
184
- };
185
- const { data, queryPlan } = await execute({
186
- query,
187
- variables,
188
- });
189
-
190
- expect(data).toEqual({
191
- deleteReview: true,
192
- login: {
193
- reviews: [
194
- { product: { upc: '3' } },
195
- { product: { upc: '1' } },
196
- { product: { upc: '0262510871' } },
197
- { product: { upc: '0136291554' } },
198
- ],
199
- },
200
- reviewProduct: {
201
- upc: '1',
202
- },
203
- updateReview: {
204
- body: 'An excellent table.',
205
- id: '1',
206
- },
207
- });
208
-
209
- expect(queryPlan).toMatchInlineSnapshot(`
210
- QueryPlan {
211
- Sequence {
212
- Fetch(service: "reviews") {
213
- {
214
- reviewProduct(input: {upc: $upc, body: $body}) {
215
- __typename
216
- ... on Furniture {
217
- upc
218
- }
219
- }
220
- updateReview(review: $updatedReview) {
221
- id
222
- body
223
- }
224
- }
225
- },
226
- Fetch(service: "accounts") {
227
- {
228
- login(username: $username, password: $password) {
229
- __typename
230
- id
231
- }
232
- }
233
- },
234
- Flatten(path: "login") {
235
- Fetch(service: "reviews") {
236
- {
237
- ... on User {
238
- __typename
239
- id
240
- }
241
- } =>
242
- {
243
- ... on User {
244
- reviews {
245
- product {
246
- __typename
247
- ... on Book {
248
- __typename
249
- isbn
250
- }
251
- ... on Furniture {
252
- upc
253
- }
254
- }
255
- }
256
- }
257
- }
258
- },
259
- },
260
- Flatten(path: "login.reviews.@.product") {
261
- Fetch(service: "product") {
262
- {
263
- ... on Book {
264
- __typename
265
- isbn
266
- }
267
- } =>
268
- {
269
- ... on Book {
270
- upc
271
- }
272
- }
273
- },
274
- },
275
- Fetch(service: "reviews") {
276
- {
277
- deleteReview(id: $reviewId)
278
- }
279
- },
280
- },
281
- }
282
- `);
283
-
284
- expect(reviewProduct).toHaveBeenCalledBefore(updateReview);
285
- expect(updateReview).toHaveBeenCalledBefore(login);
286
- expect(login).toHaveBeenCalledBefore(deleteReview);
287
- });