n8n 0.167.0 → 0.168.2
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.
- package/dist/commands/execute.js +3 -0
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/executeBatch.d.ts +2 -0
- package/dist/commands/executeBatch.js +3 -0
- package/dist/commands/executeBatch.js.map +1 -1
- package/dist/commands/import/credentials.d.ts +10 -0
- package/dist/commands/import/credentials.js +87 -26
- package/dist/commands/import/credentials.js.map +1 -1
- package/dist/commands/import/workflow.d.ts +11 -1
- package/dist/commands/import/workflow.js +109 -48
- package/dist/commands/import/workflow.js.map +1 -1
- package/dist/commands/start.js +25 -0
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/user-management/reset.d.ts +7 -0
- package/dist/commands/user-management/reset.js +66 -0
- package/dist/commands/user-management/reset.js.map +1 -0
- package/dist/commands/worker.js +4 -1
- package/dist/commands/worker.js.map +1 -1
- package/dist/config/index.d.ts +23 -0
- package/dist/config/index.js +92 -4
- package/dist/config/index.js.map +1 -1
- package/dist/src/ActiveWorkflowRunner.d.ts +2 -1
- package/dist/src/ActiveWorkflowRunner.js +44 -24
- package/dist/src/ActiveWorkflowRunner.js.map +1 -1
- package/dist/src/CredentialsHelper.d.ts +10 -2
- package/dist/src/CredentialsHelper.js +40 -11
- package/dist/src/CredentialsHelper.js.map +1 -1
- package/dist/src/Db.d.ts +4 -1
- package/dist/src/Db.js +90 -66
- package/dist/src/Db.js.map +1 -1
- package/dist/src/GenericHelpers.d.ts +6 -0
- package/dist/src/GenericHelpers.js +18 -1
- package/dist/src/GenericHelpers.js.map +1 -1
- package/dist/src/Interfaces.d.ts +74 -9
- package/dist/src/InternalHooks.d.ts +42 -6
- package/dist/src/InternalHooks.js +54 -13
- package/dist/src/InternalHooks.js.map +1 -1
- package/dist/src/ResponseHelper.js +5 -0
- package/dist/src/ResponseHelper.js.map +1 -1
- package/dist/src/Server.d.ts +2 -0
- package/dist/src/Server.js +584 -458
- package/dist/src/Server.js.map +1 -1
- package/dist/src/TagHelpers.d.ts +3 -3
- package/dist/src/TagHelpers.js +5 -24
- package/dist/src/TagHelpers.js.map +1 -1
- package/dist/src/UserManagement/Interfaces.d.ts +34 -0
- package/dist/src/UserManagement/Interfaces.js +3 -0
- package/dist/src/UserManagement/Interfaces.js.map +1 -0
- package/dist/src/UserManagement/UserManagementHelper.d.ts +17 -0
- package/dist/src/UserManagement/UserManagementHelper.js +158 -0
- package/dist/src/UserManagement/UserManagementHelper.js.map +1 -0
- package/dist/src/UserManagement/auth/jwt.d.ts +7 -0
- package/dist/src/UserManagement/auth/jwt.js +57 -0
- package/dist/src/UserManagement/auth/jwt.js.map +1 -0
- package/dist/src/UserManagement/email/Interfaces.d.ts +29 -0
- package/dist/src/UserManagement/email/Interfaces.js +3 -0
- package/dist/src/UserManagement/email/Interfaces.js.map +1 -0
- package/dist/src/UserManagement/email/NodeMailer.d.ts +7 -0
- package/dist/src/UserManagement/email/NodeMailer.js +67 -0
- package/dist/src/UserManagement/email/NodeMailer.js.map +1 -0
- package/dist/src/UserManagement/email/UserManagementMailer.d.ts +9 -0
- package/dist/src/UserManagement/email/UserManagementMailer.js +77 -0
- package/dist/src/UserManagement/email/UserManagementMailer.js.map +1 -0
- package/dist/src/UserManagement/email/index.d.ts +2 -0
- package/dist/src/UserManagement/email/index.js +7 -0
- package/dist/src/UserManagement/email/index.js.map +1 -0
- package/dist/src/UserManagement/email/templates/instanceSetup.html +5 -0
- package/dist/src/UserManagement/email/templates/invite.html +4 -0
- package/dist/src/UserManagement/email/templates/passwordReset.html +5 -0
- package/dist/src/UserManagement/index.d.ts +4 -0
- package/dist/src/UserManagement/index.js +6 -0
- package/dist/src/UserManagement/index.js.map +1 -0
- package/dist/src/UserManagement/routes/auth.d.ts +2 -0
- package/dist/src/UserManagement/routes/auth.js +74 -0
- package/dist/src/UserManagement/routes/auth.js.map +1 -0
- package/dist/src/UserManagement/routes/index.d.ts +2 -0
- package/dist/src/UserManagement/routes/index.js +100 -0
- package/dist/src/UserManagement/routes/index.js.map +1 -0
- package/dist/src/UserManagement/routes/me.d.ts +2 -0
- package/dist/src/UserManagement/routes/me.js +85 -0
- package/dist/src/UserManagement/routes/me.js.map +1 -0
- package/dist/src/UserManagement/routes/owner.d.ts +2 -0
- package/dist/src/UserManagement/routes/owner.js +68 -0
- package/dist/src/UserManagement/routes/owner.js.map +1 -0
- package/dist/src/UserManagement/routes/passwordReset.d.ts +2 -0
- package/dist/src/UserManagement/routes/passwordReset.js +129 -0
- package/dist/src/UserManagement/routes/passwordReset.js.map +1 -0
- package/dist/src/UserManagement/routes/users.d.ts +2 -0
- package/dist/src/UserManagement/routes/users.js +334 -0
- package/dist/src/UserManagement/routes/users.js.map +1 -0
- package/dist/src/WaitTracker.js +6 -0
- package/dist/src/WaitTracker.js.map +1 -1
- package/dist/src/WaitingWebhooks.js +9 -1
- package/dist/src/WaitingWebhooks.js.map +1 -1
- package/dist/src/WebhookHelpers.js +17 -1
- package/dist/src/WebhookHelpers.js.map +1 -1
- package/dist/src/WorkflowExecuteAdditionalData.d.ts +3 -3
- package/dist/src/WorkflowExecuteAdditionalData.js +41 -13
- package/dist/src/WorkflowExecuteAdditionalData.js.map +1 -1
- package/dist/src/WorkflowHelpers.d.ts +9 -10
- package/dist/src/WorkflowHelpers.js +48 -17
- package/dist/src/WorkflowHelpers.js.map +1 -1
- package/dist/src/WorkflowRunner.js +4 -2
- package/dist/src/WorkflowRunner.js.map +1 -1
- package/dist/src/WorkflowRunnerProcess.js +7 -4
- package/dist/src/WorkflowRunnerProcess.js.map +1 -1
- package/dist/src/api/credentials.api.d.ts +1 -0
- package/dist/src/api/credentials.api.js +222 -0
- package/dist/src/api/credentials.api.js.map +1 -0
- package/dist/src/constants.d.ts +5 -0
- package/dist/src/constants.js +9 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/databases/entities/CredentialsEntity.d.ts +2 -0
- package/dist/src/databases/entities/CredentialsEntity.js +13 -2
- package/dist/src/databases/entities/CredentialsEntity.js.map +1 -1
- package/dist/src/databases/entities/Role.d.ts +16 -0
- package/dist/src/databases/entities/Role.js +87 -0
- package/dist/src/databases/entities/Role.js.map +1 -0
- package/dist/src/databases/entities/Settings.d.ts +6 -0
- package/dist/src/databases/entities/Settings.js +32 -0
- package/dist/src/databases/entities/Settings.js.map +1 -0
- package/dist/src/databases/entities/SharedCredentials.d.ts +13 -0
- package/dist/src/databases/entities/SharedCredentials.js +83 -0
- package/dist/src/databases/entities/SharedCredentials.js.map +1 -0
- package/dist/src/databases/entities/SharedWorkflow.d.ts +13 -0
- package/dist/src/databases/entities/SharedWorkflow.js +83 -0
- package/dist/src/databases/entities/SharedWorkflow.js.map +1 -0
- package/dist/src/databases/entities/TagEntity.js +6 -2
- package/dist/src/databases/entities/TagEntity.js.map +1 -1
- package/dist/src/databases/entities/User.d.ts +24 -0
- package/dist/src/databases/entities/User.js +145 -0
- package/dist/src/databases/entities/User.js.map +1 -0
- package/dist/src/databases/entities/WorkflowEntity.d.ts +2 -0
- package/dist/src/databases/entities/WorkflowEntity.js +8 -1
- package/dist/src/databases/entities/WorkflowEntity.js.map +1 -1
- package/dist/src/databases/entities/index.d.ts +10 -0
- package/dist/src/databases/entities/index.js +10 -0
- package/dist/src/databases/entities/index.js.map +1 -1
- package/dist/src/databases/mysqldb/migrations/1626183952959-AddWaitColumn.js +0 -1
- package/dist/src/databases/mysqldb/migrations/1626183952959-AddWaitColumn.js.map +1 -1
- package/dist/src/databases/mysqldb/migrations/1630451444017-UpdateWorkflowCredentials.js +0 -3
- package/dist/src/databases/mysqldb/migrations/1630451444017-UpdateWorkflowCredentials.js.map +1 -1
- package/dist/src/databases/mysqldb/migrations/1644424784709-AddExecutionEntityIndexes.js +21 -8
- package/dist/src/databases/mysqldb/migrations/1644424784709-AddExecutionEntityIndexes.js.map +1 -1
- package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
- package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.js +100 -0
- package/dist/src/databases/mysqldb/migrations/1646992772331-CreateUserManagement.js.map +1 -0
- package/dist/src/databases/mysqldb/migrations/index.js +2 -0
- package/dist/src/databases/mysqldb/migrations/index.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.d.ts +1 -1
- package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js +1 -1
- package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js +0 -1
- package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js +0 -3
- package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js +16 -17
- package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js.map +1 -1
- package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
- package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js +106 -0
- package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js.map +1 -0
- package/dist/src/databases/postgresdb/migrations/index.js +2 -0
- package/dist/src/databases/postgresdb/migrations/index.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1588102412422-InitialMigration.js +3 -0
- package/dist/src/databases/sqlite/migrations/1588102412422-InitialMigration.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1592445003908-WebhookModel.js +3 -0
- package/dist/src/databases/sqlite/migrations/1592445003908-WebhookModel.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.d.ts +1 -1
- package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.js +3 -0
- package/dist/src/databases/sqlite/migrations/1594825041918-CreateIndexStoppedAt.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.d.ts +2 -1
- package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.js +6 -0
- package/dist/src/databases/sqlite/migrations/1607431743769-MakeStoppedAtNullable.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.d.ts +1 -1
- package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.js +3 -0
- package/dist/src/databases/sqlite/migrations/1611071044839-AddWebhookId.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.d.ts +1 -1
- package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.js +3 -0
- package/dist/src/databases/sqlite/migrations/1617213344594-CreateTagEntity.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.d.ts +1 -1
- package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.js +3 -0
- package/dist/src/databases/sqlite/migrations/1620821879465-UniqueWorkflowNames.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1621707690587-AddWaitColumn.js +3 -1
- package/dist/src/databases/sqlite/migrations/1621707690587-AddWaitColumn.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1630330987096-UpdateWorkflowCredentials.js +3 -3
- package/dist/src/databases/sqlite/migrations/1630330987096-UpdateWorkflowCredentials.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1644421939510-AddExecutionEntityIndexes.js +17 -13
- package/dist/src/databases/sqlite/migrations/1644421939510-AddExecutionEntityIndexes.js.map +1 -1
- package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.d.ts +6 -0
- package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.js +73 -0
- package/dist/src/databases/sqlite/migrations/1646992772331-CreateUserManagement.js.map +1 -0
- package/dist/src/databases/sqlite/migrations/index.d.ts +3 -2
- package/dist/src/databases/sqlite/migrations/index.js +4 -1
- package/dist/src/databases/sqlite/migrations/index.js.map +1 -1
- package/dist/src/databases/utils/customValidators.d.ts +1 -0
- package/dist/src/databases/utils/customValidators.js +22 -0
- package/dist/src/databases/utils/customValidators.js.map +1 -0
- package/dist/src/databases/utils/migrationHelpers.d.ts +3 -0
- package/dist/src/databases/utils/migrationHelpers.js +60 -0
- package/dist/src/databases/utils/migrationHelpers.js.map +1 -0
- package/dist/src/databases/utils/transformers.d.ts +9 -0
- package/dist/src/databases/utils/transformers.js +16 -0
- package/dist/src/databases/utils/transformers.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +4 -1
- package/dist/src/telemetry/index.js +4 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/test/{CredentialsHelper.test.d.ts → integration/auth.endpoints.test.d.ts} +0 -0
- package/dist/test/integration/auth.endpoints.test.js +99 -0
- package/dist/test/integration/auth.endpoints.test.js.map +1 -0
- package/dist/test/integration/auth.middleware.test.d.ts +1 -0
- package/dist/test/integration/auth.middleware.test.js +46 -0
- package/dist/test/integration/auth.middleware.test.js.map +1 -0
- package/dist/test/integration/credentials.api.test.d.ts +1 -0
- package/dist/test/integration/credentials.api.test.js +401 -0
- package/dist/test/integration/credentials.api.test.js.map +1 -0
- package/dist/test/integration/me.endpoints.test.d.ts +1 -0
- package/dist/test/integration/me.endpoints.test.js +383 -0
- package/dist/test/integration/me.endpoints.test.js.map +1 -0
- package/dist/test/integration/owner.endpoints.test.d.ts +1 -0
- package/dist/test/integration/owner.endpoints.test.js +125 -0
- package/dist/test/integration/owner.endpoints.test.js.map +1 -0
- package/dist/test/integration/passwordReset.endpoints.test.d.ts +1 -0
- package/dist/test/integration/passwordReset.endpoints.test.js +221 -0
- package/dist/test/integration/passwordReset.endpoints.test.js.map +1 -0
- package/dist/test/integration/shared/constants.d.ts +16 -0
- package/dist/test/integration/shared/constants.js +41 -0
- package/dist/test/integration/shared/constants.js.map +1 -0
- package/dist/test/integration/shared/random.d.ts +5 -0
- package/dist/test/integration/shared/random.js +34 -0
- package/dist/test/integration/shared/random.js.map +1 -0
- package/dist/test/integration/shared/testDb.d.ts +47 -0
- package/dist/test/integration/shared/testDb.js +280 -0
- package/dist/test/integration/shared/testDb.js.map +1 -0
- package/dist/test/integration/shared/utils.d.ts +20 -0
- package/dist/test/integration/shared/utils.js +132 -0
- package/dist/test/integration/shared/utils.js.map +1 -0
- package/dist/test/integration/users.endpoints.test.d.ts +1 -0
- package/dist/test/integration/users.endpoints.test.js +420 -0
- package/dist/test/integration/users.endpoints.test.js.map +1 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/test/setup.js +27 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/test/teardown.d.ts +2 -0
- package/dist/test/teardown.js +33 -0
- package/dist/test/teardown.js.map +1 -0
- package/dist/test/unit/CredentialsHelper.test.d.ts +1 -0
- package/dist/test/{CredentialsHelper.test.js → unit/CredentialsHelper.test.js} +1 -1
- package/dist/test/unit/CredentialsHelper.test.js.map +1 -0
- package/dist/test/{Helpers.d.ts → unit/Helpers.d.ts} +0 -0
- package/dist/test/{Helpers.js → unit/Helpers.js} +0 -0
- package/dist/test/unit/Helpers.js.map +1 -0
- package/oclif.manifest.json +1 -1
- package/package.json +30 -29
- package/dist/src/PersonalizationSurvey.d.ts +0 -3
- package/dist/src/PersonalizationSurvey.js +0 -48
- package/dist/src/PersonalizationSurvey.js.map +0 -1
- package/dist/test/CredentialsHelper.test.js.map +0 -1
- package/dist/test/Helpers.js.map +0 -1
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.getMySqlOptions = exports.getBootstrapMySqlOptions = exports.getPostgresOptions = exports.getBootstrapPostgresOptions = exports.getSqliteOptions = exports.getAllRoles = exports.getCredentialOwnerRole = exports.getWorkflowOwnerRole = exports.getGlobalMemberRole = exports.getGlobalOwnerRole = exports.createMemberShell = exports.createOwnerShell = exports.createUser = exports.saveCredential = exports.truncate = exports.terminate = exports.init = void 0;
|
|
15
|
+
const typeorm_1 = require("typeorm");
|
|
16
|
+
const n8n_core_1 = require("n8n-core");
|
|
17
|
+
const config = require("../../../config");
|
|
18
|
+
const constants_1 = require("./constants");
|
|
19
|
+
const src_1 = require("../../../src");
|
|
20
|
+
const random_1 = require("./random");
|
|
21
|
+
const CredentialsEntity_1 = require("../../../src/databases/entities/CredentialsEntity");
|
|
22
|
+
const constants_2 = require("../../../src/constants");
|
|
23
|
+
const entities_1 = require("../../../src/databases/entities");
|
|
24
|
+
const migrations_1 = require("../../../src/databases/mysqldb/migrations");
|
|
25
|
+
const migrations_2 = require("../../../src/databases/postgresdb/migrations");
|
|
26
|
+
const migrations_3 = require("../../../src/databases/sqlite/migrations");
|
|
27
|
+
async function init() {
|
|
28
|
+
const dbType = config.get('database.type');
|
|
29
|
+
if (dbType === 'sqlite') {
|
|
30
|
+
const testDbName = `n8n_test_sqlite_${random_1.randomString(6, 10)}_${Date.now()}`;
|
|
31
|
+
await src_1.Db.init(exports.getSqliteOptions({ name: testDbName }));
|
|
32
|
+
await typeorm_1.getConnection(testDbName).runMigrations({ transaction: 'none' });
|
|
33
|
+
return { testDbName };
|
|
34
|
+
}
|
|
35
|
+
if (dbType === 'postgresdb') {
|
|
36
|
+
let bootstrapPostgres;
|
|
37
|
+
const bootstrapPostgresOptions = exports.getBootstrapPostgresOptions();
|
|
38
|
+
try {
|
|
39
|
+
bootstrapPostgres = await typeorm_1.createConnection(bootstrapPostgresOptions);
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const { username, password, host, port, schema } = bootstrapPostgresOptions;
|
|
43
|
+
console.error(`ERROR: Failed to connect to Postgres default DB 'postgres'.\nPlease review your Postgres connection options:\n\thost: "${host}"\n\tusername: "${username}"\n\tpassword: "${password}"\n\tport: "${port}"\n\tschema: "${schema}"\nFix by setting correct values via environment variables:\n\texport DB_POSTGRESDB_HOST=value\n\texport DB_POSTGRESDB_USER=value\n\texport DB_POSTGRESDB_PASSWORD=value\n\texport DB_POSTGRESDB_PORT=value\n\texport DB_POSTGRESDB_SCHEMA=value`);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const testDbName = `pg_${random_1.randomString(6, 10)}_${Date.now()}_n8n_test`;
|
|
47
|
+
await bootstrapPostgres.query(`CREATE DATABASE ${testDbName};`);
|
|
48
|
+
await src_1.Db.init(exports.getPostgresOptions({ name: testDbName }));
|
|
49
|
+
return { testDbName };
|
|
50
|
+
}
|
|
51
|
+
if (dbType === 'mysqldb') {
|
|
52
|
+
const bootstrapMysql = await typeorm_1.createConnection(exports.getBootstrapMySqlOptions());
|
|
53
|
+
const testDbName = `mysql_${random_1.randomString(6, 10)}_${Date.now()}_n8n_test`;
|
|
54
|
+
await bootstrapMysql.query(`CREATE DATABASE ${testDbName};`);
|
|
55
|
+
await src_1.Db.init(exports.getMySqlOptions({ name: testDbName }));
|
|
56
|
+
return { testDbName };
|
|
57
|
+
}
|
|
58
|
+
throw new Error(`Unrecognized DB type: ${dbType}`);
|
|
59
|
+
}
|
|
60
|
+
exports.init = init;
|
|
61
|
+
async function terminate(testDbName) {
|
|
62
|
+
const dbType = config.get('database.type');
|
|
63
|
+
if (dbType === 'sqlite') {
|
|
64
|
+
await typeorm_1.getConnection(testDbName).close();
|
|
65
|
+
}
|
|
66
|
+
if (dbType === 'postgresdb') {
|
|
67
|
+
await typeorm_1.getConnection(testDbName).close();
|
|
68
|
+
const bootstrapPostgres = typeorm_1.getConnection(constants_1.BOOTSTRAP_POSTGRES_CONNECTION_NAME);
|
|
69
|
+
await bootstrapPostgres.query(`DROP DATABASE ${testDbName}`);
|
|
70
|
+
await bootstrapPostgres.close();
|
|
71
|
+
}
|
|
72
|
+
if (dbType === 'mysqldb') {
|
|
73
|
+
await typeorm_1.getConnection(testDbName).close();
|
|
74
|
+
const bootstrapMySql = typeorm_1.getConnection(constants_1.BOOTSTRAP_MYSQL_CONNECTION_NAME);
|
|
75
|
+
await bootstrapMySql.query(`DROP DATABASE ${testDbName}`);
|
|
76
|
+
await bootstrapMySql.close();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.terminate = terminate;
|
|
80
|
+
async function truncate(entities, testDbName) {
|
|
81
|
+
const dbType = config.get('database.type');
|
|
82
|
+
if (dbType === 'sqlite') {
|
|
83
|
+
const testDb = typeorm_1.getConnection(testDbName);
|
|
84
|
+
await testDb.query('PRAGMA foreign_keys=OFF');
|
|
85
|
+
await Promise.all(entities.map((entity) => src_1.Db.collections[entity].clear()));
|
|
86
|
+
return testDb.query('PRAGMA foreign_keys=ON');
|
|
87
|
+
}
|
|
88
|
+
const map = {
|
|
89
|
+
Credentials: 'credentials_entity',
|
|
90
|
+
Workflow: 'workflow_entity',
|
|
91
|
+
Execution: 'execution_entity',
|
|
92
|
+
Tag: 'tag_entity',
|
|
93
|
+
Webhook: 'webhook_entity',
|
|
94
|
+
Role: 'role',
|
|
95
|
+
User: 'user',
|
|
96
|
+
SharedCredentials: 'shared_credentials',
|
|
97
|
+
SharedWorkflow: 'shared_workflow',
|
|
98
|
+
Settings: 'settings',
|
|
99
|
+
};
|
|
100
|
+
if (dbType === 'postgresdb') {
|
|
101
|
+
return Promise.all(entities.map((entity) => typeorm_1.getConnection(testDbName).query(`TRUNCATE TABLE "${map[entity]}" RESTART IDENTITY CASCADE;`)));
|
|
102
|
+
}
|
|
103
|
+
if (dbType === 'mysqldb') {
|
|
104
|
+
await Promise.all(entities.map(async (entity) => {
|
|
105
|
+
await src_1.Db.collections[entity].delete({});
|
|
106
|
+
await typeorm_1.getConnection(testDbName).query(`ALTER TABLE ${map[entity]} AUTO_INCREMENT = 1;`);
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.truncate = truncate;
|
|
111
|
+
async function saveCredential(credentialPayload, { user, role }) {
|
|
112
|
+
const newCredential = new CredentialsEntity_1.CredentialsEntity();
|
|
113
|
+
Object.assign(newCredential, credentialPayload);
|
|
114
|
+
const encryptedData = await encryptCredentialData(newCredential);
|
|
115
|
+
Object.assign(newCredential, encryptedData);
|
|
116
|
+
const savedCredential = await src_1.Db.collections.Credentials.save(newCredential);
|
|
117
|
+
savedCredential.data = newCredential.data;
|
|
118
|
+
await src_1.Db.collections.SharedCredentials.save({
|
|
119
|
+
user,
|
|
120
|
+
credentials: savedCredential,
|
|
121
|
+
role,
|
|
122
|
+
});
|
|
123
|
+
return savedCredential;
|
|
124
|
+
}
|
|
125
|
+
exports.saveCredential = saveCredential;
|
|
126
|
+
async function createUser(attributes = {}) {
|
|
127
|
+
const { email, password, firstName, lastName, globalRole } = attributes, rest = __rest(attributes, ["email", "password", "firstName", "lastName", "globalRole"]);
|
|
128
|
+
const user = Object.assign({ email: email !== null && email !== void 0 ? email : random_1.randomEmail(), password: password !== null && password !== void 0 ? password : random_1.randomValidPassword(), firstName: firstName !== null && firstName !== void 0 ? firstName : random_1.randomName(), lastName: lastName !== null && lastName !== void 0 ? lastName : random_1.randomName(), globalRole: globalRole !== null && globalRole !== void 0 ? globalRole : (await getGlobalMemberRole()) }, rest);
|
|
129
|
+
return src_1.Db.collections.User.save(user);
|
|
130
|
+
}
|
|
131
|
+
exports.createUser = createUser;
|
|
132
|
+
async function createOwnerShell() {
|
|
133
|
+
const globalRole = await getGlobalOwnerRole();
|
|
134
|
+
return src_1.Db.collections.User.save({ globalRole });
|
|
135
|
+
}
|
|
136
|
+
exports.createOwnerShell = createOwnerShell;
|
|
137
|
+
async function createMemberShell() {
|
|
138
|
+
const globalRole = await getGlobalMemberRole();
|
|
139
|
+
return src_1.Db.collections.User.save({ globalRole });
|
|
140
|
+
}
|
|
141
|
+
exports.createMemberShell = createMemberShell;
|
|
142
|
+
async function getGlobalOwnerRole() {
|
|
143
|
+
return await src_1.Db.collections.Role.findOneOrFail({
|
|
144
|
+
name: 'owner',
|
|
145
|
+
scope: 'global',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
exports.getGlobalOwnerRole = getGlobalOwnerRole;
|
|
149
|
+
async function getGlobalMemberRole() {
|
|
150
|
+
return await src_1.Db.collections.Role.findOneOrFail({
|
|
151
|
+
name: 'member',
|
|
152
|
+
scope: 'global',
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
exports.getGlobalMemberRole = getGlobalMemberRole;
|
|
156
|
+
async function getWorkflowOwnerRole() {
|
|
157
|
+
return await src_1.Db.collections.Role.findOneOrFail({
|
|
158
|
+
name: 'owner',
|
|
159
|
+
scope: 'workflow',
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
exports.getWorkflowOwnerRole = getWorkflowOwnerRole;
|
|
163
|
+
async function getCredentialOwnerRole() {
|
|
164
|
+
return await src_1.Db.collections.Role.findOneOrFail({
|
|
165
|
+
name: 'owner',
|
|
166
|
+
scope: 'credential',
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
exports.getCredentialOwnerRole = getCredentialOwnerRole;
|
|
170
|
+
function getAllRoles() {
|
|
171
|
+
return Promise.all([
|
|
172
|
+
getGlobalOwnerRole(),
|
|
173
|
+
getGlobalMemberRole(),
|
|
174
|
+
getWorkflowOwnerRole(),
|
|
175
|
+
getCredentialOwnerRole(),
|
|
176
|
+
]);
|
|
177
|
+
}
|
|
178
|
+
exports.getAllRoles = getAllRoles;
|
|
179
|
+
const getSqliteOptions = ({ name }) => {
|
|
180
|
+
return {
|
|
181
|
+
name,
|
|
182
|
+
type: 'sqlite',
|
|
183
|
+
database: ':memory:',
|
|
184
|
+
entityPrefix: '',
|
|
185
|
+
dropSchema: true,
|
|
186
|
+
migrations: migrations_3.sqliteMigrations,
|
|
187
|
+
migrationsTableName: 'migrations',
|
|
188
|
+
migrationsRun: false,
|
|
189
|
+
};
|
|
190
|
+
};
|
|
191
|
+
exports.getSqliteOptions = getSqliteOptions;
|
|
192
|
+
const getBootstrapPostgresOptions = () => {
|
|
193
|
+
const username = config.get('database.postgresdb.user');
|
|
194
|
+
const password = config.get('database.postgresdb.password');
|
|
195
|
+
const host = config.get('database.postgresdb.host');
|
|
196
|
+
const port = config.get('database.postgresdb.port');
|
|
197
|
+
const schema = config.get('database.postgresdb.schema');
|
|
198
|
+
return {
|
|
199
|
+
name: constants_1.BOOTSTRAP_POSTGRES_CONNECTION_NAME,
|
|
200
|
+
type: 'postgres',
|
|
201
|
+
database: 'postgres',
|
|
202
|
+
host,
|
|
203
|
+
port,
|
|
204
|
+
username,
|
|
205
|
+
password,
|
|
206
|
+
schema,
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
exports.getBootstrapPostgresOptions = getBootstrapPostgresOptions;
|
|
210
|
+
const getPostgresOptions = ({ name }) => {
|
|
211
|
+
const username = config.get('database.postgresdb.user');
|
|
212
|
+
const password = config.get('database.postgresdb.password');
|
|
213
|
+
const host = config.get('database.postgresdb.host');
|
|
214
|
+
const port = config.get('database.postgresdb.port');
|
|
215
|
+
const schema = config.get('database.postgresdb.schema');
|
|
216
|
+
return {
|
|
217
|
+
name,
|
|
218
|
+
type: 'postgres',
|
|
219
|
+
database: name,
|
|
220
|
+
host,
|
|
221
|
+
port,
|
|
222
|
+
username,
|
|
223
|
+
password,
|
|
224
|
+
entityPrefix: '',
|
|
225
|
+
schema,
|
|
226
|
+
dropSchema: true,
|
|
227
|
+
migrations: migrations_2.postgresMigrations,
|
|
228
|
+
migrationsRun: true,
|
|
229
|
+
migrationsTableName: 'migrations',
|
|
230
|
+
entities: Object.values(entities_1.entities),
|
|
231
|
+
synchronize: false,
|
|
232
|
+
logging: false,
|
|
233
|
+
};
|
|
234
|
+
};
|
|
235
|
+
exports.getPostgresOptions = getPostgresOptions;
|
|
236
|
+
const getBootstrapMySqlOptions = () => {
|
|
237
|
+
const username = config.get('database.mysqldb.user');
|
|
238
|
+
const password = config.get('database.mysqldb.password');
|
|
239
|
+
const host = config.get('database.mysqldb.host');
|
|
240
|
+
const port = config.get('database.mysqldb.port');
|
|
241
|
+
return {
|
|
242
|
+
name: constants_1.BOOTSTRAP_MYSQL_CONNECTION_NAME,
|
|
243
|
+
database: constants_1.BOOTSTRAP_MYSQL_CONNECTION_NAME,
|
|
244
|
+
type: 'mysql',
|
|
245
|
+
host,
|
|
246
|
+
port,
|
|
247
|
+
username,
|
|
248
|
+
password,
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
exports.getBootstrapMySqlOptions = getBootstrapMySqlOptions;
|
|
252
|
+
const getMySqlOptions = ({ name }) => {
|
|
253
|
+
const username = config.get('database.mysqldb.user');
|
|
254
|
+
const password = config.get('database.mysqldb.password');
|
|
255
|
+
const host = config.get('database.mysqldb.host');
|
|
256
|
+
const port = config.get('database.mysqldb.port');
|
|
257
|
+
return {
|
|
258
|
+
name,
|
|
259
|
+
database: name,
|
|
260
|
+
type: 'mysql',
|
|
261
|
+
host,
|
|
262
|
+
port,
|
|
263
|
+
username,
|
|
264
|
+
password,
|
|
265
|
+
migrations: migrations_1.mysqlMigrations,
|
|
266
|
+
migrationsTableName: 'migrations',
|
|
267
|
+
migrationsRun: true,
|
|
268
|
+
};
|
|
269
|
+
};
|
|
270
|
+
exports.getMySqlOptions = getMySqlOptions;
|
|
271
|
+
async function encryptCredentialData(credential) {
|
|
272
|
+
const encryptionKey = await n8n_core_1.UserSettings.getEncryptionKey();
|
|
273
|
+
if (!encryptionKey) {
|
|
274
|
+
throw new Error(constants_2.RESPONSE_ERROR_MESSAGES.NO_ENCRYPTION_KEY);
|
|
275
|
+
}
|
|
276
|
+
const coreCredential = new n8n_core_1.Credentials({ id: null, name: credential.name }, credential.type, credential.nodesAccess);
|
|
277
|
+
coreCredential.setData(credential.data, encryptionKey);
|
|
278
|
+
return coreCredential.getDataToSave();
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=testDb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testDb.js","sourceRoot":"","sources":["../../../../test/integration/shared/testDb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import express = require('express');
|
|
2
|
+
import * as superagent from 'superagent';
|
|
3
|
+
import * as request from 'supertest';
|
|
4
|
+
import type { User } from '../../../src/databases/entities/User';
|
|
5
|
+
import type { EndpointGroup, SmtpTestAccount } from './types';
|
|
6
|
+
export declare function initTestServer({ applyAuth, endpointGroups, }: {
|
|
7
|
+
applyAuth: boolean;
|
|
8
|
+
endpointGroups?: EndpointGroup[];
|
|
9
|
+
}): import("express-serve-static-core").Express;
|
|
10
|
+
export declare function initTestTelemetry(): void;
|
|
11
|
+
export declare function initTestLogger(): void;
|
|
12
|
+
export declare function initConfigFile(): void;
|
|
13
|
+
export declare function createAgent(app: express.Application, options?: {
|
|
14
|
+
auth: true;
|
|
15
|
+
user: User;
|
|
16
|
+
}): request.SuperAgentTest;
|
|
17
|
+
export declare function prefix(pathSegment: string): (request: superagent.SuperAgentRequest) => superagent.SuperAgentRequest;
|
|
18
|
+
export declare function getAuthToken(response: request.Response, authCookieName?: string): string | undefined;
|
|
19
|
+
export declare function isInstanceOwnerSetUp(): Promise<boolean>;
|
|
20
|
+
export declare const getSmtpTestAccount: () => Promise<SmtpTestAccount>;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSmtpTestAccount = exports.isInstanceOwnerSetUp = exports.getAuthToken = exports.prefix = exports.createAgent = exports.initConfigFile = exports.initTestLogger = exports.initTestTelemetry = exports.initTestServer = void 0;
|
|
4
|
+
const crypto_1 = require("crypto");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const express = require("express");
|
|
7
|
+
const request = require("supertest");
|
|
8
|
+
const url_1 = require("url");
|
|
9
|
+
const bodyParser = require("body-parser");
|
|
10
|
+
const util = require("util");
|
|
11
|
+
const nodemailer_1 = require("nodemailer");
|
|
12
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
13
|
+
const n8n_core_1 = require("n8n-core");
|
|
14
|
+
const config = require("../../../config");
|
|
15
|
+
const constants_1 = require("./constants");
|
|
16
|
+
const constants_2 = require("../../../src/constants");
|
|
17
|
+
const routes_1 = require("../../../src/UserManagement/routes");
|
|
18
|
+
const src_1 = require("../../../src");
|
|
19
|
+
const me_1 = require("../../../src/UserManagement/routes/me");
|
|
20
|
+
const users_1 = require("../../../src/UserManagement/routes/users");
|
|
21
|
+
const auth_1 = require("../../../src/UserManagement/routes/auth");
|
|
22
|
+
const owner_1 = require("../../../src/UserManagement/routes/owner");
|
|
23
|
+
const passwordReset_1 = require("../../../src/UserManagement/routes/passwordReset");
|
|
24
|
+
const jwt_1 = require("../../../src/UserManagement/auth/jwt");
|
|
25
|
+
const Logger_1 = require("../../../src/Logger");
|
|
26
|
+
const credentials_api_1 = require("../../../src/api/credentials.api");
|
|
27
|
+
const telemetry_1 = require("../../../src/telemetry");
|
|
28
|
+
function initTestServer({ applyAuth, endpointGroups, }) {
|
|
29
|
+
const testServer = Object.assign({ app: express(), restEndpoint: constants_1.REST_PATH_SEGMENT }, ((endpointGroups === null || endpointGroups === void 0 ? void 0 : endpointGroups.includes('credentials')) ? { externalHooks: src_1.ExternalHooks() } : {}));
|
|
30
|
+
testServer.app.use(bodyParser.json());
|
|
31
|
+
testServer.app.use(bodyParser.urlencoded({ extended: true }));
|
|
32
|
+
config.set('userManagement.jwtSecret', 'My JWT secret');
|
|
33
|
+
config.set('userManagement.isInstanceOwnerSetUp', false);
|
|
34
|
+
if (applyAuth) {
|
|
35
|
+
routes_1.addRoutes.apply(testServer, [constants_1.AUTHLESS_ENDPOINTS, constants_1.REST_PATH_SEGMENT]);
|
|
36
|
+
}
|
|
37
|
+
if (!endpointGroups)
|
|
38
|
+
return testServer.app;
|
|
39
|
+
const [routerEndpoints, functionEndpoints] = classifyEndpointGroups(endpointGroups);
|
|
40
|
+
if (routerEndpoints.length) {
|
|
41
|
+
const map = {
|
|
42
|
+
credentials: credentials_api_1.credentialsController,
|
|
43
|
+
};
|
|
44
|
+
for (const group of routerEndpoints) {
|
|
45
|
+
testServer.app.use(`/${testServer.restEndpoint}/${group}`, map[group]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (functionEndpoints.length) {
|
|
49
|
+
const map = {
|
|
50
|
+
me: me_1.meNamespace,
|
|
51
|
+
users: users_1.usersNamespace,
|
|
52
|
+
auth: auth_1.authenticationMethods,
|
|
53
|
+
owner: owner_1.ownerNamespace,
|
|
54
|
+
passwordReset: passwordReset_1.passwordResetNamespace,
|
|
55
|
+
};
|
|
56
|
+
for (const group of functionEndpoints) {
|
|
57
|
+
map[group].apply(testServer);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return testServer.app;
|
|
61
|
+
}
|
|
62
|
+
exports.initTestServer = initTestServer;
|
|
63
|
+
function initTestTelemetry() {
|
|
64
|
+
const mockNodeTypes = { nodeTypes: {} };
|
|
65
|
+
void src_1.InternalHooksManager.init('test-instance-id', 'test-version', mockNodeTypes);
|
|
66
|
+
jest.spyOn(telemetry_1.Telemetry.prototype, 'track').mockResolvedValue();
|
|
67
|
+
}
|
|
68
|
+
exports.initTestTelemetry = initTestTelemetry;
|
|
69
|
+
const classifyEndpointGroups = (endpointGroups) => {
|
|
70
|
+
const routerEndpoints = [];
|
|
71
|
+
const functionEndpoints = [];
|
|
72
|
+
endpointGroups.forEach((group) => (group === 'credentials' ? routerEndpoints : functionEndpoints).push(group));
|
|
73
|
+
return [routerEndpoints, functionEndpoints];
|
|
74
|
+
};
|
|
75
|
+
function initTestLogger() {
|
|
76
|
+
config.set('logs.output', 'file');
|
|
77
|
+
n8n_workflow_1.LoggerProxy.init(Logger_1.getLogger());
|
|
78
|
+
}
|
|
79
|
+
exports.initTestLogger = initTestLogger;
|
|
80
|
+
function initConfigFile() {
|
|
81
|
+
const settingsPath = n8n_core_1.UserSettings.getUserSettingsPath();
|
|
82
|
+
if (!fs_1.existsSync(settingsPath)) {
|
|
83
|
+
const userSettings = { encryptionKey: crypto_1.randomBytes(24).toString('base64') };
|
|
84
|
+
n8n_core_1.UserSettings.writeUserSettings(userSettings, settingsPath);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.initConfigFile = initConfigFile;
|
|
88
|
+
function createAgent(app, options) {
|
|
89
|
+
const agent = request.agent(app);
|
|
90
|
+
agent.use(prefix(constants_1.REST_PATH_SEGMENT));
|
|
91
|
+
if ((options === null || options === void 0 ? void 0 : options.auth) && (options === null || options === void 0 ? void 0 : options.user)) {
|
|
92
|
+
const { token } = jwt_1.issueJWT(options.user);
|
|
93
|
+
agent.jar.setCookie(`${constants_2.AUTH_COOKIE_NAME}=${token}`);
|
|
94
|
+
}
|
|
95
|
+
return agent;
|
|
96
|
+
}
|
|
97
|
+
exports.createAgent = createAgent;
|
|
98
|
+
function prefix(pathSegment) {
|
|
99
|
+
return function (request) {
|
|
100
|
+
const url = new url_1.URL(request.url);
|
|
101
|
+
if (url.pathname[0] !== '/') {
|
|
102
|
+
throw new Error('Pathname must start with a forward slash');
|
|
103
|
+
}
|
|
104
|
+
url.pathname = pathSegment + url.pathname;
|
|
105
|
+
request.url = url.toString();
|
|
106
|
+
return request;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
exports.prefix = prefix;
|
|
110
|
+
function getAuthToken(response, authCookieName = constants_2.AUTH_COOKIE_NAME) {
|
|
111
|
+
const cookies = response.headers['set-cookie'];
|
|
112
|
+
if (!cookies) {
|
|
113
|
+
throw new Error("No 'set-cookie' header found in response");
|
|
114
|
+
}
|
|
115
|
+
const authCookie = cookies.find((c) => c.startsWith(`${authCookieName}=`));
|
|
116
|
+
if (!authCookie)
|
|
117
|
+
return undefined;
|
|
118
|
+
const match = authCookie.match(new RegExp(`(^| )${authCookieName}=(?<token>[^;]+)`));
|
|
119
|
+
if (!match || !match.groups)
|
|
120
|
+
return undefined;
|
|
121
|
+
return match.groups.token;
|
|
122
|
+
}
|
|
123
|
+
exports.getAuthToken = getAuthToken;
|
|
124
|
+
async function isInstanceOwnerSetUp() {
|
|
125
|
+
const { value } = await src_1.Db.collections.Settings.findOneOrFail({
|
|
126
|
+
key: 'userManagement.isInstanceOwnerSetUp',
|
|
127
|
+
});
|
|
128
|
+
return Boolean(value);
|
|
129
|
+
}
|
|
130
|
+
exports.isInstanceOwnerSetUp = isInstanceOwnerSetUp;
|
|
131
|
+
exports.getSmtpTestAccount = util.promisify(nodemailer_1.createTestAccount);
|
|
132
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../test/integration/shared/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|