@budibase/server 0.9.125-alpha.4 → 0.9.125-alpha.8

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 (270) hide show
  1. package/builder/assets/{index.dc48c234.js → index.cf133375.js} +2 -2
  2. package/builder/assets/{vendor.4af73c18.js → vendor.d8e1ee7b.js} +1 -1
  3. package/builder/index.html +2 -2
  4. package/coverage/clover.xml +1659 -1493
  5. package/coverage/coverage-final.json +101 -87
  6. package/coverage/lcov-report/api/controllers/analytics.js.html +3 -3
  7. package/coverage/lcov-report/api/controllers/apikeys.js.html +6 -6
  8. package/coverage/lcov-report/api/controllers/application.js.html +39 -39
  9. package/coverage/lcov-report/api/controllers/auth.js.html +6 -6
  10. package/coverage/lcov-report/api/controllers/automation.js.html +151 -361
  11. package/coverage/lcov-report/api/controllers/backup.js.html +3 -3
  12. package/coverage/lcov-report/api/controllers/component.js.html +5 -5
  13. package/coverage/lcov-report/api/controllers/datasource.js.html +1 -1
  14. package/coverage/lcov-report/api/controllers/dev.js.html +15 -15
  15. package/coverage/lcov-report/api/controllers/hosting.js.html +8 -8
  16. package/coverage/lcov-report/api/controllers/index.html +39 -24
  17. package/coverage/lcov-report/api/controllers/integration.js.html +4 -4
  18. package/coverage/lcov-report/api/controllers/layout.js.html +1 -1
  19. package/coverage/lcov-report/api/controllers/metadata.js.html +218 -0
  20. package/coverage/lcov-report/api/controllers/permission.js.html +1 -1
  21. package/coverage/lcov-report/api/controllers/query.js.html +6 -12
  22. package/coverage/lcov-report/api/controllers/role.js.html +1 -1
  23. package/coverage/lcov-report/api/controllers/routing.js.html +9 -9
  24. package/coverage/lcov-report/api/controllers/row/external.js.html +1 -1
  25. package/coverage/lcov-report/api/controllers/row/index.html +20 -20
  26. package/coverage/lcov-report/api/controllers/row/index.js.html +14 -14
  27. package/coverage/lcov-report/api/controllers/row/internal.js.html +95 -62
  28. package/coverage/lcov-report/api/controllers/row/internalSearch.js.html +1 -1
  29. package/coverage/lcov-report/api/controllers/row/utils.js.html +10 -10
  30. package/coverage/lcov-report/api/controllers/screen.js.html +1 -1
  31. package/coverage/lcov-report/api/controllers/script.js.html +1 -1
  32. package/coverage/lcov-report/api/controllers/table/index.html +1 -1
  33. package/coverage/lcov-report/api/controllers/table/index.js.html +24 -24
  34. package/coverage/lcov-report/api/controllers/table/utils.js.html +32 -32
  35. package/coverage/lcov-report/api/controllers/templates.js.html +5 -5
  36. package/coverage/lcov-report/api/controllers/user.js.html +1 -1
  37. package/coverage/lcov-report/api/controllers/view/exporters.js.html +1 -1
  38. package/coverage/lcov-report/api/controllers/view/index.html +1 -1
  39. package/coverage/lcov-report/api/controllers/view/index.js.html +1 -1
  40. package/coverage/lcov-report/api/controllers/view/viewBuilder.js.html +1 -1
  41. package/coverage/lcov-report/api/controllers/webhook.js.html +1 -1
  42. package/coverage/lcov-report/api/index.html +1 -1
  43. package/coverage/lcov-report/api/index.js.html +23 -23
  44. package/coverage/lcov-report/api/routes/analytics.js.html +6 -6
  45. package/coverage/lcov-report/api/routes/apikeys.js.html +8 -8
  46. package/coverage/lcov-report/api/routes/application.js.html +8 -8
  47. package/coverage/lcov-report/api/routes/auth.js.html +6 -6
  48. package/coverage/lcov-report/api/routes/automation.js.html +41 -26
  49. package/coverage/lcov-report/api/routes/backup.js.html +8 -8
  50. package/coverage/lcov-report/api/routes/component.js.html +8 -8
  51. package/coverage/lcov-report/api/routes/datasource.js.html +13 -13
  52. package/coverage/lcov-report/api/routes/deploy.js.html +8 -8
  53. package/coverage/lcov-report/api/routes/dev.js.html +11 -11
  54. package/coverage/lcov-report/api/routes/hosting.js.html +8 -8
  55. package/coverage/lcov-report/api/routes/index.html +24 -9
  56. package/coverage/lcov-report/api/routes/index.js.html +36 -30
  57. package/coverage/lcov-report/api/routes/integration.js.html +8 -8
  58. package/coverage/lcov-report/api/routes/layout.js.html +8 -8
  59. package/coverage/lcov-report/api/routes/metadata.js.html +194 -0
  60. package/coverage/lcov-report/api/routes/permission.js.html +12 -12
  61. package/coverage/lcov-report/api/routes/query.js.html +13 -13
  62. package/coverage/lcov-report/api/routes/role.js.html +12 -12
  63. package/coverage/lcov-report/api/routes/routing.js.html +8 -8
  64. package/coverage/lcov-report/api/routes/row.js.html +10 -10
  65. package/coverage/lcov-report/api/routes/screen.js.html +11 -11
  66. package/coverage/lcov-report/api/routes/script.js.html +1 -1
  67. package/coverage/lcov-report/api/routes/static.js.html +13 -13
  68. package/coverage/lcov-report/api/routes/table.js.html +12 -12
  69. package/coverage/lcov-report/api/routes/templates.js.html +8 -8
  70. package/coverage/lcov-report/api/routes/user.js.html +9 -9
  71. package/coverage/lcov-report/api/routes/view.js.html +11 -11
  72. package/coverage/lcov-report/api/routes/webhook.js.html +11 -11
  73. package/coverage/lcov-report/automations/actions.js.html +38 -107
  74. package/coverage/lcov-report/automations/automationUtils.js.html +1 -1
  75. package/coverage/lcov-report/automations/bullboard.js.html +46 -16
  76. package/coverage/lcov-report/automations/index.html +67 -67
  77. package/coverage/lcov-report/automations/index.js.html +26 -128
  78. package/coverage/lcov-report/automations/steps/bash.js.html +33 -12
  79. package/coverage/lcov-report/automations/steps/createRow.js.html +8 -8
  80. package/coverage/lcov-report/automations/steps/delay.js.html +45 -6
  81. package/coverage/lcov-report/automations/steps/deleteRow.js.html +8 -8
  82. package/coverage/lcov-report/automations/steps/discord.js.html +329 -0
  83. package/coverage/lcov-report/automations/steps/executeQuery.js.html +19 -31
  84. package/coverage/lcov-report/automations/steps/executeScript.js.html +18 -30
  85. package/coverage/lcov-report/automations/steps/filter.js.html +22 -19
  86. package/coverage/lcov-report/automations/steps/index.html +125 -65
  87. package/coverage/lcov-report/automations/steps/integromat.js.html +341 -0
  88. package/coverage/lcov-report/automations/steps/outgoingWebhook.js.html +26 -32
  89. package/coverage/lcov-report/automations/steps/sendSmtpEmail.js.html +9 -9
  90. package/coverage/lcov-report/automations/steps/serverLog.js.html +20 -8
  91. package/coverage/lcov-report/automations/steps/{sendgridEmail.js.html → slack.js.html} +57 -87
  92. package/coverage/lcov-report/automations/steps/updateRow.js.html +7 -7
  93. package/coverage/lcov-report/automations/steps/utils.js.html +188 -0
  94. package/coverage/lcov-report/automations/steps/zapier.js.html +332 -0
  95. package/coverage/lcov-report/automations/thread.js.html +79 -76
  96. package/coverage/lcov-report/automations/triggerInfo/app.js.html +173 -0
  97. package/coverage/lcov-report/automations/triggerInfo/cron.js.html +173 -0
  98. package/coverage/lcov-report/automations/triggerInfo/index.html +201 -0
  99. package/coverage/lcov-report/automations/triggerInfo/index.js.html +125 -0
  100. package/coverage/lcov-report/automations/triggerInfo/rowDeleted.js.html +176 -0
  101. package/coverage/lcov-report/automations/triggerInfo/rowSaved.js.html +200 -0
  102. package/coverage/lcov-report/automations/triggerInfo/rowUpdated.js.html +200 -0
  103. package/coverage/lcov-report/automations/triggerInfo/webhook.js.html +188 -0
  104. package/coverage/lcov-report/automations/triggers.js.html +54 -819
  105. package/coverage/lcov-report/automations/utils.js.html +557 -0
  106. package/coverage/lcov-report/constants/index.html +5 -5
  107. package/coverage/lcov-report/constants/index.js.html +19 -4
  108. package/coverage/lcov-report/constants/layouts.js.html +1 -1
  109. package/coverage/lcov-report/constants/screens.js.html +2 -2
  110. package/coverage/lcov-report/db/client.js.html +1 -1
  111. package/coverage/lcov-report/db/index.html +19 -19
  112. package/coverage/lcov-report/db/index.js.html +1 -1
  113. package/coverage/lcov-report/db/linkedRows/LinkController.js.html +73 -73
  114. package/coverage/lcov-report/db/linkedRows/index.html +17 -17
  115. package/coverage/lcov-report/db/linkedRows/index.js.html +79 -115
  116. package/coverage/lcov-report/db/linkedRows/linkUtils.js.html +31 -31
  117. package/coverage/lcov-report/db/newid.js.html +2 -2
  118. package/coverage/lcov-report/db/utils.js.html +79 -28
  119. package/coverage/lcov-report/events/AutomationEmitter.js.html +7 -7
  120. package/coverage/lcov-report/events/index.html +1 -1
  121. package/coverage/lcov-report/events/index.js.html +2 -2
  122. package/coverage/lcov-report/events/utils.js.html +1 -1
  123. package/coverage/lcov-report/index.html +115 -100
  124. package/coverage/lcov-report/integrations/tests/TestConfiguration.js.html +1 -1
  125. package/coverage/lcov-report/integrations/tests/index.html +1 -1
  126. package/coverage/lcov-report/{automations/logic.js.html → middleware/appInfo.js.html} +35 -38
  127. package/coverage/lcov-report/middleware/authorized.js.html +16 -16
  128. package/coverage/lcov-report/middleware/builder.js.html +15 -15
  129. package/coverage/lcov-report/middleware/currentapp.js.html +33 -33
  130. package/coverage/lcov-report/middleware/index.html +23 -8
  131. package/coverage/lcov-report/middleware/joi-validator.js.html +6 -6
  132. package/coverage/lcov-report/middleware/resourceId.js.html +28 -28
  133. package/coverage/lcov-report/middleware/selfhost.js.html +1 -1
  134. package/coverage/lcov-report/middleware/usageQuota.js.html +8 -8
  135. package/coverage/lcov-report/utilities/bcrypt.js.html +1 -1
  136. package/coverage/lcov-report/utilities/budibaseDir.js.html +7 -7
  137. package/coverage/lcov-report/utilities/centralPath.js.html +4 -4
  138. package/coverage/lcov-report/utilities/csvParser.js.html +1 -1
  139. package/coverage/lcov-report/utilities/global.js.html +21 -21
  140. package/coverage/lcov-report/utilities/index.html +18 -18
  141. package/coverage/lcov-report/utilities/index.js.html +167 -14
  142. package/coverage/lcov-report/utilities/queue/inMemoryQueue.js.html +12 -12
  143. package/coverage/lcov-report/utilities/queue/index.html +1 -1
  144. package/coverage/lcov-report/utilities/routing/index.html +1 -1
  145. package/coverage/lcov-report/utilities/routing/index.js.html +6 -6
  146. package/coverage/lcov-report/utilities/rowProcessor/index.html +14 -14
  147. package/coverage/lcov-report/utilities/rowProcessor/index.js.html +87 -51
  148. package/coverage/lcov-report/utilities/rowProcessor/utils.js.html +8 -8
  149. package/coverage/lcov-report/utilities/security.js.html +2 -2
  150. package/coverage/lcov-report/utilities/statusCodes.js.html +1 -1
  151. package/coverage/lcov-report/utilities/users.js.html +1 -1
  152. package/coverage/lcov-report/utilities/workerRequests.js.html +1 -1
  153. package/coverage/lcov.info +2641 -2357
  154. package/dist/api/controllers/automation.js +49 -127
  155. package/dist/api/controllers/deploy/index.js +17 -1
  156. package/dist/api/controllers/metadata.js +49 -0
  157. package/dist/api/controllers/query.js +0 -2
  158. package/dist/api/controllers/row/internal.js +33 -23
  159. package/dist/api/routes/automation.js +4 -5
  160. package/dist/api/routes/index.js +2 -0
  161. package/dist/api/routes/metadata.js +13 -0
  162. package/dist/api/routes/tests/utilities/TestFunctions.js +13 -0
  163. package/dist/app.js +1 -1
  164. package/dist/automations/actions.js +26 -46
  165. package/dist/automations/bullboard.js +10 -2
  166. package/dist/automations/index.js +11 -48
  167. package/dist/automations/steps/bash.js +11 -5
  168. package/dist/automations/steps/createRow.js +4 -4
  169. package/dist/automations/steps/delay.js +15 -2
  170. package/dist/automations/steps/deleteRow.js +4 -4
  171. package/dist/automations/steps/discord.js +91 -0
  172. package/dist/automations/steps/executeQuery.js +11 -14
  173. package/dist/automations/steps/executeScript.js +11 -14
  174. package/dist/automations/steps/filter.js +18 -17
  175. package/dist/automations/steps/integromat.js +94 -0
  176. package/dist/automations/steps/outgoingWebhook.js +12 -16
  177. package/dist/automations/steps/sendSmtpEmail.js +3 -3
  178. package/dist/automations/steps/serverLog.js +6 -2
  179. package/dist/automations/steps/slack.js +73 -0
  180. package/dist/automations/steps/updateRow.js +3 -3
  181. package/dist/automations/steps/utils.js +46 -0
  182. package/dist/automations/steps/zapier.js +91 -0
  183. package/dist/automations/tests/utilities/index.js +2 -12
  184. package/dist/automations/thread.js +23 -25
  185. package/dist/automations/triggerInfo/app.js +32 -0
  186. package/dist/automations/triggerInfo/cron.js +32 -0
  187. package/dist/automations/triggerInfo/index.js +15 -0
  188. package/dist/automations/triggerInfo/rowDeleted.js +33 -0
  189. package/dist/automations/triggerInfo/rowSaved.js +41 -0
  190. package/dist/automations/triggerInfo/rowUpdated.js +41 -0
  191. package/dist/automations/triggerInfo/webhook.js +37 -0
  192. package/dist/automations/triggers.js +27 -284
  193. package/dist/automations/utils.js +143 -0
  194. package/dist/constants/index.js +4 -0
  195. package/dist/db/linkedRows/index.js +14 -26
  196. package/dist/db/utils.js +14 -1
  197. package/dist/environment.js +1 -0
  198. package/dist/integrations/mysql.js +1 -1
  199. package/dist/middleware/appInfo.js +17 -0
  200. package/dist/middleware/usageQuota.js +1 -1
  201. package/dist/package.json +7 -6
  202. package/dist/tsconfig.tsbuildinfo +1 -1
  203. package/dist/utilities/fileSystem/index.js +0 -26
  204. package/dist/utilities/index.js +54 -0
  205. package/dist/utilities/redis.js +16 -1
  206. package/dist/utilities/rowProcessor/index.js +7 -4
  207. package/package.json +8 -7
  208. package/scripts/selfhost.js +8 -0
  209. package/src/api/controllers/automation.js +75 -145
  210. package/src/api/controllers/deploy/index.js +23 -1
  211. package/src/api/controllers/metadata.js +46 -0
  212. package/src/api/controllers/query.js +0 -2
  213. package/src/api/controllers/row/internal.js +34 -23
  214. package/src/api/routes/automation.js +16 -11
  215. package/src/api/routes/index.js +2 -0
  216. package/src/api/routes/metadata.js +38 -0
  217. package/src/api/routes/tests/automation.spec.js +4 -26
  218. package/src/api/routes/tests/metadata.spec.js +65 -0
  219. package/src/api/routes/tests/utilities/TestFunctions.js +14 -0
  220. package/src/app.ts +1 -1
  221. package/src/automations/actions.js +26 -49
  222. package/src/automations/bullboard.js +12 -2
  223. package/src/automations/index.js +11 -45
  224. package/src/automations/steps/bash.js +12 -5
  225. package/src/automations/steps/createRow.js +4 -4
  226. package/src/automations/steps/delay.js +15 -2
  227. package/src/automations/steps/deleteRow.js +4 -4
  228. package/src/automations/steps/discord.js +83 -0
  229. package/src/automations/steps/executeQuery.js +11 -15
  230. package/src/automations/steps/executeScript.js +11 -15
  231. package/src/automations/steps/filter.js +18 -17
  232. package/src/automations/steps/integromat.js +87 -0
  233. package/src/automations/steps/outgoingWebhook.js +12 -14
  234. package/src/automations/steps/sendSmtpEmail.js +3 -3
  235. package/src/automations/steps/serverLog.js +6 -2
  236. package/src/automations/steps/slack.js +64 -0
  237. package/src/automations/steps/updateRow.js +3 -3
  238. package/src/automations/steps/utils.js +36 -0
  239. package/src/automations/steps/zapier.js +84 -0
  240. package/src/automations/tests/automation.spec.js +3 -66
  241. package/src/automations/tests/delay.spec.js +1 -1
  242. package/src/automations/tests/filter.spec.js +13 -13
  243. package/src/automations/tests/utilities/index.js +2 -13
  244. package/src/automations/thread.js +27 -26
  245. package/src/automations/triggerInfo/app.js +31 -0
  246. package/src/automations/triggerInfo/cron.js +31 -0
  247. package/src/automations/triggerInfo/index.js +15 -0
  248. package/src/automations/triggerInfo/rowDeleted.js +32 -0
  249. package/src/automations/triggerInfo/rowSaved.js +40 -0
  250. package/src/automations/triggerInfo/rowUpdated.js +40 -0
  251. package/src/automations/triggerInfo/webhook.js +36 -0
  252. package/src/automations/triggers.js +33 -288
  253. package/src/automations/utils.js +159 -0
  254. package/src/constants/index.js +5 -0
  255. package/src/db/linkedRows/index.js +15 -27
  256. package/src/db/tests/linkTests.spec.js +0 -12
  257. package/src/db/utils.js +17 -0
  258. package/src/environment.js +1 -0
  259. package/src/integrations/mysql.ts +1 -1
  260. package/src/middleware/appInfo.js +19 -0
  261. package/src/middleware/usageQuota.js +1 -1
  262. package/src/utilities/fileSystem/index.js +0 -30
  263. package/src/utilities/index.js +51 -0
  264. package/src/utilities/redis.js +18 -1
  265. package/src/utilities/rowProcessor/index.js +16 -4
  266. package/dist/automations/logic.js +0 -17
  267. package/dist/automations/steps/sendgridEmail.js +0 -85
  268. package/src/automations/logic.js +0 -20
  269. package/src/automations/steps/sendgridEmail.js +0 -74
  270. package/src/automations/tests/sendEmail.spec.js +0 -36
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">94.5% </span>
26
+ <span class="strong">91.01% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>103/109</span>
28
+ <span class='fraction'>81/89</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">83.33% </span>
33
+ <span class="strong">79.17% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>50/60</span>
35
+ <span class='fraction'>19/24</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">100% </span>
40
+ <span class="strong">92.31% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>17/17</span>
42
+ <span class='fraction'>12/13</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">94.39% </span>
47
+ <span class="strong">90.91% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>101/107</span>
49
+ <span class='fraction'>80/88</span>
50
50
  </div>
51
51
 
52
52
 
@@ -269,83 +269,15 @@
269
269
  <a name='L210'></a><a href='#L210'>210</a>
270
270
  <a name='L211'></a><a href='#L211'>211</a>
271
271
  <a name='L212'></a><a href='#L212'>212</a>
272
- <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a>
274
- <a name='L215'></a><a href='#L215'>215</a>
275
- <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a>
289
- <a name='L230'></a><a href='#L230'>230</a>
290
- <a name='L231'></a><a href='#L231'>231</a>
291
- <a name='L232'></a><a href='#L232'>232</a>
292
- <a name='L233'></a><a href='#L233'>233</a>
293
- <a name='L234'></a><a href='#L234'>234</a>
294
- <a name='L235'></a><a href='#L235'>235</a>
295
- <a name='L236'></a><a href='#L236'>236</a>
296
- <a name='L237'></a><a href='#L237'>237</a>
297
- <a name='L238'></a><a href='#L238'>238</a>
298
- <a name='L239'></a><a href='#L239'>239</a>
299
- <a name='L240'></a><a href='#L240'>240</a>
300
- <a name='L241'></a><a href='#L241'>241</a>
301
- <a name='L242'></a><a href='#L242'>242</a>
302
- <a name='L243'></a><a href='#L243'>243</a>
303
- <a name='L244'></a><a href='#L244'>244</a>
304
- <a name='L245'></a><a href='#L245'>245</a>
305
- <a name='L246'></a><a href='#L246'>246</a>
306
- <a name='L247'></a><a href='#L247'>247</a>
307
- <a name='L248'></a><a href='#L248'>248</a>
308
- <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a>
310
- <a name='L251'></a><a href='#L251'>251</a>
311
- <a name='L252'></a><a href='#L252'>252</a>
312
- <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a>
316
- <a name='L257'></a><a href='#L257'>257</a>
317
- <a name='L258'></a><a href='#L258'>258</a>
318
- <a name='L259'></a><a href='#L259'>259</a>
319
- <a name='L260'></a><a href='#L260'>260</a>
320
- <a name='L261'></a><a href='#L261'>261</a>
321
- <a name='L262'></a><a href='#L262'>262</a>
322
- <a name='L263'></a><a href='#L263'>263</a>
323
- <a name='L264'></a><a href='#L264'>264</a>
324
- <a name='L265'></a><a href='#L265'>265</a>
325
- <a name='L266'></a><a href='#L266'>266</a>
326
- <a name='L267'></a><a href='#L267'>267</a>
327
- <a name='L268'></a><a href='#L268'>268</a>
328
- <a name='L269'></a><a href='#L269'>269</a>
329
- <a name='L270'></a><a href='#L270'>270</a>
330
- <a name='L271'></a><a href='#L271'>271</a>
331
- <a name='L272'></a><a href='#L272'>272</a>
332
- <a name='L273'></a><a href='#L273'>273</a>
333
- <a name='L274'></a><a href='#L274'>274</a>
334
- <a name='L275'></a><a href='#L275'>275</a>
335
- <a name='L276'></a><a href='#L276'>276</a>
336
- <a name='L277'></a><a href='#L277'>277</a>
337
- <a name='L278'></a><a href='#L278'>278</a>
338
- <a name='L279'></a><a href='#L279'>279</a>
339
- <a name='L280'></a><a href='#L280'>280</a>
340
- <a name='L281'></a><a href='#L281'>281</a>
341
- <a name='L282'></a><a href='#L282'>282</a>
342
- <a name='L283'></a><a href='#L283'>283</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">32x</span>
272
+ <a name='L213'></a><a href='#L213'>213</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">32x</span>
343
273
  <span class="cline-any cline-yes">32x</span>
344
274
  <span class="cline-any cline-yes">32x</span>
345
275
  <span class="cline-any cline-yes">32x</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
279
  <span class="cline-any cline-yes">32x</span>
347
280
  <span class="cline-any cline-yes">32x</span>
348
- <span class="cline-any cline-neutral">&nbsp;</span>
349
281
  <span class="cline-any cline-yes">32x</span>
350
282
  <span class="cline-any cline-yes">32x</span>
351
283
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -356,191 +288,103 @@
356
288
  <span class="cline-any cline-neutral">&nbsp;</span>
357
289
  <span class="cline-any cline-neutral">&nbsp;</span>
358
290
  <span class="cline-any cline-neutral">&nbsp;</span>
359
- <span class="cline-any cline-yes">19x</span>
360
- <span class="cline-any cline-no">&nbsp;</span>
291
+ <span class="cline-any cline-yes">1x</span>
361
292
  <span class="cline-any cline-neutral">&nbsp;</span>
362
- <span class="cline-any cline-yes">19x</span>
363
- <span class="cline-any cline-yes">19x</span>
364
- <span class="cline-any cline-yes">19x</span>
365
- <span class="cline-any cline-yes">19x</span>
366
- <span class="cline-any cline-yes">23x</span>
367
- <span class="cline-any cline-no">&nbsp;</span>
368
293
  <span class="cline-any cline-neutral">&nbsp;</span>
369
- <span class="cline-any cline-yes">23x</span>
370
- <span class="cline-any cline-yes">7x</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
372
294
  <span class="cline-any cline-neutral">&nbsp;</span>
373
295
  <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-yes">1x</span>
374
297
  <span class="cline-any cline-neutral">&nbsp;</span>
375
- <span class="cline-any cline-yes">19x</span>
376
298
  <span class="cline-any cline-neutral">&nbsp;</span>
377
299
  <span class="cline-any cline-neutral">&nbsp;</span>
378
300
  <span class="cline-any cline-neutral">&nbsp;</span>
379
301
  <span class="cline-any cline-neutral">&nbsp;</span>
380
302
  <span class="cline-any cline-neutral">&nbsp;</span>
381
303
  <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-yes">22x</span>
305
+ <span class="cline-any cline-no">&nbsp;</span>
382
306
  <span class="cline-any cline-neutral">&nbsp;</span>
307
+ <span class="cline-any cline-yes">22x</span>
308
+ <span class="cline-any cline-yes">22x</span>
309
+ <span class="cline-any cline-yes">22x</span>
383
310
  <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-yes">22x</span>
312
+ <span class="cline-any cline-yes">18x</span>
384
313
  <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-yes">20x</span>
386
- <span class="cline-any cline-yes">20x</span>
314
+ <span class="cline-any cline-yes">22x</span>
315
+ <span class="cline-any cline-yes">26x</span>
316
+ <span class="cline-any cline-no">&nbsp;</span>
387
317
  <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-yes">40x</span>
318
+ <span class="cline-any cline-yes">26x</span>
319
+ <span class="cline-any cline-yes">7x</span>
320
+ <span class="cline-any cline-no">&nbsp;</span>
389
321
  <span class="cline-any cline-neutral">&nbsp;</span>
390
322
  <span class="cline-any cline-neutral">&nbsp;</span>
391
323
  <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-yes">22x</span>
392
325
  <span class="cline-any cline-neutral">&nbsp;</span>
393
326
  <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-yes">32x</span>
328
+ <span class="cline-any cline-yes">21x</span>
329
+ <span class="cline-any cline-yes">21x</span>
330
+ <span class="cline-any cline-yes">21x</span>
394
331
  <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-yes">60x</span>
396
332
  <span class="cline-any cline-neutral">&nbsp;</span>
333
+ <span class="cline-any cline-yes">21x</span>
334
+ <span class="cline-any cline-yes">1x</span>
397
335
  <span class="cline-any cline-neutral">&nbsp;</span>
398
- <span class="cline-any cline-yes">20x</span>
399
- <span class="cline-any cline-yes">20x</span>
400
336
  <span class="cline-any cline-neutral">&nbsp;</span>
401
337
  <span class="cline-any cline-yes">20x</span>
402
338
  <span class="cline-any cline-neutral">&nbsp;</span>
403
339
  <span class="cline-any cline-yes">20x</span>
404
- <span class="cline-any cline-no">&nbsp;</span>
405
- <span class="cline-any cline-neutral">&nbsp;</span>
406
- <span class="cline-any cline-neutral">&nbsp;</span>
407
340
  <span class="cline-any cline-yes">20x</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
409
- <span class="cline-any cline-neutral">&nbsp;</span>
410
- <span class="cline-any cline-neutral">&nbsp;</span>
411
- <span class="cline-any cline-neutral">&nbsp;</span>
412
- <span class="cline-any cline-neutral">&nbsp;</span>
413
- <span class="cline-any cline-neutral">&nbsp;</span>
414
- <span class="cline-any cline-neutral">&nbsp;</span>
415
- <span class="cline-any cline-neutral">&nbsp;</span>
416
- <span class="cline-any cline-no">&nbsp;</span>
417
- <span class="cline-any cline-neutral">&nbsp;</span>
418
341
  <span class="cline-any cline-yes">20x</span>
419
342
  <span class="cline-any cline-neutral">&nbsp;</span>
420
343
  <span class="cline-any cline-neutral">&nbsp;</span>
421
344
  <span class="cline-any cline-neutral">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-neutral">&nbsp;</span>
428
- <span class="cline-any cline-neutral">&nbsp;</span>
429
- <span class="cline-any cline-neutral">&nbsp;</span>
430
345
  <span class="cline-any cline-yes">20x</span>
431
346
  <span class="cline-any cline-yes">20x</span>
432
347
  <span class="cline-any cline-neutral">&nbsp;</span>
433
348
  <span class="cline-any cline-yes">20x</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-yes">61x</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-neutral">&nbsp;</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-neutral">&nbsp;</span>
441
- <span class="cline-any cline-neutral">&nbsp;</span>
442
- <span class="cline-any cline-yes">20x</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-neutral">&nbsp;</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-yes">1x</span>
448
- <span class="cline-any cline-yes">1x</span>
449
- <span class="cline-any cline-neutral">&nbsp;</span>
450
- <span class="cline-any cline-yes">1x</span>
451
- <span class="cline-any cline-yes">1x</span>
452
- <span class="cline-any cline-neutral">&nbsp;</span>
453
- <span class="cline-any cline-neutral">&nbsp;</span>
454
- <span class="cline-any cline-neutral">&nbsp;</span>
455
- <span class="cline-any cline-neutral">&nbsp;</span>
456
- <span class="cline-any cline-yes">1x</span>
457
- <span class="cline-any cline-yes">1x</span>
458
- <span class="cline-any cline-yes">1x</span>
459
- <span class="cline-any cline-neutral">&nbsp;</span>
460
- <span class="cline-any cline-yes">1x</span>
461
- <span class="cline-any cline-neutral">&nbsp;</span>
462
- <span class="cline-any cline-neutral">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-neutral">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
349
  <span class="cline-any cline-yes">20x</span>
467
350
  <span class="cline-any cline-neutral">&nbsp;</span>
468
351
  <span class="cline-any cline-neutral">&nbsp;</span>
469
352
  <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-yes">1x</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-neutral">&nbsp;</span>
475
353
  <span class="cline-any cline-neutral">&nbsp;</span>
476
354
  <span class="cline-any cline-neutral">&nbsp;</span>
477
355
  <span class="cline-any cline-neutral">&nbsp;</span>
478
356
  <span class="cline-any cline-neutral">&nbsp;</span>
479
357
  <span class="cline-any cline-neutral">&nbsp;</span>
480
- <span class="cline-any cline-yes">1x</span>
481
- <span class="cline-any cline-yes">1x</span>
482
- <span class="cline-any cline-yes">1x</span>
483
- <span class="cline-any cline-yes">1x</span>
484
- <span class="cline-any cline-neutral">&nbsp;</span>
485
- <span class="cline-any cline-neutral">&nbsp;</span>
486
- <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-neutral">&nbsp;</span>
488
- <span class="cline-any cline-yes">20x</span>
489
- <span class="cline-any cline-neutral">&nbsp;</span>
490
- <span class="cline-any cline-neutral">&nbsp;</span>
491
358
  <span class="cline-any cline-yes">32x</span>
492
- <span class="cline-any cline-yes">18x</span>
493
- <span class="cline-any cline-yes">18x</span>
494
- <span class="cline-any cline-yes">18x</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-yes">18x</span>
498
- <span class="cline-any cline-yes">1x</span>
499
- <span class="cline-any cline-neutral">&nbsp;</span>
500
- <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-yes">17x</span>
502
- <span class="cline-any cline-neutral">&nbsp;</span>
503
- <span class="cline-any cline-yes">17x</span>
504
- <span class="cline-any cline-yes">17x</span>
505
- <span class="cline-any cline-yes">17x</span>
506
- <span class="cline-any cline-neutral">&nbsp;</span>
507
- <span class="cline-any cline-neutral">&nbsp;</span>
508
- <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-yes">17x</span>
510
- <span class="cline-any cline-neutral">&nbsp;</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-yes">17x</span>
514
- <span class="cline-any cline-yes">17x</span>
359
+ <span class="cline-any cline-yes">2x</span>
360
+ <span class="cline-any cline-yes">2x</span>
361
+ <span class="cline-any cline-yes">2x</span>
362
+ <span class="cline-any cline-yes">2x</span>
363
+ <span class="cline-any cline-yes">2x</span>
364
+ <span class="cline-any cline-yes">2x</span>
515
365
  <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-yes">17x</span>
517
- <span class="cline-any cline-yes">17x</span>
518
366
  <span class="cline-any cline-neutral">&nbsp;</span>
519
367
  <span class="cline-any cline-neutral">&nbsp;</span>
520
368
  <span class="cline-any cline-neutral">&nbsp;</span>
369
+ <span class="cline-any cline-yes">2x</span>
370
+ <span class="cline-any cline-yes">2x</span>
521
371
  <span class="cline-any cline-neutral">&nbsp;</span>
522
372
  <span class="cline-any cline-neutral">&nbsp;</span>
373
+ <span class="cline-any cline-yes">2x</span>
523
374
  <span class="cline-any cline-neutral">&nbsp;</span>
524
375
  <span class="cline-any cline-neutral">&nbsp;</span>
525
376
  <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-yes">32x</span>
527
- <span class="cline-any cline-yes">2x</span>
528
- <span class="cline-any cline-yes">2x</span>
529
377
  <span class="cline-any cline-yes">2x</span>
530
- <span class="cline-any cline-yes">2x</span>
531
- <span class="cline-any cline-yes">2x</span>
532
- <span class="cline-any cline-yes">2x</span>
533
- <span class="cline-any cline-neutral">&nbsp;</span>
534
378
  <span class="cline-any cline-neutral">&nbsp;</span>
535
379
  <span class="cline-any cline-neutral">&nbsp;</span>
536
380
  <span class="cline-any cline-neutral">&nbsp;</span>
537
381
  <span class="cline-any cline-yes">2x</span>
382
+ <span class="cline-any cline-yes">1x</span>
383
+ <span class="cline-any cline-neutral">&nbsp;</span>
538
384
  <span class="cline-any cline-neutral">&nbsp;</span>
539
385
  <span class="cline-any cline-neutral">&nbsp;</span>
540
386
  <span class="cline-any cline-neutral">&nbsp;</span>
541
387
  <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-yes">2x</span>
543
- <span class="cline-any cline-yes">2x</span>
544
388
  <span class="cline-any cline-neutral">&nbsp;</span>
545
389
  <span class="cline-any cline-yes">2x</span>
546
390
  <span class="cline-any cline-yes">2x</span>
@@ -572,13 +416,12 @@
572
416
  <span class="cline-any cline-yes">1x</span>
573
417
  <span class="cline-any cline-yes">1x</span>
574
418
  <span class="cline-any cline-yes">1x</span>
575
- <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-neutral">&nbsp;</span>
577
- <span class="cline-any cline-neutral">&nbsp;</span>
578
419
  <span class="cline-any cline-yes">1x</span>
579
420
  <span class="cline-any cline-neutral">&nbsp;</span>
580
421
  <span class="cline-any cline-neutral">&nbsp;</span>
581
422
  <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-yes">1x</span>
582
425
  <span class="cline-any cline-yes">1x</span>
583
426
  <span class="cline-any cline-neutral">&nbsp;</span>
584
427
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -594,8 +437,6 @@
594
437
  <span class="cline-any cline-yes">1x</span>
595
438
  <span class="cline-any cline-neutral">&nbsp;</span>
596
439
  <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-yes">32x</span>
598
- <span class="cline-any cline-yes">1x</span>
599
440
  <span class="cline-any cline-neutral">&nbsp;</span>
600
441
  <span class="cline-any cline-neutral">&nbsp;</span>
601
442
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -605,31 +446,52 @@
605
446
  <span class="cline-any cline-neutral">&nbsp;</span>
606
447
  <span class="cline-any cline-neutral">&nbsp;</span>
607
448
  <span class="cline-any cline-neutral">&nbsp;</span>
449
+ <span class="cline-any cline-yes">32x</span>
450
+ <span class="cline-any cline-no">&nbsp;</span>
451
+ <span class="cline-any cline-no">&nbsp;</span>
452
+ <span class="cline-any cline-no">&nbsp;</span>
453
+ <span class="cline-any cline-no">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-no">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
460
  <span class="cline-any cline-neutral">&nbsp;</span>
609
461
  <span class="cline-any cline-neutral">&nbsp;</span>
610
462
  <span class="cline-any cline-neutral">&nbsp;</span>
611
463
  <span class="cline-any cline-yes">32x</span>
612
- <span class="cline-any cline-yes">1x</span>
613
- <span class="cline-any cline-yes">1x</span>
614
- <span class="cline-any cline-yes">1x</span>
464
+ <span class="cline-any cline-yes">2x</span>
465
+ <span class="cline-any cline-yes">2x</span>
466
+ <span class="cline-any cline-yes">2x</span>
467
+ <span class="cline-any cline-yes">2x</span>
468
+ <span class="cline-any cline-yes">2x</span>
469
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
470
  <span class="cline-any cline-neutral">&nbsp;</span>
616
471
  <span class="cline-any cline-neutral">&nbsp;</span>
617
472
  <span class="cline-any cline-neutral">&nbsp;</span>
618
- <span class="cline-any cline-yes">1x</span>
619
- <span class="cline-any cline-yes">1x</span>
620
473
  <span class="cline-any cline-neutral">&nbsp;</span>
621
474
  <span class="cline-any cline-neutral">&nbsp;</span>
622
475
  <span class="cline-any cline-neutral">&nbsp;</span>
623
476
  <span class="cline-any cline-neutral">&nbsp;</span>
477
+ <span class="cline-any cline-yes">2x</span>
478
+ <span class="cline-any cline-neutral">&nbsp;</span>
479
+ <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-neutral">&nbsp;</span>
481
+ <span class="cline-any cline-yes">2x</span>
482
+ <span class="cline-any cline-yes">2x</span>
483
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
484
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const CouchDB = require("../../db")
625
485
  const actions = require("../../automations/actions")
626
- const logic = require("../../automations/logic")
627
486
  const triggers = require("../../automations/triggers")
628
- const webhooks = require("./webhook")
629
487
  const { getAutomationParams, generateAutomationID } = require("../../db/utils")
630
- &nbsp;
631
- const WH_STEP_ID = triggers.BUILTIN_DEFINITIONS.WEBHOOK.stepId
632
- const CRON_STEP_ID = triggers.BUILTIN_DEFINITIONS.CRON.stepId
488
+ const {
489
+ checkForWebhooks,
490
+ updateTestHistory,
491
+ } = require("../../automations/utils")
492
+ const { deleteEntityMetadata } = require("../../utilities")
493
+ const { MetadataTypes } = require("../../constants")
494
+ const { setTestFlag, clearTestFlag } = require("../../utilities/redis")
633
495
  &nbsp;
634
496
  /*************************
635
497
  * *
@@ -637,6 +499,19 @@ const CRON_STEP_ID = triggers.BUILTIN_DEFINITIONS.CRON.stepId
637
499
  * *
638
500
  *************************/
639
501
  &nbsp;
502
+ async function cleanupAutomationMetadata(appId, automationId) {
503
+ await deleteEntityMetadata(
504
+ appId,
505
+ MetadataTypes.AUTOMATION_TEST_INPUT,
506
+ automationId
507
+ )
508
+ await deleteEntityMetadata(
509
+ appId,
510
+ MetadataTypes.AUTOMATION_TEST_HISTORY,
511
+ automationId
512
+ )
513
+ }
514
+ &nbsp;
640
515
  function cleanAutomationInputs(automation) {
641
516
  <span class="missing-if-branch" title="if path not taken" >I</span>if (automation == null) {
642
517
  <span class="cstat-no" title="statement not covered" > return automation</span>
@@ -644,6 +519,10 @@ function cleanAutomationInputs(automation) {
644
519
  let steps = automation.definition.steps
645
520
  let trigger = automation.definition.trigger
646
521
  let allSteps = [...steps, trigger]
522
+ // live is not a property used anymore
523
+ if (automation.live != null) {
524
+ delete automation.live
525
+ }
647
526
  for (let step of allSteps) {
648
527
  <span class="missing-if-branch" title="if path not taken" >I</span>if (step == null) {
649
528
  <span class="cstat-no" title="statement not covered" > continue</span>
@@ -657,119 +536,6 @@ function cleanAutomationInputs(automation) {
657
536
  return automation
658
537
  }
659
538
  &nbsp;
660
- /**
661
- * This function handles checking of any cron jobs need to be created or deleted for automations.
662
- * @param {string} appId The ID of the app in which we are checking for webhooks
663
- * @param {object|undefined} oldAuto The old automation object if updating/deleting
664
- * @param {object|undefined} newAuto The new automation object if creating/updating
665
- */
666
- async function checkForCronTriggers({ appId, oldAuto, newAuto }) {
667
- const oldTrigger = oldAuto ? oldAuto.definition.trigger : null
668
- const newTrigger = newAuto ? newAuto.definition.trigger : null
669
- function isCronTrigger(auto) {
670
- return (
671
- auto &amp;&amp;
672
- auto.definition.trigger &amp;&amp;
673
- auto.definition.trigger.stepId === CRON_STEP_ID
674
- )
675
- }
676
- &nbsp;
677
- const isLive = auto =&gt; auto &amp;&amp; auto.live
678
- &nbsp;
679
- const cronTriggerRemoved =
680
- isCronTrigger(oldAuto) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!isCronTrigger(newAuto) </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >oldTrigger.cronJobId</span>
681
- const cronTriggerDeactivated = !isLive(newAuto) &amp;&amp; isLive(oldAuto)
682
- &nbsp;
683
- const cronTriggerActivated = isLive(newAuto) &amp;&amp; !isLive(oldAuto)
684
- &nbsp;
685
- <span class="missing-if-branch" title="if path not taken" >I</span>if (cronTriggerRemoved || (cronTriggerDeactivated &amp;&amp; oldTrigger.cronJobId)) {
686
- <span class="cstat-no" title="statement not covered" > await triggers.automationQueue.removeRepeatableByKey(oldTrigger.cronJobId)</span>
687
- }
688
- // need to create cron job
689
- else <span class="missing-if-branch" title="if path not taken" >I</span>if (isCronTrigger(newAuto) &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >cronTriggerActivated)</span> {
690
- const job = <span class="cstat-no" title="statement not covered" >await triggers.automationQueue.add(</span>
691
- {
692
- automation: newAuto,
693
- event: { appId, timestamp: Date.now() },
694
- },
695
- { repeat: { cron: newTrigger.inputs.cron } }
696
- )
697
- // Assign cron job ID from bull so we can remove it later if the cron trigger is removed
698
- <span class="cstat-no" title="statement not covered" > newTrigger.cronJobId = job.id</span>
699
- }
700
- return newAuto
701
- }
702
- &nbsp;
703
- /**
704
- * This function handles checking if any webhooks need to be created or deleted for automations.
705
- * @param {string} appId The ID of the app in which we are checking for webhooks
706
- * @param {object|undefined} oldAuto The old automation object if updating/deleting
707
- * @param {object|undefined} newAuto The new automation object if creating/updating
708
- * @returns {Promise&lt;object|undefined&gt;} After this is complete the new automation object may have been updated and should be
709
- * written to DB (this does not write to DB as it would be wasteful to repeat).
710
- */
711
- async function checkForWebhooks({ appId, oldAuto, newAuto }) {
712
- const oldTrigger = oldAuto ? oldAuto.definition.trigger : null
713
- const newTrigger = newAuto ? newAuto.definition.trigger : null
714
- const triggerChanged =
715
- oldTrigger &amp;&amp; newTrigger &amp;&amp; oldTrigger.id !== newTrigger.id
716
- function isWebhookTrigger(auto) {
717
- return (
718
- auto &amp;&amp;
719
- auto.definition.trigger &amp;&amp;
720
- auto.definition.trigger.stepId === WH_STEP_ID
721
- )
722
- }
723
- // need to delete webhook
724
- if (
725
- isWebhookTrigger(oldAuto) &amp;&amp;
726
- (!isWebhookTrigger(newAuto) || <span class="branch-2 cbranch-no" title="branch not covered" >triggerChanged)</span> &amp;&amp;
727
- oldTrigger.webhookId
728
- ) {
729
- try {
730
- let db = new CouchDB(appId)
731
- // need to get the webhook to get the rev
732
- const webhook = await db.get(oldTrigger.webhookId)
733
- const ctx = {
734
- appId,
735
- params: { id: webhook._id, rev: webhook._rev },
736
- }
737
- // might be updating - reset the inputs to remove the URLs
738
- <span class="missing-if-branch" title="else path not taken" >E</span>if (newTrigger) {
739
- delete newTrigger.webhookId
740
- newTrigger.inputs = {}
741
- }
742
- await webhooks.destroy(ctx)
743
- } catch (err) {
744
- // don't worry about not being able to delete, if it doesn't exist all good
745
- }
746
- }
747
- // need to create webhook
748
- if (
749
- (!isWebhookTrigger(oldAuto) || triggerChanged) &amp;&amp;
750
- isWebhookTrigger(newAuto)
751
- ) {
752
- const ctx = {
753
- appId,
754
- request: {
755
- body: new webhooks.Webhook(
756
- "Automation webhook",
757
- webhooks.WebhookType.AUTOMATION,
758
- newAuto._id
759
- ),
760
- },
761
- }
762
- await webhooks.save(ctx)
763
- const id = ctx.body.webhook._id
764
- newTrigger.webhookId = id
765
- newTrigger.inputs = {
766
- schemaUrl: `api/webhooks/schema/${appId}/${id}`,
767
- triggerUrl: `api/webhooks/trigger/${appId}/${id}`,
768
- }
769
- }
770
- return newAuto
771
- }
772
- &nbsp;
773
539
  exports.create = async function (ctx) {
774
540
  const db = new CouchDB(ctx.appId)
775
541
  let automation = ctx.request.body
@@ -788,10 +554,6 @@ exports.create = async function (ctx) {
788
554
  appId: ctx.appId,
789
555
  newAuto: automation,
790
556
  })
791
- automation = await checkForCronTriggers({
792
- appId: ctx.appId,
793
- newAuto: automation,
794
- })
795
557
  const response = await db.put(automation)
796
558
  automation._rev = response.rev
797
559
  &nbsp;
@@ -816,13 +578,25 @@ exports.update = async function (ctx) {
816
578
  oldAuto: oldAutomation,
817
579
  newAuto: automation,
818
580
  })
819
- automation = await checkForCronTriggers({
820
- appId: ctx.appId,
821
- oldAuto: oldAutomation,
822
- newAuto: automation,
823
- })
824
581
  const response = await db.put(automation)
825
582
  automation._rev = response.rev
583
+ &nbsp;
584
+ const oldAutoTrigger =
585
+ oldAutomation &amp;&amp; oldAutomation.definition.trigger
586
+ ? oldAutomation.definition.trigger
587
+ : <span class="branch-1 cbranch-no" title="branch not covered" >{}</span>
588
+ const newAutoTrigger =
589
+ automation &amp;&amp; automation.definition.trigger
590
+ ? automation.definition.trigger
591
+ : <span class="branch-1 cbranch-no" title="branch not covered" >{}</span>
592
+ // trigger has been updated, remove the test inputs
593
+ if (oldAutoTrigger.id !== newAutoTrigger.id) {
594
+ await deleteEntityMetadata(
595
+ ctx.appId,
596
+ MetadataTypes.AUTOMATION_TEST_INPUT,
597
+ automation._id
598
+ )
599
+ }
826
600
  &nbsp;
827
601
  ctx.status = 200
828
602
  ctx.body = {
@@ -852,35 +626,29 @@ exports.find = async function (ctx) {
852
626
  &nbsp;
853
627
  exports.destroy = async function (ctx) {
854
628
  const db = new CouchDB(ctx.appId)
855
- const oldAutomation = await db.get(ctx.params.id)
629
+ const automationId = ctx.params.id
630
+ const oldAutomation = await db.get(automationId)
856
631
  await checkForWebhooks({
857
632
  appId: ctx.appId,
858
633
  oldAuto: oldAutomation,
859
634
  })
860
- await checkForCronTriggers({
861
- appId: ctx.appId,
862
- oldAuto: oldAutomation,
863
- })
864
- ctx.body = await db.remove(ctx.params.id, ctx.params.rev)
635
+ // delete metadata first
636
+ await cleanupAutomationMetadata(ctx.appId, automationId)
637
+ ctx.body = await db.remove(automationId, ctx.params.rev)
865
638
  }
866
639
  &nbsp;
867
640
  exports.getActionList = async function (ctx) {
868
- ctx.body = actions.DEFINITIONS
641
+ ctx.body = actions.ACTION_DEFINITIONS
869
642
  }
870
643
  &nbsp;
871
644
  exports.getTriggerList = async function (ctx) {
872
- ctx.body = triggers.BUILTIN_DEFINITIONS
873
- }
874
- &nbsp;
875
- exports.getLogicList = async function (ctx) {
876
- ctx.body = logic.BUILTIN_DEFINITIONS
645
+ ctx.body = triggers.TRIGGER_DEFINITIONS
877
646
  }
878
647
  &nbsp;
879
648
  module.exports.getDefinitionList = async function (ctx) {
880
649
  ctx.body = {
881
- logic: logic.BUILTIN_DEFINITIONS,
882
- trigger: triggers.BUILTIN_DEFINITIONS,
883
- action: actions.DEFINITIONS,
650
+ trigger: triggers.TRIGGER_DEFINITIONS,
651
+ action: actions.ACTION_DEFINITIONS,
884
652
  }
885
653
  }
886
654
  &nbsp;
@@ -890,19 +658,41 @@ module.exports.getDefinitionList = async function (ctx) {
890
658
  * *
891
659
  *********************/
892
660
  &nbsp;
893
- exports.trigger = async function (ctx) {
894
- const db = new CouchDB(ctx.appId)
895
- let automation = await db.get(ctx.params.id)
896
- await triggers.externalTrigger(automation, {
661
+ exports.trigger = <span class="fstat-no" title="function not covered" >as</span>ync function (ctx) {
662
+ const appId = <span class="cstat-no" title="statement not covered" >ctx.appId</span>
663
+ const db = <span class="cstat-no" title="statement not covered" >new CouchDB(appId)</span>
664
+ let automation = <span class="cstat-no" title="statement not covered" >await db.get(ctx.params.id)</span>
665
+ <span class="cstat-no" title="statement not covered" > await triggers.externalTrigger(automation, {</span>
897
666
  ...ctx.request.body,
898
- appId: ctx.appId,
667
+ appId,
899
668
  })
900
- ctx.status = 200
901
- ctx.body = {
669
+ <span class="cstat-no" title="statement not covered" > ctx.body = {</span>
902
670
  message: `Automation ${automation._id} has been triggered.`,
903
671
  automation,
904
672
  }
905
673
  }
674
+ &nbsp;
675
+ exports.test = async function (ctx) {
676
+ const appId = ctx.appId
677
+ const db = new CouchDB(appId)
678
+ let automation = await db.get(ctx.params.id)
679
+ await setTestFlag(automation._id)
680
+ const response = await triggers.externalTrigger(
681
+ automation,
682
+ {
683
+ ...ctx.request.body,
684
+ appId,
685
+ },
686
+ { getResponses: true }
687
+ )
688
+ // save a test history run
689
+ await updateTestHistory(ctx.appId, automation, {
690
+ ...ctx.request.body,
691
+ occurredAt: new Date().getTime(),
692
+ })
693
+ await clearTestFlag(automation._id)
694
+ ctx.body = response
695
+ }
906
696
  &nbsp;</pre></td></tr></table></pre>
907
697
 
908
698
  <div class='push'></div><!-- for sticky footer -->
@@ -910,7 +700,7 @@ exports.trigger = async function (ctx) {
910
700
  <div class='footer quiet pad2 space-top1 center small'>
911
701
  Code coverage generated by
912
702
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
913
- at Tue Sep 14 2021 10:25:14 GMT+0000 (Coordinated Universal Time)
703
+ at Wed Sep 15 2021 15:55:32 GMT+0000 (Coordinated Universal Time)
914
704
  </div>
915
705
  </div>
916
706
  <script src="../../prettify.js"></script>