From d16ffed961e8763264ad98f94dc71c1acdd2f683 Mon Sep 17 00:00:00 2001 From: Charlie Astrada Date: Fri, 7 May 2021 21:12:35 -0300 Subject: [PATCH] Add apollo-server-integration-testing dependency You can't really write real integration tests with apollo-server-testing, because it doesn't support servers which rely on the context option being a function that uses the req object despite this functionality being supported by the real apollo server. The official integration example code from Apollo solves this by instantiating an ApolloServer inside the test and mocking the context value by hand. But I don't consider this a real integration test, since you're not using the same instantiation code that your production code uses. * description of issue with apollo-server-testing: https://github.com/apollographql/apollo-server/issues/2277 * workaround: https://github.com/apollographql/fullstack-tutorial/blob/6988f6948668ccc2dea3f7a216dd44bdf25a0b9f/final/server/src/__tests__/integration.js#L68-L74 --- server/package-lock.json | 77 ++++++++++++++++++++++++++++++++++++---- server/package.json | 1 + 2 files changed, 72 insertions(+), 6 deletions(-) diff --git a/server/package-lock.json b/server/package-lock.json index 0281188..4899993 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -39,6 +39,7 @@ "@types/node": "^14.14.8", "@types/nodemailer": "^6.4.1", "@types/uuid": "^8.3.0", + "apollo-server-integration-testing": "^3.0.0", "apollo-server-testing": "^2.19.0", "faker": "^5.1.0", "gen-env-types": "^1.0.4", @@ -1898,6 +1899,21 @@ "@types/serve-static": "*" } }, + "node_modules/apollo-server-integration-testing": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/apollo-server-integration-testing/-/apollo-server-integration-testing-3.0.0.tgz", + "integrity": "sha512-YBQhR+0MtSkSK+N/tD6LN1EiJwvlpPT4EgOQxwCwgbGc8ToszZF7xk9M/Ij8IQm67BeUXXKTfc2+AdDVpL35yw==", + "dev": true, + "dependencies": { + "apollo-server-core": "^2.9.13", + "apollo-server-express": "^2.9.13", + "express": "^4.17.1", + "node-mocks-http": "^1.8.0" + }, + "peerDependencies": { + "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, "node_modules/apollo-server-plugin-base": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.10.4.tgz", @@ -4797,9 +4813,9 @@ } }, "node_modules/hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "node_modules/html-encoding-sniffer": { @@ -6693,6 +6709,26 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, + "node_modules/node-mocks-http": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/node-mocks-http/-/node-mocks-http-1.10.1.tgz", + "integrity": "sha512-/Nz83kiJ3z+vGqxmlDyv8+L1CJno+gH23DzG3oPH9dBSfMYa5IFVwPgZpXCB2kdiiIu/HoDpZ2BuLqQs7qjFLQ==", + "dev": true, + "dependencies": { + "accepts": "^1.3.7", + "depd": "^1.1.0", + "fresh": "^0.5.2", + "merge-descriptors": "^1.0.1", + "methods": "^1.1.2", + "mime": "^1.3.4", + "parseurl": "^1.3.3", + "range-parser": "^1.2.0", + "type-is": "^1.6.18" + }, + "engines": { + "node": ">=0.6" + } + }, "node_modules/node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", @@ -12118,6 +12154,18 @@ } } }, + "apollo-server-integration-testing": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/apollo-server-integration-testing/-/apollo-server-integration-testing-3.0.0.tgz", + "integrity": "sha512-YBQhR+0MtSkSK+N/tD6LN1EiJwvlpPT4EgOQxwCwgbGc8ToszZF7xk9M/Ij8IQm67BeUXXKTfc2+AdDVpL35yw==", + "dev": true, + "requires": { + "apollo-server-core": "^2.9.13", + "apollo-server-express": "^2.9.13", + "express": "^4.17.1", + "node-mocks-http": "^1.8.0" + } + }, "apollo-server-plugin-base": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.10.4.tgz", @@ -14452,9 +14500,9 @@ } }, "hosted-git-info": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", - "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, "html-encoding-sniffer": { @@ -15973,6 +16021,23 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, + "node-mocks-http": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/node-mocks-http/-/node-mocks-http-1.10.1.tgz", + "integrity": "sha512-/Nz83kiJ3z+vGqxmlDyv8+L1CJno+gH23DzG3oPH9dBSfMYa5IFVwPgZpXCB2kdiiIu/HoDpZ2BuLqQs7qjFLQ==", + "dev": true, + "requires": { + "accepts": "^1.3.7", + "depd": "^1.1.0", + "fresh": "^0.5.2", + "merge-descriptors": "^1.0.1", + "methods": "^1.1.2", + "mime": "^1.3.4", + "parseurl": "^1.3.3", + "range-parser": "^1.2.0", + "type-is": "^1.6.18" + } + }, "node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", diff --git a/server/package.json b/server/package.json index 1bc8378..a6da768 100644 --- a/server/package.json +++ b/server/package.json @@ -35,6 +35,7 @@ "@types/node": "^14.14.8", "@types/nodemailer": "^6.4.1", "@types/uuid": "^8.3.0", + "apollo-server-integration-testing": "^3.0.0", "apollo-server-testing": "^2.19.0", "faker": "^5.1.0", "gen-env-types": "^1.0.4",