n8n 0.178.2 → 0.181.0

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 (170) hide show
  1. package/dist/commands/export/workflow.js +4 -1
  2. package/dist/commands/export/workflow.js.map +1 -1
  3. package/dist/commands/import/workflow.js +22 -5
  4. package/dist/commands/import/workflow.js.map +1 -1
  5. package/dist/commands/worker.js +3 -2
  6. package/dist/commands/worker.js.map +1 -1
  7. package/dist/config/index.d.ts +4 -0
  8. package/dist/config/schema.d.ts +14 -0
  9. package/dist/config/schema.js +16 -2
  10. package/dist/config/schema.js.map +1 -1
  11. package/dist/src/ActiveWorkflowRunner.d.ts +2 -1
  12. package/dist/src/ActiveWorkflowRunner.js +66 -6
  13. package/dist/src/ActiveWorkflowRunner.js.map +1 -1
  14. package/dist/src/CredentialsHelper.d.ts +2 -0
  15. package/dist/src/CredentialsHelper.js +13 -5
  16. package/dist/src/CredentialsHelper.js.map +1 -1
  17. package/dist/src/Interfaces.d.ts +41 -6
  18. package/dist/src/InternalHooks.d.ts +46 -4
  19. package/dist/src/InternalHooks.js +36 -6
  20. package/dist/src/InternalHooks.js.map +1 -1
  21. package/dist/src/PublicApi/index.d.ts +5 -0
  22. package/dist/src/PublicApi/index.js +122 -0
  23. package/dist/src/PublicApi/index.js.map +1 -0
  24. package/dist/src/PublicApi/swaggerTheme.css +26 -0
  25. package/dist/src/PublicApi/v1/handlers/credentials/credentials.handler.d.ts +7 -0
  26. package/dist/src/PublicApi/v1/handlers/credentials/credentials.handler.js +72 -0
  27. package/dist/src/PublicApi/v1/handlers/credentials/credentials.handler.js.map +1 -0
  28. package/dist/src/PublicApi/v1/handlers/credentials/credentials.middleware.d.ts +3 -0
  29. package/dist/src/PublicApi/v1/handlers/credentials/credentials.middleware.js +34 -0
  30. package/dist/src/PublicApi/v1/handlers/credentials/credentials.middleware.js.map +1 -0
  31. package/dist/src/PublicApi/v1/handlers/credentials/credentials.service.d.ts +14 -0
  32. package/dist/src/PublicApi/v1/handlers/credentials/credentials.service.js +180 -0
  33. package/dist/src/PublicApi/v1/handlers/credentials/credentials.service.js.map +1 -0
  34. package/dist/src/PublicApi/v1/handlers/executions/executions.handler.d.ts +8 -0
  35. package/dist/src/PublicApi/v1/handlers/executions/executions.handler.js +97 -0
  36. package/dist/src/PublicApi/v1/handlers/executions/executions.handler.js.map +1 -0
  37. package/dist/src/PublicApi/v1/handlers/executions/executions.service.d.ts +19 -0
  38. package/dist/src/PublicApi/v1/handlers/executions/executions.service.js +80 -0
  39. package/dist/src/PublicApi/v1/handlers/executions/executions.service.js.map +1 -0
  40. package/dist/src/PublicApi/v1/handlers/users/users.service.d.ts +4 -0
  41. package/dist/src/PublicApi/v1/handlers/users/users.service.js +16 -0
  42. package/dist/src/PublicApi/v1/handlers/users/users.service.js.map +1 -0
  43. package/dist/src/PublicApi/v1/handlers/workflows/workflows.handler.d.ts +12 -0
  44. package/dist/src/PublicApi/v1/handlers/workflows/workflows.handler.js +199 -0
  45. package/dist/src/PublicApi/v1/handlers/workflows/workflows.handler.js.map +1 -0
  46. package/dist/src/PublicApi/v1/handlers/workflows/workflows.service.d.ts +24 -0
  47. package/dist/src/PublicApi/v1/handlers/workflows/workflows.service.js +113 -0
  48. package/dist/src/PublicApi/v1/handlers/workflows/workflows.service.js.map +1 -0
  49. package/dist/src/PublicApi/v1/openapi.yml +703 -0
  50. package/dist/src/PublicApi/v1/shared/middlewares/global.middleware.d.ts +5 -0
  51. package/dist/src/PublicApi/v1/shared/middlewares/global.middleware.js +38 -0
  52. package/dist/src/PublicApi/v1/shared/middlewares/global.middleware.js.map +1 -0
  53. package/dist/src/PublicApi/v1/shared/services/pagination.service.d.ts +3 -0
  54. package/dist/src/PublicApi/v1/shared/services/pagination.service.js +33 -0
  55. package/dist/src/PublicApi/v1/shared/services/pagination.service.js.map +1 -0
  56. package/dist/src/ResponseHelper.d.ts +1 -1
  57. package/dist/src/ResponseHelper.js +2 -2
  58. package/dist/src/ResponseHelper.js.map +1 -1
  59. package/dist/src/Server.js +29 -13
  60. package/dist/src/Server.js.map +1 -1
  61. package/dist/src/TagHelpers.d.ts +3 -1
  62. package/dist/src/TagHelpers.js +47 -1
  63. package/dist/src/TagHelpers.js.map +1 -1
  64. package/dist/src/UserManagement/UserManagementHelper.js +1 -1
  65. package/dist/src/UserManagement/UserManagementHelper.js.map +1 -1
  66. package/dist/src/UserManagement/auth/jwt.d.ts +1 -1
  67. package/dist/src/UserManagement/routes/me.js +27 -0
  68. package/dist/src/UserManagement/routes/me.js.map +1 -1
  69. package/dist/src/UserManagement/routes/passwordReset.js +2 -0
  70. package/dist/src/UserManagement/routes/passwordReset.js.map +1 -1
  71. package/dist/src/UserManagement/routes/users.js +7 -1
  72. package/dist/src/UserManagement/routes/users.js.map +1 -1
  73. package/dist/src/WebhookHelpers.js +8 -7
  74. package/dist/src/WebhookHelpers.js.map +1 -1
  75. package/dist/src/WebhookServer.js.map +1 -1
  76. package/dist/src/WorkflowExecuteAdditionalData.d.ts +2 -1
  77. package/dist/src/WorkflowExecuteAdditionalData.js +45 -16
  78. package/dist/src/WorkflowExecuteAdditionalData.js.map +1 -1
  79. package/dist/src/WorkflowHelpers.js +2 -0
  80. package/dist/src/WorkflowHelpers.js.map +1 -1
  81. package/dist/src/WorkflowRunner.js +2 -0
  82. package/dist/src/WorkflowRunner.js.map +1 -1
  83. package/dist/src/api/credentials.api.js +4 -3
  84. package/dist/src/api/credentials.api.js.map +1 -1
  85. package/dist/src/databases/entities/User.d.ts +1 -0
  86. package/dist/src/databases/entities/User.js +7 -2
  87. package/dist/src/databases/entities/User.js.map +1 -1
  88. package/dist/src/databases/mysqldb/migrations/1652905585850-AddAPIKeyColumn.d.ts +6 -0
  89. package/dist/src/databases/mysqldb/migrations/1652905585850-AddAPIKeyColumn.js +28 -0
  90. package/dist/src/databases/mysqldb/migrations/1652905585850-AddAPIKeyColumn.js.map +1 -0
  91. package/dist/src/databases/mysqldb/migrations/index.js +2 -0
  92. package/dist/src/databases/mysqldb/migrations/index.js.map +1 -1
  93. package/dist/src/databases/postgresdb/migrations/1587669153312-InitialMigration.js +2 -0
  94. package/dist/src/databases/postgresdb/migrations/1587669153312-InitialMigration.js.map +1 -1
  95. package/dist/src/databases/postgresdb/migrations/1589476000887-WebhookModel.js +2 -0
  96. package/dist/src/databases/postgresdb/migrations/1589476000887-WebhookModel.js.map +1 -1
  97. package/dist/src/databases/postgresdb/migrations/1594828256133-CreateIndexStoppedAt.js +9 -2
  98. package/dist/src/databases/postgresdb/migrations/1594828256133-CreateIndexStoppedAt.js.map +1 -1
  99. package/dist/src/databases/postgresdb/migrations/1607431743768-MakeStoppedAtNullable.js +1 -0
  100. package/dist/src/databases/postgresdb/migrations/1607431743768-MakeStoppedAtNullable.js.map +1 -1
  101. package/dist/src/databases/postgresdb/migrations/1611144599516-AddWebhookId.js +2 -0
  102. package/dist/src/databases/postgresdb/migrations/1611144599516-AddWebhookId.js.map +1 -1
  103. package/dist/src/databases/postgresdb/migrations/1617270242566-CreateTagEntity.js +2 -0
  104. package/dist/src/databases/postgresdb/migrations/1617270242566-CreateTagEntity.js.map +1 -1
  105. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js +2 -0
  106. package/dist/src/databases/postgresdb/migrations/1620824779533-UniqueWorkflowNames.js.map +1 -1
  107. package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js +2 -0
  108. package/dist/src/databases/postgresdb/migrations/1626176912946-AddwaitTill.js.map +1 -1
  109. package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js +2 -0
  110. package/dist/src/databases/postgresdb/migrations/1630419189837-UpdateWorkflowCredentials.js.map +1 -1
  111. package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js +7 -6
  112. package/dist/src/databases/postgresdb/migrations/1644422880309-AddExecutionEntityIndexes.js.map +1 -1
  113. package/dist/src/databases/postgresdb/migrations/1646834195327-IncreaseTypeVarcharLimit.js +6 -1
  114. package/dist/src/databases/postgresdb/migrations/1646834195327-IncreaseTypeVarcharLimit.js.map +1 -1
  115. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js +5 -3
  116. package/dist/src/databases/postgresdb/migrations/1646992772331-CreateUserManagement.js.map +1 -1
  117. package/dist/src/databases/postgresdb/migrations/1648740597343-LowerCaseUserEmail.js +1 -0
  118. package/dist/src/databases/postgresdb/migrations/1648740597343-LowerCaseUserEmail.js.map +1 -1
  119. package/dist/src/databases/postgresdb/migrations/1652367743993-AddUserSettings.js +2 -0
  120. package/dist/src/databases/postgresdb/migrations/1652367743993-AddUserSettings.js.map +1 -1
  121. package/dist/src/databases/postgresdb/migrations/1652905585850-AddAPIKeyColumn.d.ts +6 -0
  122. package/dist/src/databases/postgresdb/migrations/1652905585850-AddAPIKeyColumn.js +32 -0
  123. package/dist/src/databases/postgresdb/migrations/1652905585850-AddAPIKeyColumn.js.map +1 -0
  124. package/dist/src/databases/postgresdb/migrations/index.js +2 -0
  125. package/dist/src/databases/postgresdb/migrations/index.js.map +1 -1
  126. package/dist/src/databases/sqlite/migrations/1652905585850-AddAPIKeyColumn.d.ts +6 -0
  127. package/dist/src/databases/sqlite/migrations/1652905585850-AddAPIKeyColumn.js +58 -0
  128. package/dist/src/databases/sqlite/migrations/1652905585850-AddAPIKeyColumn.js.map +1 -0
  129. package/dist/src/databases/sqlite/migrations/index.js +2 -0
  130. package/dist/src/databases/sqlite/migrations/index.js.map +1 -1
  131. package/dist/test/integration/auth.api.test.js +11 -6
  132. package/dist/test/integration/auth.api.test.js.map +1 -1
  133. package/dist/test/integration/auth.mw.test.js +1 -1
  134. package/dist/test/integration/auth.mw.test.js.map +1 -1
  135. package/dist/test/integration/commands/reset.cmd.test.d.ts +1 -0
  136. package/dist/test/integration/commands/reset.cmd.test.js +59 -0
  137. package/dist/test/integration/commands/reset.cmd.test.js.map +1 -0
  138. package/dist/test/integration/credentials.api.test.js +1 -1
  139. package/dist/test/integration/credentials.api.test.js.map +1 -1
  140. package/dist/test/integration/me.api.test.js +78 -7
  141. package/dist/test/integration/me.api.test.js.map +1 -1
  142. package/dist/test/integration/owner.api.test.js +3 -2
  143. package/dist/test/integration/owner.api.test.js.map +1 -1
  144. package/dist/test/integration/passwordReset.api.test.js +1 -1
  145. package/dist/test/integration/passwordReset.api.test.js.map +1 -1
  146. package/dist/test/integration/publicApi/credentials.test.d.ts +1 -0
  147. package/dist/test/integration/publicApi/credentials.test.js +321 -0
  148. package/dist/test/integration/publicApi/credentials.test.js.map +1 -0
  149. package/dist/test/integration/publicApi/executions.test.d.ts +1 -0
  150. package/dist/test/integration/publicApi/executions.test.js +289 -0
  151. package/dist/test/integration/publicApi/executions.test.js.map +1 -0
  152. package/dist/test/integration/publicApi/workflows.test.d.ts +1 -0
  153. package/dist/test/integration/publicApi/workflows.test.js +948 -0
  154. package/dist/test/integration/publicApi/workflows.test.js.map +1 -0
  155. package/dist/test/integration/shared/constants.d.ts +1 -0
  156. package/dist/test/integration/shared/constants.js +2 -1
  157. package/dist/test/integration/shared/constants.js.map +1 -1
  158. package/dist/test/integration/shared/random.d.ts +1 -0
  159. package/dist/test/integration/shared/random.js +8 -2
  160. package/dist/test/integration/shared/random.js.map +1 -1
  161. package/dist/test/integration/shared/testDb.d.ts +115 -4
  162. package/dist/test/integration/shared/testDb.js +132 -10
  163. package/dist/test/integration/shared/testDb.js.map +1 -1
  164. package/dist/test/integration/shared/utils.d.ts +206 -3
  165. package/dist/test/integration/shared/utils.js +582 -18
  166. package/dist/test/integration/shared/utils.js.map +1 -1
  167. package/dist/test/integration/users.api.test.js +6 -4
  168. package/dist/test/integration/users.api.test.js.map +1 -1
  169. package/oclif.manifest.json +1 -1
  170. package/package.json +22 -15
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const config = require("../../../config");
27
+ const random_1 = require("../shared/random");
28
+ const utils = __importStar(require("../shared/utils"));
29
+ const testDb = __importStar(require("../shared/testDb"));
30
+ let app;
31
+ let testDbName = '';
32
+ let globalOwnerRole;
33
+ let workflowRunner;
34
+ jest.mock('../../../src/telemetry');
35
+ beforeAll(async () => {
36
+ app = await utils.initTestServer({ endpointGroups: ['publicApi'], applyAuth: false });
37
+ const initResult = await testDb.init();
38
+ testDbName = initResult.testDbName;
39
+ globalOwnerRole = await testDb.getGlobalOwnerRole();
40
+ utils.initTestTelemetry();
41
+ utils.initTestLogger();
42
+ await utils.initBinaryManager();
43
+ await utils.initNodeTypes();
44
+ workflowRunner = await utils.initActiveWorkflowRunner();
45
+ });
46
+ beforeEach(async () => {
47
+ await testDb.truncate(['SharedCredentials', 'SharedWorkflow'], testDbName);
48
+ await testDb.truncate(['User', 'Workflow', 'Credentials', 'Execution', 'Settings'], testDbName);
49
+ config.set('userManagement.disabled', false);
50
+ config.set('userManagement.isInstanceOwnerSetUp', true);
51
+ config.set('userManagement.emails.mode', 'smtp');
52
+ });
53
+ afterEach(async () => {
54
+ await workflowRunner.removeAll();
55
+ });
56
+ afterAll(async () => {
57
+ await testDb.terminate(testDbName);
58
+ });
59
+ test.skip('GET /executions/:executionId should fail due to missing API Key', async () => {
60
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole });
61
+ const authOwnerAgent = utils.createAgent(app, {
62
+ apiPath: 'public',
63
+ auth: true,
64
+ user: owner,
65
+ version: 1,
66
+ });
67
+ const response = await authOwnerAgent.get('/executions/1');
68
+ expect(response.statusCode).toBe(401);
69
+ });
70
+ test.skip('GET /executions/:executionId should fail due to invalid API Key', async () => {
71
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
72
+ owner.apiKey = 'abcXYZ';
73
+ const authOwnerAgent = utils.createAgent(app, {
74
+ apiPath: 'public',
75
+ auth: true,
76
+ user: owner,
77
+ version: 1,
78
+ });
79
+ const response = await authOwnerAgent.get('/executions/1');
80
+ expect(response.statusCode).toBe(401);
81
+ });
82
+ test.skip('GET /executions/:executionId should get an execution', async () => {
83
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
84
+ const authOwnerAgent = utils.createAgent(app, {
85
+ apiPath: 'public',
86
+ auth: true,
87
+ user: owner,
88
+ version: 1,
89
+ });
90
+ const workflow = await testDb.createWorkflow({}, owner);
91
+ const execution = await testDb.createSuccessfullExecution(workflow);
92
+ const response = await authOwnerAgent.get(`/executions/${execution.id}`);
93
+ expect(response.statusCode).toBe(200);
94
+ const { id, finished, mode, retryOf, retrySuccessId, startedAt, stoppedAt, workflowId, waitTill, } = response.body;
95
+ expect(id).toBeDefined();
96
+ expect(finished).toBe(true);
97
+ expect(mode).toEqual(execution.mode);
98
+ expect(retrySuccessId).toBeNull();
99
+ expect(retryOf).toBeNull();
100
+ expect(startedAt).not.toBeNull();
101
+ expect(stoppedAt).not.toBeNull();
102
+ expect(workflowId).toBe(execution.workflowId);
103
+ expect(waitTill).toBeNull();
104
+ });
105
+ test.skip('DELETE /executions/:executionId should fail due to missing API Key', async () => {
106
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole });
107
+ const authOwnerAgent = utils.createAgent(app, {
108
+ apiPath: 'public',
109
+ auth: true,
110
+ user: owner,
111
+ version: 1,
112
+ });
113
+ const response = await authOwnerAgent.delete('/executions/1');
114
+ expect(response.statusCode).toBe(401);
115
+ });
116
+ test.skip('DELETE /executions/:executionId should fail due to invalid API Key', async () => {
117
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
118
+ owner.apiKey = 'abcXYZ';
119
+ const authOwnerAgent = utils.createAgent(app, {
120
+ apiPath: 'public',
121
+ auth: true,
122
+ user: owner,
123
+ version: 1,
124
+ });
125
+ const response = await authOwnerAgent.delete('/executions/1');
126
+ expect(response.statusCode).toBe(401);
127
+ });
128
+ test.skip('DELETE /executions/:executionId should delete an execution', async () => {
129
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
130
+ const authOwnerAgent = utils.createAgent(app, {
131
+ apiPath: 'public',
132
+ auth: true,
133
+ user: owner,
134
+ version: 1,
135
+ });
136
+ const workflow = await testDb.createWorkflow({}, owner);
137
+ const execution = await testDb.createSuccessfullExecution(workflow);
138
+ const response = await authOwnerAgent.delete(`/executions/${execution.id}`);
139
+ expect(response.statusCode).toBe(200);
140
+ const { id, finished, mode, retryOf, retrySuccessId, startedAt, stoppedAt, workflowId, waitTill, } = response.body;
141
+ expect(id).toBeDefined();
142
+ expect(finished).toBe(true);
143
+ expect(mode).toEqual(execution.mode);
144
+ expect(retrySuccessId).toBeNull();
145
+ expect(retryOf).toBeNull();
146
+ expect(startedAt).not.toBeNull();
147
+ expect(stoppedAt).not.toBeNull();
148
+ expect(workflowId).toBe(execution.workflowId);
149
+ expect(waitTill).toBeNull();
150
+ });
151
+ test.skip('GET /executions should fail due to missing API Key', async () => {
152
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole });
153
+ const authOwnerAgent = utils.createAgent(app, {
154
+ apiPath: 'public',
155
+ auth: true,
156
+ user: owner,
157
+ version: 1,
158
+ });
159
+ const response = await authOwnerAgent.get('/executions');
160
+ expect(response.statusCode).toBe(401);
161
+ });
162
+ test.skip('GET /executions should fail due to invalid API Key', async () => {
163
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
164
+ owner.apiKey = 'abcXYZ';
165
+ const authOwnerAgent = utils.createAgent(app, {
166
+ apiPath: 'public',
167
+ auth: true,
168
+ user: owner,
169
+ version: 1,
170
+ });
171
+ const response = await authOwnerAgent.get('/executions');
172
+ expect(response.statusCode).toBe(401);
173
+ });
174
+ test.skip('GET /executions should retrieve all successfull executions', async () => {
175
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
176
+ const authOwnerAgent = utils.createAgent(app, {
177
+ apiPath: 'public',
178
+ auth: true,
179
+ user: owner,
180
+ version: 1,
181
+ });
182
+ const workflow = await testDb.createWorkflow({}, owner);
183
+ const successfullExecution = await testDb.createSuccessfullExecution(workflow);
184
+ await testDb.createErrorExecution(workflow);
185
+ const response = await authOwnerAgent.get(`/executions`).query({
186
+ status: 'success',
187
+ });
188
+ expect(response.statusCode).toBe(200);
189
+ expect(response.body.data.length).toBe(1);
190
+ expect(response.body.nextCursor).toBe(null);
191
+ const { id, finished, mode, retryOf, retrySuccessId, startedAt, stoppedAt, workflowId, waitTill, } = response.body.data[0];
192
+ expect(id).toBeDefined();
193
+ expect(finished).toBe(true);
194
+ expect(mode).toEqual(successfullExecution.mode);
195
+ expect(retrySuccessId).toBeNull();
196
+ expect(retryOf).toBeNull();
197
+ expect(startedAt).not.toBeNull();
198
+ expect(stoppedAt).not.toBeNull();
199
+ expect(workflowId).toBe(successfullExecution.workflowId);
200
+ expect(waitTill).toBeNull();
201
+ });
202
+ test.skip('GET /executions should retrieve all error executions', async () => {
203
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
204
+ const authOwnerAgent = utils.createAgent(app, {
205
+ apiPath: 'public',
206
+ auth: true,
207
+ user: owner,
208
+ version: 1,
209
+ });
210
+ const workflow = await testDb.createWorkflow({}, owner);
211
+ await testDb.createSuccessfullExecution(workflow);
212
+ const errorExecution = await testDb.createErrorExecution(workflow);
213
+ const response = await authOwnerAgent.get(`/executions`).query({
214
+ status: 'error',
215
+ });
216
+ expect(response.statusCode).toBe(200);
217
+ expect(response.body.data.length).toBe(1);
218
+ expect(response.body.nextCursor).toBe(null);
219
+ const { id, finished, mode, retryOf, retrySuccessId, startedAt, stoppedAt, workflowId, waitTill, } = response.body.data[0];
220
+ expect(id).toBeDefined();
221
+ expect(finished).toBe(false);
222
+ expect(mode).toEqual(errorExecution.mode);
223
+ expect(retrySuccessId).toBeNull();
224
+ expect(retryOf).toBeNull();
225
+ expect(startedAt).not.toBeNull();
226
+ expect(stoppedAt).not.toBeNull();
227
+ expect(workflowId).toBe(errorExecution.workflowId);
228
+ expect(waitTill).toBeNull();
229
+ });
230
+ test.skip('GET /executions should return all waiting executions', async () => {
231
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
232
+ const authOwnerAgent = utils.createAgent(app, {
233
+ apiPath: 'public',
234
+ auth: true,
235
+ user: owner,
236
+ version: 1,
237
+ });
238
+ const workflow = await testDb.createWorkflow({}, owner);
239
+ await testDb.createSuccessfullExecution(workflow);
240
+ await testDb.createErrorExecution(workflow);
241
+ const waitingExecution = await testDb.createWaitingExecution(workflow);
242
+ const response = await authOwnerAgent.get(`/executions`).query({
243
+ status: 'waiting',
244
+ });
245
+ expect(response.statusCode).toBe(200);
246
+ expect(response.body.data.length).toBe(1);
247
+ expect(response.body.nextCursor).toBe(null);
248
+ const { id, finished, mode, retryOf, retrySuccessId, startedAt, stoppedAt, workflowId, waitTill, } = response.body.data[0];
249
+ expect(id).toBeDefined();
250
+ expect(finished).toBe(false);
251
+ expect(mode).toEqual(waitingExecution.mode);
252
+ expect(retrySuccessId).toBeNull();
253
+ expect(retryOf).toBeNull();
254
+ expect(startedAt).not.toBeNull();
255
+ expect(stoppedAt).not.toBeNull();
256
+ expect(workflowId).toBe(waitingExecution.workflowId);
257
+ expect(new Date(waitTill).getTime()).toBeGreaterThan(Date.now() - 1000);
258
+ });
259
+ test.skip('GET /executions should retrieve all executions of specific workflow', async () => {
260
+ const owner = await testDb.createUser({ globalRole: globalOwnerRole, apiKey: (0, random_1.randomApiKey)() });
261
+ const authOwnerAgent = utils.createAgent(app, {
262
+ apiPath: 'public',
263
+ auth: true,
264
+ user: owner,
265
+ version: 1,
266
+ });
267
+ const [workflow, workflow2] = await testDb.createManyWorkflows(2, {}, owner);
268
+ const savedExecutions = await testDb.createManyExecutions(2, workflow, testDb.createSuccessfullExecution);
269
+ await testDb.createManyExecutions(2, workflow2, testDb.createSuccessfullExecution);
270
+ const response = await authOwnerAgent.get(`/executions`).query({
271
+ workflowId: workflow.id.toString(),
272
+ });
273
+ expect(response.statusCode).toBe(200);
274
+ expect(response.body.data.length).toBe(2);
275
+ expect(response.body.nextCursor).toBe(null);
276
+ for (const execution of response.body.data) {
277
+ const { id, finished, mode, retryOf, retrySuccessId, startedAt, stoppedAt, workflowId, waitTill, } = execution;
278
+ expect(savedExecutions.some((exec) => exec.id === id)).toBe(true);
279
+ expect(finished).toBe(true);
280
+ expect(mode).toBeDefined();
281
+ expect(retrySuccessId).toBeNull();
282
+ expect(retryOf).toBeNull();
283
+ expect(startedAt).not.toBeNull();
284
+ expect(stoppedAt).not.toBeNull();
285
+ expect(workflowId).toBe(workflow.id.toString());
286
+ expect(waitTill).toBeNull();
287
+ }
288
+ });
289
+ //# sourceMappingURL=executions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executions.test.js","sourceRoot":"","sources":["../../../../test/integration/publicApi/executions.test.ts"],"names":[],"mappings":"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"}