unleash-server 4.1.4 → 4.2.0-beta.1

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 (443) hide show
  1. package/README.md +3 -2
  2. package/dist/lib/addons/datadog-definition.js +7 -0
  3. package/dist/lib/addons/datadog-definition.js.map +1 -1
  4. package/dist/lib/addons/datadog.d.ts +5 -0
  5. package/dist/lib/addons/datadog.js +53 -0
  6. package/dist/lib/addons/datadog.js.map +1 -1
  7. package/dist/lib/addons/datadog.test.js +26 -1
  8. package/dist/lib/addons/datadog.test.js.map +1 -1
  9. package/dist/lib/addons/slack-definition.js +7 -0
  10. package/dist/lib/addons/slack-definition.js.map +1 -1
  11. package/dist/lib/addons/slack.d.ts +5 -0
  12. package/dist/lib/addons/slack.js +62 -9
  13. package/dist/lib/addons/slack.js.map +1 -1
  14. package/dist/lib/addons/slack.test.js +25 -0
  15. package/dist/lib/addons/slack.test.js.map +1 -1
  16. package/dist/lib/addons/teams-definition.js +7 -0
  17. package/dist/lib/addons/teams-definition.js.map +1 -1
  18. package/dist/lib/addons/teams.d.ts +5 -0
  19. package/dist/lib/addons/teams.js +54 -1
  20. package/dist/lib/addons/teams.js.map +1 -1
  21. package/dist/lib/addons/teams.test.js +25 -0
  22. package/dist/lib/addons/teams.test.js.map +1 -1
  23. package/dist/lib/addons/webhook-definition.js +8 -0
  24. package/dist/lib/addons/webhook-definition.js.map +1 -1
  25. package/dist/lib/app.test.js +11 -7
  26. package/dist/lib/app.test.js.map +1 -1
  27. package/dist/lib/create-config.js +4 -1
  28. package/dist/lib/create-config.js.map +1 -1
  29. package/dist/lib/db/api-token-store.d.ts +2 -1
  30. package/dist/lib/db/api-token-store.js +5 -0
  31. package/dist/lib/db/api-token-store.js.map +1 -1
  32. package/dist/lib/db/client-instance-store.js +5 -2
  33. package/dist/lib/db/client-instance-store.js.map +1 -1
  34. package/dist/lib/db/client-metrics-store-v2.d.ts +19 -0
  35. package/dist/lib/db/client-metrics-store-v2.js +126 -0
  36. package/dist/lib/db/client-metrics-store-v2.js.map +1 -0
  37. package/dist/lib/db/client-metrics-store.d.ts +6 -0
  38. package/dist/lib/db/client-metrics-store.js +6 -1
  39. package/dist/lib/db/client-metrics-store.js.map +1 -1
  40. package/dist/lib/db/environment-store.d.ts +7 -7
  41. package/dist/lib/db/environment-store.js +59 -54
  42. package/dist/lib/db/environment-store.js.map +1 -1
  43. package/dist/lib/db/event-store.d.ts +5 -2
  44. package/dist/lib/db/event-store.js +27 -4
  45. package/dist/lib/db/event-store.js.map +1 -1
  46. package/dist/lib/db/feature-environment-store.d.ts +9 -6
  47. package/dist/lib/db/feature-environment-store.js +66 -20
  48. package/dist/lib/db/feature-environment-store.js.map +1 -1
  49. package/dist/lib/db/feature-strategy-store.d.ts +7 -11
  50. package/dist/lib/db/feature-strategy-store.js +84 -147
  51. package/dist/lib/db/feature-strategy-store.js.map +1 -1
  52. package/dist/lib/db/feature-toggle-client-store.d.ts +26 -0
  53. package/dist/lib/db/feature-toggle-client-store.js +104 -0
  54. package/dist/lib/db/feature-toggle-client-store.js.map +1 -0
  55. package/dist/lib/db/feature-toggle-store.d.ts +10 -22
  56. package/dist/lib/db/feature-toggle-store.js +9 -42
  57. package/dist/lib/db/feature-toggle-store.js.map +1 -1
  58. package/dist/lib/db/index.js +4 -0
  59. package/dist/lib/db/index.js.map +1 -1
  60. package/dist/lib/db/project-store.d.ts +4 -6
  61. package/dist/lib/db/project-store.js +7 -43
  62. package/dist/lib/db/project-store.js.map +1 -1
  63. package/dist/lib/event-hook.test.js +8 -7
  64. package/dist/lib/event-hook.test.js.map +1 -1
  65. package/dist/lib/logger.test.js +26 -4
  66. package/dist/lib/logger.test.js.map +1 -1
  67. package/dist/lib/middleware/api-token-middleware.js +10 -2
  68. package/dist/lib/middleware/api-token-middleware.js.map +1 -1
  69. package/dist/lib/middleware/api-token-middleware.test.js +37 -1
  70. package/dist/lib/middleware/api-token-middleware.test.js.map +1 -1
  71. package/dist/lib/middleware/demo-authentication.js +1 -1
  72. package/dist/lib/middleware/demo-authentication.js.map +1 -1
  73. package/dist/lib/middleware/oss-authentication.js +0 -3
  74. package/dist/lib/middleware/oss-authentication.js.map +1 -1
  75. package/dist/lib/middleware/rbac-middleware.js +2 -2
  76. package/dist/lib/middleware/rbac-middleware.js.map +1 -1
  77. package/dist/lib/middleware/rbac-middleware.test.js +39 -0
  78. package/dist/lib/middleware/rbac-middleware.test.js.map +1 -1
  79. package/dist/lib/routes/admin-api/addon.d.ts +4 -3
  80. package/dist/lib/routes/admin-api/addon.js +4 -4
  81. package/dist/lib/routes/admin-api/addon.js.map +1 -1
  82. package/dist/lib/routes/admin-api/api-token-controller.js +10 -38
  83. package/dist/lib/routes/admin-api/api-token-controller.js.map +1 -1
  84. package/dist/lib/routes/admin-api/archive.d.ts +4 -3
  85. package/dist/lib/routes/admin-api/archive.js +3 -3
  86. package/dist/lib/routes/admin-api/archive.js.map +1 -1
  87. package/dist/lib/routes/admin-api/client-metrics.d.ts +12 -0
  88. package/dist/lib/routes/admin-api/client-metrics.js +35 -0
  89. package/dist/lib/routes/admin-api/client-metrics.js.map +1 -0
  90. package/dist/lib/routes/admin-api/context.d.ts +4 -3
  91. package/dist/lib/routes/admin-api/context.js +4 -4
  92. package/dist/lib/routes/admin-api/context.js.map +1 -1
  93. package/dist/lib/routes/admin-api/environments-controller.d.ts +4 -4
  94. package/dist/lib/routes/admin-api/environments-controller.js +17 -43
  95. package/dist/lib/routes/admin-api/environments-controller.js.map +1 -1
  96. package/dist/lib/routes/admin-api/event.js +7 -1
  97. package/dist/lib/routes/admin-api/event.js.map +1 -1
  98. package/dist/lib/routes/admin-api/feature.d.ts +11 -10
  99. package/dist/lib/routes/admin-api/feature.js +26 -24
  100. package/dist/lib/routes/admin-api/feature.js.map +1 -1
  101. package/dist/lib/routes/admin-api/index.js +2 -0
  102. package/dist/lib/routes/admin-api/index.js.map +1 -1
  103. package/dist/lib/routes/admin-api/metrics.js +25 -66
  104. package/dist/lib/routes/admin-api/metrics.js.map +1 -1
  105. package/dist/lib/routes/admin-api/project/environments.js +6 -15
  106. package/dist/lib/routes/admin-api/project/environments.js.map +1 -1
  107. package/dist/lib/routes/admin-api/project/features.d.ts +33 -11
  108. package/dist/lib/routes/admin-api/project/features.js +103 -35
  109. package/dist/lib/routes/admin-api/project/features.js.map +1 -1
  110. package/dist/lib/routes/admin-api/project/health-report.js +7 -18
  111. package/dist/lib/routes/admin-api/project/health-report.js.map +1 -1
  112. package/dist/lib/routes/admin-api/project/index.d.ts +3 -0
  113. package/dist/lib/routes/admin-api/project/index.js +8 -0
  114. package/dist/lib/routes/admin-api/project/index.js.map +1 -1
  115. package/dist/lib/routes/admin-api/state.d.ts +2 -1
  116. package/dist/lib/routes/admin-api/state.js +5 -4
  117. package/dist/lib/routes/admin-api/state.js.map +1 -1
  118. package/dist/lib/routes/admin-api/strategy.d.ts +1 -1
  119. package/dist/lib/routes/admin-api/strategy.js +24 -22
  120. package/dist/lib/routes/admin-api/strategy.js.map +1 -1
  121. package/dist/lib/routes/admin-api/tag-type.d.ts +4 -3
  122. package/dist/lib/routes/admin-api/tag-type.js +19 -50
  123. package/dist/lib/routes/admin-api/tag-type.js.map +1 -1
  124. package/dist/lib/routes/admin-api/tag.d.ts +3 -2
  125. package/dist/lib/routes/admin-api/tag.js +3 -4
  126. package/dist/lib/routes/admin-api/tag.js.map +1 -1
  127. package/dist/lib/routes/admin-api/user-admin.js +11 -37
  128. package/dist/lib/routes/admin-api/user-admin.js.map +1 -1
  129. package/dist/lib/routes/api-def.d.ts +49 -52
  130. package/dist/lib/routes/api-def.js +13 -9
  131. package/dist/lib/routes/api-def.js.map +1 -1
  132. package/dist/lib/routes/client-api/feature.d.ts +7 -8
  133. package/dist/lib/routes/client-api/feature.js +39 -27
  134. package/dist/lib/routes/client-api/feature.js.map +1 -1
  135. package/dist/lib/routes/client-api/feature.test.js +10 -10
  136. package/dist/lib/routes/client-api/feature.test.js.map +1 -1
  137. package/dist/lib/routes/client-api/metrics.d.ts +8 -3
  138. package/dist/lib/routes/client-api/metrics.js +28 -16
  139. package/dist/lib/routes/client-api/metrics.js.map +1 -1
  140. package/dist/lib/routes/client-api/metrics.test.js +27 -9
  141. package/dist/lib/routes/client-api/metrics.test.js.map +1 -1
  142. package/dist/lib/routes/client-api/register.d.ts +4 -2
  143. package/dist/lib/routes/client-api/register.js +16 -14
  144. package/dist/lib/routes/client-api/register.js.map +1 -1
  145. package/dist/lib/routes/controller.d.ts +1 -0
  146. package/dist/lib/routes/controller.js +3 -0
  147. package/dist/lib/routes/controller.js.map +1 -1
  148. package/dist/lib/routes/index.js +5 -5
  149. package/dist/lib/routes/index.js.map +1 -1
  150. package/dist/lib/routes/unleash-types.d.ts +1 -2
  151. package/dist/lib/routes/util.js +1 -0
  152. package/dist/lib/routes/util.js.map +1 -1
  153. package/dist/lib/schema/api-token-schema.d.ts +2 -0
  154. package/dist/lib/schema/api-token-schema.js +28 -0
  155. package/dist/lib/schema/api-token-schema.js.map +1 -0
  156. package/dist/lib/schema/feature-schema.test.js +17 -16
  157. package/dist/lib/schema/feature-schema.test.js.map +1 -1
  158. package/dist/lib/schema/project-schema.d.ts +2 -0
  159. package/dist/lib/schema/project-schema.js +12 -0
  160. package/dist/lib/schema/project-schema.js.map +1 -0
  161. package/dist/lib/server-impl.d.ts +2 -2
  162. package/dist/lib/server-impl.js +9 -6
  163. package/dist/lib/server-impl.js.map +1 -1
  164. package/dist/lib/server-impl.test.js +28 -21
  165. package/dist/lib/server-impl.test.js.map +1 -1
  166. package/dist/lib/services/access-service.d.ts +1 -1
  167. package/dist/lib/services/access-service.js.map +1 -1
  168. package/dist/lib/services/api-token-service.d.ts +3 -8
  169. package/dist/lib/services/api-token-service.js +43 -8
  170. package/dist/lib/services/api-token-service.js.map +1 -1
  171. package/dist/lib/services/client-metrics/client-metrics-schema.js +1 -0
  172. package/dist/lib/services/client-metrics/client-metrics-schema.js.map +1 -1
  173. package/dist/lib/services/client-metrics/client-metrics-service-v2.d.ts +16 -0
  174. package/dist/lib/services/client-metrics/client-metrics-service-v2.js +68 -0
  175. package/dist/lib/services/client-metrics/client-metrics-service-v2.js.map +1 -0
  176. package/dist/lib/services/client-metrics/index.d.ts +0 -1
  177. package/dist/lib/services/client-metrics/index.js +5 -3
  178. package/dist/lib/services/client-metrics/index.js.map +1 -1
  179. package/dist/lib/services/client-metrics/register-schema.js +1 -0
  180. package/dist/lib/services/client-metrics/register-schema.js.map +1 -1
  181. package/dist/lib/services/context-schema.d.ts +3 -3
  182. package/dist/lib/services/context-schema.js +15 -11
  183. package/dist/lib/services/context-schema.js.map +1 -1
  184. package/dist/lib/services/environment-service.d.ts +4 -5
  185. package/dist/lib/services/environment-service.js +14 -14
  186. package/dist/lib/services/environment-service.js.map +1 -1
  187. package/dist/lib/services/event-service.d.ts +1 -0
  188. package/dist/lib/services/event-service.js +4 -3
  189. package/dist/lib/services/event-service.js.map +1 -1
  190. package/dist/lib/services/feature-toggle-service-v2.d.ts +33 -12
  191. package/dist/lib/services/feature-toggle-service-v2.js +200 -55
  192. package/dist/lib/services/feature-toggle-service-v2.js.map +1 -1
  193. package/dist/lib/services/index.js +4 -1
  194. package/dist/lib/services/index.js.map +1 -1
  195. package/dist/lib/services/project-health-service.d.ts +3 -1
  196. package/dist/lib/services/project-health-service.js +7 -3
  197. package/dist/lib/services/project-health-service.js.map +1 -1
  198. package/dist/lib/services/project-schema.d.ts +2 -3
  199. package/dist/lib/services/project-schema.js +12 -7
  200. package/dist/lib/services/project-schema.js.map +1 -1
  201. package/dist/lib/services/project-service.d.ts +4 -2
  202. package/dist/lib/services/project-service.js +21 -11
  203. package/dist/lib/services/project-service.js.map +1 -1
  204. package/dist/lib/services/state-schema.d.ts +2 -0
  205. package/dist/lib/services/state-schema.js +16 -6
  206. package/dist/lib/services/state-schema.js.map +1 -1
  207. package/dist/lib/services/state-service.d.ts +7 -0
  208. package/dist/lib/services/state-service.js +69 -11
  209. package/dist/lib/services/state-service.js.map +1 -1
  210. package/dist/lib/services/state-service.test.js +72 -27
  211. package/dist/lib/services/state-service.test.js.map +1 -1
  212. package/dist/lib/services/state-util.js +1 -1
  213. package/dist/lib/services/state-util.js.map +1 -1
  214. package/dist/lib/types/api-user.d.ts +11 -4
  215. package/dist/lib/types/api-user.js +4 -1
  216. package/dist/lib/types/api-user.js.map +1 -1
  217. package/dist/lib/types/events.d.ts +7 -0
  218. package/dist/lib/types/events.js +9 -1
  219. package/dist/lib/types/events.js.map +1 -1
  220. package/dist/lib/types/model.d.ts +27 -8
  221. package/dist/lib/types/model.js.map +1 -1
  222. package/dist/lib/types/models/api-token.d.ts +19 -0
  223. package/dist/lib/types/models/api-token.js +10 -0
  224. package/dist/lib/types/models/api-token.js.map +1 -0
  225. package/dist/lib/types/models/metrics.d.ts +11 -0
  226. package/dist/lib/types/models/metrics.js +3 -0
  227. package/dist/lib/types/models/metrics.js.map +1 -0
  228. package/dist/lib/types/permissions.d.ts +2 -0
  229. package/dist/lib/types/permissions.js +3 -1
  230. package/dist/lib/types/permissions.js.map +1 -1
  231. package/dist/lib/types/services.d.ts +2 -0
  232. package/dist/lib/types/stores/api-token-store.d.ts +1 -14
  233. package/dist/lib/types/stores/api-token-store.js +0 -6
  234. package/dist/lib/types/stores/api-token-store.js.map +1 -1
  235. package/dist/lib/types/stores/client-instance-store.d.ts +1 -0
  236. package/dist/lib/types/stores/client-metrics-store-v2.d.ts +17 -0
  237. package/dist/lib/types/stores/client-metrics-store-v2.js +3 -0
  238. package/dist/lib/types/stores/client-metrics-store-v2.js.map +1 -0
  239. package/dist/lib/types/stores/environment-store.d.ts +6 -6
  240. package/dist/lib/types/stores/event-store.d.ts +1 -0
  241. package/dist/lib/types/stores/feature-environment-store.d.ts +9 -6
  242. package/dist/lib/types/stores/feature-strategies-store.d.ts +6 -12
  243. package/dist/lib/types/stores/feature-toggle-client-store.d.ts +5 -0
  244. package/dist/lib/types/stores/feature-toggle-client-store.js +3 -0
  245. package/dist/lib/types/stores/feature-toggle-client-store.js.map +1 -0
  246. package/dist/lib/types/stores/feature-toggle-store.d.ts +7 -14
  247. package/dist/lib/types/stores/project-store.d.ts +5 -2
  248. package/dist/lib/types/stores.d.ts +4 -0
  249. package/dist/lib/util/constants.d.ts +1 -0
  250. package/dist/lib/util/constants.js +2 -1
  251. package/dist/lib/util/constants.js.map +1 -1
  252. package/dist/lib/util/extract-user.d.ts +2 -0
  253. package/dist/lib/util/extract-user.js +8 -0
  254. package/dist/lib/util/extract-user.js.map +1 -0
  255. package/dist/lib/util/graceful-shutdown.js +1 -1
  256. package/dist/lib/util/graceful-shutdown.js.map +1 -1
  257. package/dist/lib/util/snakeCase.d.ts +6 -0
  258. package/dist/lib/util/snakeCase.js +28 -0
  259. package/dist/lib/util/snakeCase.js.map +1 -0
  260. package/dist/{test/e2e/api/admin/boostrap.test.d.ts → lib/util/snakeCase.test.d.ts} +0 -0
  261. package/dist/lib/util/snakeCase.test.js +23 -0
  262. package/dist/lib/util/snakeCase.test.js.map +1 -0
  263. package/dist/migrations/20210831072631-add-sort-order-and-type-to-env.d.ts +5 -0
  264. package/dist/migrations/20210831072631-add-sort-order-and-type-to-env.js +14 -0
  265. package/dist/migrations/20210831072631-add-sort-order-and-type-to-env.js.map +1 -0
  266. package/dist/migrations/20210907124058-add-dbcritic-indices.d.ts +5 -0
  267. package/dist/migrations/20210907124058-add-dbcritic-indices.js +30 -0
  268. package/dist/migrations/20210907124058-add-dbcritic-indices.js.map +1 -0
  269. package/dist/migrations/20210907124850-add-dbcritic-primary-keys.d.ts +5 -0
  270. package/dist/migrations/20210907124850-add-dbcritic-primary-keys.js +18 -0
  271. package/dist/migrations/20210907124850-add-dbcritic-primary-keys.js.map +1 -0
  272. package/dist/migrations/20210908100701-add-enabled-to-environments.d.ts +5 -0
  273. package/dist/migrations/20210908100701-add-enabled-to-environments.js +14 -0
  274. package/dist/migrations/20210908100701-add-enabled-to-environments.js.map +1 -0
  275. package/dist/migrations/20210909085651-add-protected-field-to-environments.d.ts +5 -0
  276. package/dist/migrations/20210909085651-add-protected-field-to-environments.js +15 -0
  277. package/dist/migrations/20210909085651-add-protected-field-to-environments.js.map +1 -0
  278. package/dist/migrations/20210913103159-api-keys-scoping.d.ts +2 -0
  279. package/dist/migrations/20210913103159-api-keys-scoping.js +13 -0
  280. package/dist/migrations/20210913103159-api-keys-scoping.js.map +1 -0
  281. package/dist/migrations/20210915122001-add-project-and-environment-columns-to-events.d.ts +2 -0
  282. package/dist/migrations/20210915122001-add-project-and-environment-columns-to-events.js +22 -0
  283. package/dist/migrations/20210915122001-add-project-and-environment-columns-to-events.js.map +1 -0
  284. package/dist/migrations/20210920104218-rename-global-env-to-default-env.d.ts +2 -0
  285. package/dist/migrations/20210920104218-rename-global-env-to-default-env.js +25 -0
  286. package/dist/migrations/20210920104218-rename-global-env-to-default-env.js.map +1 -0
  287. package/dist/migrations/20210921105032-client-api-tokens-default.d.ts +2 -0
  288. package/dist/migrations/20210921105032-client-api-tokens-default.js +13 -0
  289. package/dist/migrations/20210921105032-client-api-tokens-default.js.map +1 -0
  290. package/dist/migrations/20210922084509-add-non-null-constraint-to-environment-type.d.ts +2 -0
  291. package/dist/migrations/20210922084509-add-non-null-constraint-to-environment-type.js +10 -0
  292. package/dist/migrations/20210922084509-add-non-null-constraint-to-environment-type.js.map +1 -0
  293. package/dist/migrations/20210922120521-add-tag-type-permission.d.ts +2 -0
  294. package/dist/migrations/20210922120521-add-tag-type-permission.js +19 -0
  295. package/dist/migrations/20210922120521-add-tag-type-permission.js.map +1 -0
  296. package/dist/migrations/20210928065411-remove-displayname-from-environments.d.ts +2 -0
  297. package/dist/migrations/20210928065411-remove-displayname-from-environments.js +10 -0
  298. package/dist/migrations/20210928065411-remove-displayname-from-environments.js.map +1 -0
  299. package/dist/migrations/20210928080601-add-development-and-production-environments.d.ts +2 -0
  300. package/dist/migrations/20210928080601-add-development-and-production-environments.js +16 -0
  301. package/dist/migrations/20210928080601-add-development-and-production-environments.js.map +1 -0
  302. package/dist/migrations/20210928082228-connect-default-environment-to-all-existing-projects.d.ts +2 -0
  303. package/dist/migrations/20210928082228-connect-default-environment-to-all-existing-projects.js +16 -0
  304. package/dist/migrations/20210928082228-connect-default-environment-to-all-existing-projects.js.map +1 -0
  305. package/dist/migrations/20211004104917-client-metrics-env.d.ts +2 -0
  306. package/dist/migrations/20211004104917-client-metrics-env.js +22 -0
  307. package/dist/migrations/20211004104917-client-metrics-env.js.map +1 -0
  308. package/dist/migrations/20211011094226-add-environment-to-client-instances.d.ts +5 -0
  309. package/dist/migrations/20211011094226-add-environment-to-client-instances.js +21 -0
  310. package/dist/migrations/20211011094226-add-environment-to-client-instances.js.map +1 -0
  311. package/dist/migrator.d.ts +3 -4
  312. package/dist/migrator.js +19 -5
  313. package/dist/migrator.js.map +1 -1
  314. package/dist/server-dev.js +5 -0
  315. package/dist/server-dev.js.map +1 -1
  316. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js +4 -4
  317. package/dist/test/e2e/api/admin/api-token.auth.e2e.test.js.map +1 -1
  318. package/dist/test/e2e/api/admin/api-token.e2e.test.js +159 -10
  319. package/dist/test/e2e/api/admin/api-token.e2e.test.js.map +1 -1
  320. package/dist/test/e2e/api/admin/archive.test.js.map +1 -1
  321. package/dist/test/e2e/api/admin/{project/feature.strategy.e2e.test.d.ts → bootstrap.test.d.ts} +0 -0
  322. package/dist/test/e2e/api/admin/{boostrap.test.js → bootstrap.test.js} +2 -2
  323. package/dist/test/e2e/api/admin/bootstrap.test.js.map +1 -0
  324. package/dist/test/e2e/api/admin/client-metrics.e2e.test.d.ts +1 -0
  325. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js +219 -0
  326. package/dist/test/e2e/api/admin/client-metrics.e2e.test.js.map +1 -0
  327. package/dist/test/e2e/api/admin/environment.test.js +80 -53
  328. package/dist/test/e2e/api/admin/environment.test.js.map +1 -1
  329. package/dist/test/e2e/api/admin/event.e2e.test.js +28 -0
  330. package/dist/test/e2e/api/admin/event.e2e.test.js.map +1 -1
  331. package/dist/test/e2e/api/admin/feature.e2e.test.js +69 -63
  332. package/dist/test/e2e/api/admin/feature.e2e.test.js.map +1 -1
  333. package/dist/test/e2e/api/admin/project/environments.e2e.test.d.ts +1 -0
  334. package/dist/test/e2e/api/admin/project/environments.e2e.test.js +65 -0
  335. package/dist/test/e2e/api/admin/project/environments.e2e.test.js.map +1 -0
  336. package/dist/test/e2e/api/admin/project/features.e2e.test.d.ts +1 -0
  337. package/dist/test/e2e/api/admin/project/features.e2e.test.js +1267 -0
  338. package/dist/test/e2e/api/admin/project/features.e2e.test.js.map +1 -0
  339. package/dist/test/e2e/api/admin/project/project.health.e2e.test.js +76 -0
  340. package/dist/test/e2e/api/admin/project/project.health.e2e.test.js.map +1 -1
  341. package/dist/test/e2e/api/admin/project/projects.e2e.test.d.ts +1 -0
  342. package/dist/test/e2e/api/admin/project/projects.e2e.test.js +30 -0
  343. package/dist/test/e2e/api/admin/project/projects.e2e.test.js.map +1 -0
  344. package/dist/test/e2e/api/admin/state.e2e.test.js +161 -0
  345. package/dist/test/e2e/api/admin/state.e2e.test.js.map +1 -1
  346. package/dist/test/e2e/api/client/feature.e2e.test.js +83 -29
  347. package/dist/test/e2e/api/client/feature.e2e.test.js.map +1 -1
  348. package/dist/test/e2e/api/client/feature.env.disabled.e2e.test.d.ts +1 -0
  349. package/dist/test/e2e/api/client/feature.env.disabled.e2e.test.js +49 -0
  350. package/dist/test/e2e/api/client/feature.env.disabled.e2e.test.js.map +1 -0
  351. package/dist/test/e2e/api/client/feature.token.access.e2e.test.d.ts +1 -0
  352. package/dist/test/e2e/api/client/feature.token.access.e2e.test.js +156 -0
  353. package/dist/test/e2e/api/client/feature.token.access.e2e.test.js.map +1 -0
  354. package/dist/test/e2e/api/client/metrics.e2e.access.e2e.test.d.ts +1 -0
  355. package/dist/test/e2e/api/client/metrics.e2e.access.e2e.test.js +42 -0
  356. package/dist/test/e2e/api/client/metrics.e2e.access.e2e.test.js.map +1 -0
  357. package/dist/test/e2e/api/client/metrics.e2e.test.js +14 -13
  358. package/dist/test/e2e/api/client/metrics.e2e.test.js.map +1 -1
  359. package/dist/test/e2e/api/client/metricsV2.e2e.test.d.ts +1 -0
  360. package/dist/test/e2e/api/client/metricsV2.e2e.test.js +95 -0
  361. package/dist/test/e2e/api/client/metricsV2.e2e.test.js.map +1 -0
  362. package/dist/test/e2e/api/client/register.e2e.test.js +18 -14
  363. package/dist/test/e2e/api/client/register.e2e.test.js.map +1 -1
  364. package/dist/test/e2e/helpers/database-config.d.ts +1 -1
  365. package/dist/test/e2e/helpers/database-config.js +12 -8
  366. package/dist/test/e2e/helpers/database-config.js.map +1 -1
  367. package/dist/test/e2e/helpers/database-init.d.ts +7 -1
  368. package/dist/test/e2e/helpers/database-init.js +8 -7
  369. package/dist/test/e2e/helpers/database-init.js.map +1 -1
  370. package/dist/test/e2e/helpers/database.json +5 -2
  371. package/dist/test/e2e/helpers/test-helper.d.ts +1 -1
  372. package/dist/test/e2e/helpers/test-helper.js +4 -5
  373. package/dist/test/e2e/helpers/test-helper.js.map +1 -1
  374. package/dist/test/e2e/services/api-token-service.e2e.test.js +28 -15
  375. package/dist/test/e2e/services/api-token-service.e2e.test.js.map +1 -1
  376. package/dist/test/e2e/services/environment-service.test.js +36 -38
  377. package/dist/test/e2e/services/environment-service.test.js.map +1 -1
  378. package/dist/test/e2e/services/feature-toggle-service-v2.e2e.test.js +17 -11
  379. package/dist/test/e2e/services/feature-toggle-service-v2.e2e.test.js.map +1 -1
  380. package/dist/test/e2e/services/project-health-service.e2e.test.js +10 -10
  381. package/dist/test/e2e/services/project-health-service.e2e.test.js.map +1 -1
  382. package/dist/test/e2e/services/project-service.e2e.test.js +25 -2
  383. package/dist/test/e2e/services/project-service.e2e.test.js.map +1 -1
  384. package/dist/test/e2e/stores/client-metrics-store-v2.e2e.test.d.ts +1 -0
  385. package/dist/test/e2e/stores/client-metrics-store-v2.e2e.test.js +338 -0
  386. package/dist/test/e2e/stores/client-metrics-store-v2.e2e.test.js.map +1 -0
  387. package/dist/test/e2e/stores/feature-tag-store.e2e.test.js +3 -3
  388. package/dist/test/e2e/stores/feature-tag-store.e2e.test.js.map +1 -1
  389. package/dist/test/e2e/stores/project-store.e2e.test.js +4 -1
  390. package/dist/test/e2e/stores/project-store.e2e.test.js.map +1 -1
  391. package/dist/test/e2e/stores/user-feedback-store.e2e.test.js +1 -1
  392. package/dist/test/e2e/stores/user-feedback-store.e2e.test.js.map +1 -1
  393. package/dist/test/fixtures/fake-api-token-store.d.ts +2 -1
  394. package/dist/test/fixtures/fake-api-token-store.js.map +1 -1
  395. package/dist/test/fixtures/fake-client-metrics-store-v2.d.ts +20 -0
  396. package/dist/test/fixtures/fake-client-metrics-store-v2.js +52 -0
  397. package/dist/test/fixtures/fake-client-metrics-store-v2.js.map +1 -0
  398. package/dist/test/fixtures/fake-environment-store.d.ts +5 -3
  399. package/dist/test/fixtures/fake-environment-store.js +22 -15
  400. package/dist/test/fixtures/fake-environment-store.js.map +1 -1
  401. package/dist/test/fixtures/fake-event-store.d.ts +1 -0
  402. package/dist/test/fixtures/fake-event-store.js +3 -0
  403. package/dist/test/fixtures/fake-event-store.js.map +1 -1
  404. package/dist/test/fixtures/fake-feature-environment-store.d.ts +8 -5
  405. package/dist/test/fixtures/fake-feature-environment-store.js +38 -10
  406. package/dist/test/fixtures/fake-feature-environment-store.js.map +1 -1
  407. package/dist/test/fixtures/fake-feature-strategies-store.d.ts +7 -13
  408. package/dist/test/fixtures/fake-feature-strategies-store.js +13 -50
  409. package/dist/test/fixtures/fake-feature-strategies-store.js.map +1 -1
  410. package/dist/test/fixtures/fake-feature-toggle-client-store.d.ts +9 -0
  411. package/dist/test/fixtures/fake-feature-toggle-client-store.js +50 -0
  412. package/dist/test/fixtures/fake-feature-toggle-client-store.js.map +1 -0
  413. package/dist/test/fixtures/fake-feature-toggle-store.d.ts +7 -9
  414. package/dist/test/fixtures/fake-feature-toggle-store.js +7 -14
  415. package/dist/test/fixtures/fake-feature-toggle-store.js.map +1 -1
  416. package/dist/test/fixtures/fake-project-store.d.ts +1 -2
  417. package/dist/test/fixtures/fake-project-store.js +0 -7
  418. package/dist/test/fixtures/fake-project-store.js.map +1 -1
  419. package/dist/test/fixtures/permissions.d.ts +3 -3
  420. package/dist/test/fixtures/permissions.js +5 -4
  421. package/dist/test/fixtures/permissions.js.map +1 -1
  422. package/dist/test/fixtures/store.js +4 -0
  423. package/dist/test/fixtures/store.js.map +1 -1
  424. package/package.json +52 -45
  425. package/dist/lib/extract-user.d.ts +0 -2
  426. package/dist/lib/extract-user.js +0 -6
  427. package/dist/lib/extract-user.js.map +0 -1
  428. package/dist/test/e2e/api/admin/boostrap.test.js.map +0 -1
  429. package/dist/test/e2e/api/admin/project/feature.strategy.e2e.test.js +0 -516
  430. package/dist/test/e2e/api/admin/project/feature.strategy.e2e.test.js.map +0 -1
  431. package/docs/api/oas/swagger-ui-bundle.js +0 -3
  432. package/docs/api/oas/swagger-ui-bundle.js.map +0 -1
  433. package/docs/api/oas/swagger-ui-es-bundle-core.js +0 -3
  434. package/docs/api/oas/swagger-ui-es-bundle-core.js.map +0 -1
  435. package/docs/api/oas/swagger-ui-es-bundle.js +0 -3
  436. package/docs/api/oas/swagger-ui-es-bundle.js.map +0 -1
  437. package/docs/api/oas/swagger-ui-standalone-preset.js +0 -3
  438. package/docs/api/oas/swagger-ui-standalone-preset.js.map +0 -1
  439. package/docs/api/oas/swagger-ui.css +0 -8906
  440. package/docs/api/oas/swagger-ui.css.map +0 -1
  441. package/docs/api/oas/swagger-ui.js +0 -3
  442. package/docs/api/oas/swagger-ui.js.map +0 -1
  443. package/docs/api/oas/swagger.json +0 -1479
@@ -1,516 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const database_init_1 = __importDefault(require("../../../helpers/database-init"));
7
- const test_helper_1 = require("../../../helpers/test-helper");
8
- const no_logger_1 = __importDefault(require("../../../../fixtures/no-logger"));
9
- let app;
10
- let db;
11
- beforeAll(async () => {
12
- db = await database_init_1.default('feature_strategy_api_serial', no_logger_1.default);
13
- app = await test_helper_1.setupApp(db.stores);
14
- });
15
- afterAll(async () => {
16
- await app.destroy();
17
- await db.destroy();
18
- });
19
- test('Trying to add a strategy configuration to environment not connected to toggle should fail', async () => {
20
- await app.request
21
- .post('/api/admin/features')
22
- .send({
23
- name: 'com.test.feature',
24
- enabled: false,
25
- strategies: [{ name: 'default' }],
26
- })
27
- .set('Content-Type', 'application/json')
28
- .expect(201)
29
- .expect((res) => {
30
- expect(res.body.name).toBe('com.test.feature');
31
- expect(res.body.createdAt).toBeTruthy();
32
- });
33
- return app.request
34
- .post('/api/admin/projects/default/features/com.test.feature/environments/dev/strategies')
35
- .send({
36
- name: 'default',
37
- parameters: {
38
- userId: '14',
39
- },
40
- })
41
- .expect(400)
42
- .expect((r) => {
43
- expect(r.body.details[0].message).toBe('You have not added the current environment to the project');
44
- });
45
- });
46
- test('Can get project overview', async () => {
47
- await app.request
48
- .post('/api/admin/features')
49
- .send({
50
- name: 'project-overview',
51
- enabled: false,
52
- strategies: [{ name: 'default' }],
53
- })
54
- .set('Content-Type', 'application/json')
55
- .expect(201)
56
- .expect((res) => {
57
- expect(res.body.name).toBe('project-overview');
58
- expect(res.body.createdAt).toBeTruthy();
59
- });
60
- await app.request
61
- .get('/api/admin/projects/default')
62
- .expect(200)
63
- .expect((r) => {
64
- expect(r.body.name).toBe('Default');
65
- expect(r.body.features).toHaveLength(2);
66
- expect(r.body.members).toBe(0);
67
- });
68
- });
69
- test('Can get features for project', async () => {
70
- await app.request
71
- .post('/api/admin/projects/default/features')
72
- .send({
73
- name: 'features-for-project',
74
- })
75
- .set('Content-Type', 'application/json')
76
- .expect(201)
77
- .expect((res) => {
78
- expect(res.body.name).toBe('features-for-project');
79
- expect(res.body.createdAt).toBeTruthy();
80
- });
81
- await app.request
82
- .get('/api/admin/projects/default/features')
83
- .expect(200)
84
- .expect((res) => {
85
- expect(res.body.version).toBeTruthy();
86
- expect(res.body.features.some((feature) => feature.name === 'features-for-project')).toBeTruthy();
87
- });
88
- });
89
- test('Project overview includes environment connected to feature', async () => {
90
- await app.request
91
- .post('/api/admin/features')
92
- .send({
93
- name: 'com.test.environment',
94
- enabled: false,
95
- strategies: [{ name: 'default' }],
96
- })
97
- .set('Content-Type', 'application/json')
98
- .expect(201)
99
- .expect((res) => {
100
- expect(res.body.name).toBe('com.test.environment');
101
- expect(res.body.createdAt).toBeTruthy();
102
- });
103
- await app.request
104
- .post('/api/admin/environments')
105
- .send({ name: 'project-overview', displayName: 'Project Overview' })
106
- .set('Content-Type', 'application/json')
107
- .expect(201);
108
- await app.request
109
- .post('/api/admin/projects/default/environments')
110
- .send({ environment: 'project-overview' })
111
- .expect(200);
112
- return app.request
113
- .get('/api/admin/projects/default')
114
- .expect(200)
115
- .expect((r) => {
116
- expect(r.body.features[0].environments[0].name).toBe(':global:');
117
- expect(r.body.features[0].environments[1].name).toBe('project-overview');
118
- });
119
- });
120
- test('Disconnecting environment from project, removes environment from features in project overview', async () => {
121
- await app.request
122
- .post('/api/admin/features')
123
- .send({
124
- name: 'com.test.disconnect.environment',
125
- enabled: false,
126
- strategies: [{ name: 'default' }],
127
- })
128
- .set('Content-Type', 'application/json')
129
- .expect(201)
130
- .expect((res) => {
131
- expect(res.body.name).toBe('com.test.disconnect.environment');
132
- expect(res.body.createdAt).toBeTruthy();
133
- });
134
- await app.request
135
- .post('/api/admin/environments')
136
- .send({ name: 'dis-project-overview', displayName: 'Project Overview' })
137
- .set('Content-Type', 'application/json')
138
- .expect(201);
139
- await app.request
140
- .post('/api/admin/projects/default/environments')
141
- .send({ environment: 'dis-project-overview' })
142
- .expect(200);
143
- await app.request
144
- .delete('/api/admin/projects/default/environments/dis-project-overview')
145
- .expect(200);
146
- return app.request
147
- .get('/api/admin/projects/default')
148
- .expect(200)
149
- .expect((r) => {
150
- expect(r.body.features.some((e) => e.environment === 'dis-project-overview')).toBeFalsy();
151
- });
152
- });
153
- test('Can enable/disable environment for feature', async () => {
154
- const envName = 'enable-feature-environment';
155
- // Create environment
156
- await app.request
157
- .post('/api/admin/environments')
158
- .send({
159
- name: envName,
160
- displayName: 'Enable feature for environment',
161
- })
162
- .set('Content-Type', 'application/json')
163
- .expect(201);
164
- // Connect environment to project
165
- await app.request
166
- .post('/api/admin/projects/default/environments')
167
- .send({
168
- environment: envName,
169
- })
170
- .expect(200);
171
- // Create feature
172
- await app.request
173
- .post('/api/admin/projects/default/features')
174
- .send({
175
- name: 'com.test.enable.environment',
176
- strategies: [{ name: 'default' }],
177
- })
178
- .set('Content-Type', 'application/json')
179
- .expect(201)
180
- .expect((res) => {
181
- expect(res.body.name).toBe('com.test.enable.environment');
182
- expect(res.body.createdAt).toBeTruthy();
183
- });
184
- await app.request
185
- .post('/api/admin/projects/default/features/com.test.enable.environment/environments/enable-feature-environment/on')
186
- .send({})
187
- .expect(200);
188
- await app.request
189
- .get('/api/admin/projects/default/features/com.test.enable.environment')
190
- .expect(200)
191
- .expect('Content-Type', /json/)
192
- .expect((res) => {
193
- const enabledFeatureEnv = res.body.environments.find((e) => e.name === 'enable-feature-environment');
194
- expect(enabledFeatureEnv).toBeTruthy();
195
- expect(enabledFeatureEnv.enabled).toBe(true);
196
- });
197
- await app.request
198
- .post('/api/admin/projects/default/features/com.test.enable.environment/environments/enable-feature-environment/off')
199
- .send({})
200
- .expect(200);
201
- await app.request
202
- .get('/api/admin/projects/default/features/com.test.enable.environment')
203
- .expect(200)
204
- .expect('Content-Type', /json/)
205
- .expect((res) => {
206
- const disabledFeatureEnv = res.body.environments.find((e) => e.name === 'enable-feature-environment');
207
- expect(disabledFeatureEnv).toBeTruthy();
208
- expect(disabledFeatureEnv.enabled).toBe(false);
209
- });
210
- });
211
- test("Trying to get a project that doesn't exist yields 404", async () => {
212
- await app.request.get('/api/admin/projects/nonexisting').expect(404);
213
- });
214
- test('Trying to get features for non-existing project also yields 404', async () => {
215
- await app.request
216
- .get('/api/admin/projects/nonexisting/features')
217
- .expect(200)
218
- .expect((res) => {
219
- expect(res.body.features).toHaveLength(0);
220
- });
221
- });
222
- test('Can use new project feature toggle endpoint to create feature toggle without strategies', async () => {
223
- await app.request
224
- .post('/api/admin/projects/default/features')
225
- .send({
226
- name: 'new.toggle.without.strategy',
227
- })
228
- .expect(201)
229
- .expect((res) => {
230
- expect(res.body.project).toBe('default');
231
- });
232
- });
233
- test('Still validates feature toggle input when creating', async () => {
234
- await app.request
235
- .post('/api/admin/projects/default/features')
236
- .send({
237
- name: 'Some invalid name',
238
- })
239
- .expect(400);
240
- });
241
- test('Trying to create toggle that already exists yield 409 error', async () => {
242
- await app.request
243
- .post('/api/admin/projects/default/features')
244
- .send({
245
- name: 'already.exists.test',
246
- })
247
- .expect(201)
248
- .expect((res) => {
249
- expect(res.body.project).toBe('default');
250
- });
251
- await app.request
252
- .post('/api/admin/projects/default/features')
253
- .send({
254
- name: 'already.exists.test',
255
- })
256
- .expect(409);
257
- });
258
- test('Trying to create toggle under project that does not exist should fail', async () => {
259
- await app.request
260
- .post('/api/admin/projects/non-existing-secondary/features')
261
- .send({
262
- name: 'project.does.not.exist',
263
- })
264
- .expect(404);
265
- });
266
- test('Can get environment info for feature toggle', async () => {
267
- const envName = 'environment-info';
268
- // Create environment
269
- await app.request
270
- .post('/api/admin/environments')
271
- .send({
272
- name: envName,
273
- displayName: 'Enable feature for environment',
274
- })
275
- .set('Content-Type', 'application/json')
276
- .expect(201);
277
- // Connect environment to project
278
- await app.request
279
- .post('/api/admin/projects/default/environments')
280
- .send({
281
- environment: envName,
282
- })
283
- .expect(200);
284
- await app.request
285
- .post('/api/admin/projects/default/features')
286
- .send({ name: 'environment.info' })
287
- .expect(201);
288
- await app.request
289
- .get(`/api/admin/projects/default/features/environment.info/environments/${envName}`)
290
- .expect(200)
291
- .expect((res) => {
292
- expect(res.body.enabled).toBe(false);
293
- expect(res.body.environment).toBe(envName);
294
- expect(res.body.strategies).toHaveLength(0);
295
- });
296
- });
297
- test('Getting environment info for environment that does not exist yields 404', async () => {
298
- await app.request
299
- .post('/api/admin/projects/default/features')
300
- .send({ name: 'non.existing.env' })
301
- .expect(201);
302
- await app.request
303
- .get('/api/admin/projects/default/features/non.existing.env/environments/non.existing.environment')
304
- .expect(404);
305
- });
306
- test('Trying to toggle environment that does not exist yields 404', async () => {
307
- await app.request
308
- .post('/api/admin/projects/default/features')
309
- .send({ name: 'toggle.env' })
310
- .expect(201);
311
- await app.request
312
- .post('/api/admin/projects/default/features/toggle.env/environments/does-not-exist/on')
313
- .send({})
314
- .expect(404);
315
- await app.request
316
- .post('/api/admin/projects/default/features/toggle.env/environments/does-not-exist/off')
317
- .send({})
318
- .expect(404);
319
- });
320
- test('Getting feature that does not exist should yield 404', async () => {
321
- await app.request
322
- .get('/api/admin/projects/default/features/non.existing.feature')
323
- .expect(404);
324
- });
325
- test('Can add strategy to feature toggle', async () => {
326
- const envName = 'add-strategy';
327
- // Create environment
328
- await app.request
329
- .post('/api/admin/environments')
330
- .send({
331
- name: envName,
332
- displayName: 'Enable feature for environment',
333
- })
334
- .set('Content-Type', 'application/json')
335
- .expect(201);
336
- // Connect environment to project
337
- await app.request
338
- .post('/api/admin/projects/default/environments')
339
- .send({
340
- environment: envName,
341
- })
342
- .expect(200);
343
- const featureName = 'feature.strategy.toggle';
344
- await app.request
345
- .post('/api/admin/projects/default/features')
346
- .send({ name: featureName })
347
- .expect(201);
348
- await app.request
349
- .post(`/api/admin/projects/default/features/${featureName}/environments/${envName}/strategies`)
350
- .send({
351
- name: 'default',
352
- parameters: {
353
- userId: 'string',
354
- },
355
- })
356
- .expect(200);
357
- await app.request
358
- .get(`/api/admin/projects/default/features/${featureName}`)
359
- .expect((res) => {
360
- expect(res.body.environments[0].strategies).toHaveLength(1);
361
- });
362
- });
363
- test('Can get strategies for feature and environment', async () => {
364
- const envName = 'get-strategy';
365
- // Create environment
366
- await app.request
367
- .post('/api/admin/environments')
368
- .send({
369
- name: envName,
370
- displayName: 'Enable feature for environment',
371
- })
372
- .set('Content-Type', 'application/json')
373
- .expect(201);
374
- // Connect environment to project
375
- await app.request
376
- .post('/api/admin/projects/default/environments')
377
- .send({
378
- environment: envName,
379
- })
380
- .expect(200);
381
- const featureName = 'feature.get.strategies';
382
- await app.request
383
- .post('/api/admin/projects/default/features')
384
- .send({ name: featureName })
385
- .expect(201);
386
- await app.request
387
- .post(`/api/admin/projects/default/features/${featureName}/environments/${envName}/strategies`)
388
- .send({
389
- name: 'default',
390
- parameters: {
391
- userId: 'string',
392
- },
393
- })
394
- .expect(200);
395
- await app.request
396
- .get(`/api/admin/projects/default/features/${featureName}/environments/${envName}/strategies`)
397
- .expect(200)
398
- .expect((res) => {
399
- expect(res.body).toHaveLength(1);
400
- expect(res.body[0].parameters.userId).toBe('string');
401
- });
402
- });
403
- test('Getting strategies for environment that does not exist yields 404', async () => {
404
- const featureName = 'feature.get.strategies.for.nonexisting';
405
- await app.request
406
- .post('/api/admin/projects/default/features')
407
- .send({ name: featureName })
408
- .expect(201);
409
- await app.request
410
- .get(`/api/admin/projects/default/features/${featureName}/environments/should.not.exist/strategies`)
411
- .expect(404);
412
- });
413
- test('Can update a strategy based on id', async () => {
414
- const envName = 'feature.update.strategies';
415
- // Create environment
416
- await app.request
417
- .post('/api/admin/environments')
418
- .send({
419
- name: envName,
420
- displayName: 'Enable feature for environment',
421
- })
422
- .set('Content-Type', 'application/json')
423
- .expect(201);
424
- // Connect environment to project
425
- await app.request
426
- .post('/api/admin/projects/default/environments')
427
- .send({
428
- environment: envName,
429
- })
430
- .expect(200);
431
- const featureName = 'feature.update.strategies';
432
- await app.request
433
- .post('/api/admin/projects/default/features')
434
- .send({ name: featureName })
435
- .expect(201);
436
- let strategy;
437
- await app.request
438
- .post(`/api/admin/projects/default/features/${featureName}/environments/${envName}/strategies`)
439
- .send({
440
- name: 'default',
441
- parameters: {
442
- userId: 'string',
443
- },
444
- })
445
- .expect(200)
446
- .expect((res) => {
447
- strategy = res.body;
448
- });
449
- await app.request
450
- .put(`/api/admin/projects/default/features/${featureName}/environments/${envName}/strategies/${strategy.id}`)
451
- .send({ parameters: { userId: 'string', companyId: 'string' } })
452
- .expect(200);
453
- await app.request
454
- .get(`/api/admin/projects/default/features/${featureName}/environments/${envName}/strategies/${strategy.id}`)
455
- .expect(200)
456
- .expect((res) => {
457
- expect(res.body.parameters.companyId).toBeTruthy();
458
- expect(res.body.parameters.userId).toBeTruthy();
459
- });
460
- });
461
- test('Trying to update a non existing feature strategy should yield 404', async () => {
462
- const envName = 'feature.non.existing.strategy';
463
- // Create environment
464
- await app.request
465
- .post('/api/admin/environments')
466
- .send({
467
- name: envName,
468
- displayName: 'Enable feature for environment',
469
- })
470
- .set('Content-Type', 'application/json')
471
- .expect(201);
472
- // Connect environment to project
473
- await app.request
474
- .post('/api/admin/projects/default/environments')
475
- .send({
476
- environment: envName,
477
- })
478
- .expect(200);
479
- const featureName = 'feature.non.existing.strategy';
480
- await app.request
481
- .post('/api/admin/projects/default/features')
482
- .send({ name: featureName })
483
- .expect(201);
484
- await app.request
485
- .put(`/api/admin/projects/default/features/${featureName}/environments/${envName}/strategies/some-non-existing-id`)
486
- .send({ parameters: { fancyField: 'string' } })
487
- .expect(404);
488
- });
489
- test('Trying to get a non existing feature strategy should yield 404', async () => {
490
- const envName = 'feature.non.existing.strategy.get';
491
- // Create environment
492
- await app.request
493
- .post('/api/admin/environments')
494
- .send({
495
- name: envName,
496
- displayName: 'Enable feature for environment',
497
- })
498
- .set('Content-Type', 'application/json')
499
- .expect(201);
500
- // Connect environment to project
501
- await app.request
502
- .post('/api/admin/projects/default/environments')
503
- .send({
504
- environment: envName,
505
- })
506
- .expect(200);
507
- const featureName = 'feature.non.existing.strategy.get';
508
- await app.request
509
- .post('/api/admin/projects/default/features')
510
- .send({ name: featureName })
511
- .expect(201);
512
- await app.request
513
- .get(`/api/admin/projects/default/features/${featureName}/environments/${envName}/strategies/some-non-existing-id`)
514
- .expect(404);
515
- });
516
- //# sourceMappingURL=feature.strategy.e2e.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature.strategy.e2e.test.js","sourceRoot":"","sources":["../../../../../../src/test/e2e/api/admin/project/feature.strategy.e2e.test.ts"],"names":[],"mappings":"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"}