Merge pull request #4873 from Infisical/daniel/fix-nock

fix: move nock to devDependencies
This commit is contained in:
Maidul Islam
2025-11-15 00:02:54 -05:00
committed by GitHub
4 changed files with 97 additions and 89 deletions
+11 -1
View File
@@ -98,7 +98,6 @@
"ms": "^2.1.3", "ms": "^2.1.3",
"mysql2": "^3.9.8", "mysql2": "^3.9.8",
"nanoid": "^3.3.8", "nanoid": "^3.3.8",
"nock": "^14.0.10",
"node-forge": "^1.3.1", "node-forge": "^1.3.1",
"nodemailer": "^6.9.9", "nodemailer": "^6.9.9",
"oci-sdk": "^2.108.0", "oci-sdk": "^2.108.0",
@@ -178,6 +177,7 @@
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.29.1",
"eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-simple-import-sort": "^10.0.0",
"nock": "^14.0.10",
"nodemon": "^3.0.2", "nodemon": "^3.0.2",
"pino-pretty": "^10.2.3", "pino-pretty": "^10.2.3",
"prompt-sync": "^4.2.0", "prompt-sync": "^4.2.0",
@@ -9710,6 +9710,7 @@
"version": "0.39.8", "version": "0.39.8",
"resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.8.tgz", "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.8.tgz",
"integrity": "sha512-2+BzZbjRO7Ct61k8fMNHEtoKjeWI9pIlHFTqBwZ5icHpqszIgEZbjb1MW5Z0+bITTCTl3gk4PDBxs9tA/csXvA==", "integrity": "sha512-2+BzZbjRO7Ct61k8fMNHEtoKjeWI9pIlHFTqBwZ5icHpqszIgEZbjb1MW5Z0+bITTCTl3gk4PDBxs9tA/csXvA==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@open-draft/deferred-promise": "^2.2.0", "@open-draft/deferred-promise": "^2.2.0",
@@ -10736,12 +10737,14 @@
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz",
"integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@open-draft/logger": { "node_modules/@open-draft/logger": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz",
"integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"is-node-process": "^1.2.0", "is-node-process": "^1.2.0",
@@ -10752,6 +10755,7 @@
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz",
"integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@opentelemetry/api": { "node_modules/@opentelemetry/api": {
@@ -23002,6 +23006,7 @@
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz",
"integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/is-number": { "node_modules/is-number": {
@@ -23557,6 +23562,7 @@
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
"dev": true,
"license": "ISC" "license": "ISC"
}, },
"node_modules/json5": { "node_modules/json5": {
@@ -25130,6 +25136,7 @@
"version": "14.0.10", "version": "14.0.10",
"resolved": "https://registry.npmjs.org/nock/-/nock-14.0.10.tgz", "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.10.tgz",
"integrity": "sha512-Q7HjkpyPeLa0ZVZC5qpxBt5EyLczFJ91MEewQiIi9taWuA0KB/MDJlUWtON+7dGouVdADTQsf9RA7TZk6D8VMw==", "integrity": "sha512-Q7HjkpyPeLa0ZVZC5qpxBt5EyLczFJ91MEewQiIi9taWuA0KB/MDJlUWtON+7dGouVdADTQsf9RA7TZk6D8VMw==",
"dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@mswjs/interceptors": "^0.39.5", "@mswjs/interceptors": "^0.39.5",
@@ -27772,6 +27779,7 @@
"version": "1.4.3", "version": "1.4.3",
"resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz",
"integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/p-finally": { "node_modules/p-finally": {
@@ -29179,6 +29187,7 @@
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
"integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
"dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
"node": ">= 8" "node": ">= 8"
@@ -31686,6 +31695,7 @@
"version": "0.5.1", "version": "0.5.1",
"resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz",
"integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==",
"dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/string_decoder": { "node_modules/string_decoder": {
+1 -1
View File
@@ -123,6 +123,7 @@
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.29.1",
"eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-simple-import-sort": "^10.0.0",
"nock": "^14.0.10",
"nodemon": "^3.0.2", "nodemon": "^3.0.2",
"pino-pretty": "^10.2.3", "pino-pretty": "^10.2.3",
"prompt-sync": "^4.2.0", "prompt-sync": "^4.2.0",
@@ -226,7 +227,6 @@
"ms": "^2.1.3", "ms": "^2.1.3",
"mysql2": "^3.9.8", "mysql2": "^3.9.8",
"nanoid": "^3.3.8", "nanoid": "^3.3.8",
"nock": "^14.0.10",
"node-forge": "^1.3.1", "node-forge": "^1.3.1",
"nodemailer": "^6.9.9", "nodemailer": "^6.9.9",
"oci-sdk": "^2.108.0", "oci-sdk": "^2.108.0",
+81 -82
View File
@@ -1,88 +1,87 @@
import nock, { Definition } from "nock"; // import { z } from "zod";
import { z } from "zod";
import { getConfig } from "@app/lib/config/env"; // import { getConfig } from "@app/lib/config/env";
import { ForbiddenRequestError } from "@app/lib/errors"; // import { ForbiddenRequestError } from "@app/lib/errors";
import { logger } from "@app/lib/logger"; // import { logger } from "@app/lib/logger";
import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; // import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { AuthMode } from "@app/services/auth/auth-type"; // import { AuthMode } from "@app/services/auth/auth-type";
export const registerBddNockRouter = async (server: FastifyZodProvider) => { // export const registerBddNockRouter = async (server: FastifyZodProvider) => {
const checkIfBddNockApiEnabled = () => { // const checkIfBddNockApiEnabled = () => {
const appCfg = getConfig(); // const appCfg = getConfig();
// Note: Please note that this API is only available in development mode and only for BDD tests. // // Note: Please note that this API is only available in development mode and only for BDD tests.
// This endpoint should NEVER BE ENABLED IN PRODUCTION! // // This endpoint should NEVER BE ENABLED IN PRODUCTION!
if (appCfg.NODE_ENV !== "development" || !appCfg.isBddNockApiEnabled) { // if (appCfg.NODE_ENV !== "development" || !appCfg.isBddNockApiEnabled) {
throw new ForbiddenRequestError({ message: "BDD Nock API is not enabled" }); // throw new ForbiddenRequestError({ message: "BDD Nock API is not enabled" });
} // }
}; // };
server.route({ // server.route({
method: "POST", // method: "POST",
url: "/define", // url: "/define",
schema: { // schema: {
body: z.object({ definitions: z.unknown().array() }), // body: z.object({ definitions: z.unknown().array() }),
response: { // response: {
200: z.object({ status: z.string() }) // 200: z.object({ status: z.string() })
} // }
}, // },
onRequest: verifyAuth([AuthMode.JWT]), // onRequest: verifyAuth([AuthMode.JWT]),
handler: async (req) => { // handler: async (req) => {
checkIfBddNockApiEnabled(); // checkIfBddNockApiEnabled();
const { body } = req; // const { body } = req;
const { definitions } = body; // const { definitions } = body;
logger.info(definitions, "Defining nock"); // logger.info(definitions, "Defining nock");
const processedDefinitions = definitions.map((definition: unknown) => { // const processedDefinitions = definitions.map((definition: unknown) => {
const { path, ...rest } = definition as Definition; // const { path, ...rest } = definition as Definition;
return { // return {
...rest, // ...rest,
path: // path:
path !== undefined && typeof path === "string" // path !== undefined && typeof path === "string"
? path // ? path
: new RegExp((path as unknown as { regex: string }).regex ?? "") // : new RegExp((path as unknown as { regex: string }).regex ?? "")
} as Definition; // } as Definition;
}); // });
nock.define(processedDefinitions); // nock.define(processedDefinitions);
// Ensure we are activating the nocks, because we could have called `nock.restore()` before this call. // // Ensure we are activating the nocks, because we could have called `nock.restore()` before this call.
if (!nock.isActive()) { // if (!nock.isActive()) {
nock.activate(); // nock.activate();
} // }
return { status: "ok" }; // return { status: "ok" };
} // }
}); // });
server.route({ // server.route({
method: "POST", // method: "POST",
url: "/clean-all", // url: "/clean-all",
schema: { // schema: {
response: { // response: {
200: z.object({ status: z.string() }) // 200: z.object({ status: z.string() })
} // }
}, // },
onRequest: verifyAuth([AuthMode.JWT]), // onRequest: verifyAuth([AuthMode.JWT]),
handler: async () => { // handler: async () => {
checkIfBddNockApiEnabled(); // checkIfBddNockApiEnabled();
logger.info("Cleaning all nocks"); // logger.info("Cleaning all nocks");
nock.cleanAll(); // nock.cleanAll();
return { status: "ok" }; // return { status: "ok" };
} // }
}); // });
server.route({ // server.route({
method: "POST", // method: "POST",
url: "/restore", // url: "/restore",
schema: { // schema: {
response: { // response: {
200: z.object({ status: z.string() }) // 200: z.object({ status: z.string() })
} // }
}, // },
onRequest: verifyAuth([AuthMode.JWT]), // onRequest: verifyAuth([AuthMode.JWT]),
handler: async () => { // handler: async () => {
checkIfBddNockApiEnabled(); // checkIfBddNockApiEnabled();
logger.info("Restore network requests from nock"); // logger.info("Restore network requests from nock");
nock.restore(); // nock.restore();
return { status: "ok" }; // return { status: "ok" };
} // }
}); // });
}; // };
+4 -5
View File
@@ -1,4 +1,3 @@
import { getConfig } from "@app/lib/config/env";
import { import {
APP_CONNECTION_REGISTER_ROUTER_MAP, APP_CONNECTION_REGISTER_ROUTER_MAP,
registerAppConnectionRouter registerAppConnectionRouter
@@ -9,7 +8,7 @@ import { registerSecretSyncRouter, SECRET_SYNC_REGISTER_ROUTER_MAP } from "@app/
import { registerAdminRouter } from "./admin-router"; import { registerAdminRouter } from "./admin-router";
import { registerAuthRoutes } from "./auth-router"; import { registerAuthRoutes } from "./auth-router";
import { registerBddNockRouter } from "./bdd-nock-router"; // import { registerBddNockRouter } from "./bdd-nock-router";
import { registerProjectBotRouter } from "./bot-router"; import { registerProjectBotRouter } from "./bot-router";
import { registerCaRouter } from "./certificate-authority-router"; import { registerCaRouter } from "./certificate-authority-router";
import { CERTIFICATE_AUTHORITY_REGISTER_ROUTER_MAP } from "./certificate-authority-routers"; import { CERTIFICATE_AUTHORITY_REGISTER_ROUTER_MAP } from "./certificate-authority-routers";
@@ -242,7 +241,7 @@ export const registerV1Routes = async (server: FastifyZodProvider) => {
// Note: This is a special route for BDD tests. It's only available in development mode and only for BDD tests. // Note: This is a special route for BDD tests. It's only available in development mode and only for BDD tests.
// This route should NEVER BE ENABLED IN PRODUCTION! // This route should NEVER BE ENABLED IN PRODUCTION!
if (getConfig().isBddNockApiEnabled) { // if (getConfig().isBddNockApiEnabled) {
await server.register(registerBddNockRouter, { prefix: "/bdd-nock" }); // await server.register(registerBddNockRouter, { prefix: "/bdd-nock" });
} // }
}; };