@webda/core 2.0.0-beta.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. package/lib/application.d.ts +9 -21
  2. package/lib/application.js +71 -84
  3. package/lib/application.js.map +1 -1
  4. package/lib/application.spec.js +121 -140
  5. package/lib/application.spec.js.map +1 -1
  6. package/lib/core.d.ts +86 -46
  7. package/lib/core.js +254 -316
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +326 -391
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +49 -45
  12. package/lib/index.js +54 -67
  13. package/lib/index.js.map +1 -1
  14. package/lib/models/aclmodel.d.ts +2 -2
  15. package/lib/models/aclmodel.js +63 -90
  16. package/lib/models/aclmodel.js.map +1 -1
  17. package/lib/models/aclmodel.spec.js +127 -151
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +84 -11
  20. package/lib/models/coremodel.js +104 -103
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +91 -91
  23. package/lib/models/coremodel.spec.js.map +1 -1
  24. package/lib/models/deployment.js +1 -2
  25. package/lib/models/ident.d.ts +5 -3
  26. package/lib/models/ident.js +4 -9
  27. package/lib/models/ident.js.map +1 -1
  28. package/lib/models/ident.spec.js +9 -11
  29. package/lib/models/ident.spec.js.map +1 -1
  30. package/lib/models/ownermodel.d.ts +12 -2
  31. package/lib/models/ownermodel.js +54 -62
  32. package/lib/models/ownermodel.js.map +1 -1
  33. package/lib/models/ownermodel.spec.js +129 -152
  34. package/lib/models/ownermodel.spec.js.map +1 -1
  35. package/lib/models/rolemodel.d.ts +2 -2
  36. package/lib/models/rolemodel.js +24 -40
  37. package/lib/models/rolemodel.js.map +1 -1
  38. package/lib/models/rolemodel.spec.js +44 -61
  39. package/lib/models/rolemodel.spec.js.map +1 -1
  40. package/lib/models/user.d.ts +5 -5
  41. package/lib/models/user.js +3 -8
  42. package/lib/models/user.js.map +1 -1
  43. package/lib/models/user.spec.js +14 -16
  44. package/lib/models/user.spec.js.map +1 -1
  45. package/lib/queues/filequeue.d.ts +2 -2
  46. package/lib/queues/filequeue.js +72 -93
  47. package/lib/queues/filequeue.js.map +1 -1
  48. package/lib/queues/filequeue.spec.js +53 -70
  49. package/lib/queues/filequeue.spec.js.map +1 -1
  50. package/lib/queues/memoryqueue.d.ts +2 -2
  51. package/lib/queues/memoryqueue.js +37 -61
  52. package/lib/queues/memoryqueue.js.map +1 -1
  53. package/lib/queues/memoryqueue.spec.js +142 -165
  54. package/lib/queues/memoryqueue.spec.js.map +1 -1
  55. package/lib/queues/pubsubservice.d.ts +2 -2
  56. package/lib/queues/pubsubservice.js +3 -7
  57. package/lib/queues/pubsubservice.js.map +1 -1
  58. package/lib/queues/queue.spec.d.ts +1 -1
  59. package/lib/queues/queue.spec.js +42 -56
  60. package/lib/queues/queue.spec.js.map +1 -1
  61. package/lib/queues/queueservice.d.ts +4 -4
  62. package/lib/queues/queueservice.js +52 -67
  63. package/lib/queues/queueservice.js.map +1 -1
  64. package/lib/router.d.ts +7 -3
  65. package/lib/router.js +49 -48
  66. package/lib/router.js.map +1 -1
  67. package/lib/router.spec.js +64 -61
  68. package/lib/router.spec.js.map +1 -1
  69. package/lib/services/asyncevents.d.ts +2 -2
  70. package/lib/services/asyncevents.js +44 -64
  71. package/lib/services/asyncevents.js.map +1 -1
  72. package/lib/services/asyncevents.spec.js +81 -98
  73. package/lib/services/asyncevents.spec.js.map +1 -1
  74. package/lib/services/authentication.d.ts +28 -19
  75. package/lib/services/authentication.js +539 -571
  76. package/lib/services/authentication.js.map +1 -1
  77. package/lib/services/authentication.spec.js +411 -447
  78. package/lib/services/authentication.spec.js.map +1 -1
  79. package/lib/services/binary.d.ts +8 -6
  80. package/lib/services/binary.js +212 -244
  81. package/lib/services/binary.js.map +1 -1
  82. package/lib/services/binary.spec.d.ts +3 -3
  83. package/lib/services/binary.spec.js +390 -443
  84. package/lib/services/binary.spec.js.map +1 -1
  85. package/lib/services/cloudbinary.d.ts +3 -3
  86. package/lib/services/cloudbinary.js +46 -71
  87. package/lib/services/cloudbinary.js.map +1 -1
  88. package/lib/services/cloudbinary.spec.d.ts +3 -3
  89. package/lib/services/cloudbinary.spec.js +133 -162
  90. package/lib/services/cloudbinary.spec.js.map +1 -1
  91. package/lib/services/configuration.d.ts +6 -3
  92. package/lib/services/configuration.js +78 -103
  93. package/lib/services/configuration.js.map +1 -1
  94. package/lib/services/configuration.spec.js +63 -83
  95. package/lib/services/configuration.spec.js.map +1 -1
  96. package/lib/services/cron.d.ts +3 -2
  97. package/lib/services/cron.js +9 -13
  98. package/lib/services/cron.js.map +1 -1
  99. package/lib/services/cron.spec.js +18 -21
  100. package/lib/services/cron.spec.js.map +1 -1
  101. package/lib/services/cryptoservice.d.ts +258 -0
  102. package/lib/services/cryptoservice.js +312 -0
  103. package/lib/services/cryptoservice.js.map +1 -0
  104. package/lib/services/cryptoservice.spec.d.ts +1 -0
  105. package/lib/services/cryptoservice.spec.js +137 -0
  106. package/lib/services/cryptoservice.spec.js.map +1 -0
  107. package/lib/services/debugmailer.d.ts +1 -1
  108. package/lib/services/debugmailer.js +13 -34
  109. package/lib/services/debugmailer.js.map +1 -1
  110. package/lib/services/debugmailer.spec.js +16 -29
  111. package/lib/services/debugmailer.spec.js.map +1 -1
  112. package/lib/services/echo.d.ts +2 -2
  113. package/lib/services/echo.js +15 -31
  114. package/lib/services/echo.js.map +1 -1
  115. package/lib/services/echo.spec.js +27 -40
  116. package/lib/services/echo.spec.js.map +1 -1
  117. package/lib/services/filebinary.d.ts +15 -5
  118. package/lib/services/filebinary.js +171 -200
  119. package/lib/services/filebinary.js.map +1 -1
  120. package/lib/services/filebinary.spec.d.ts +2 -1
  121. package/lib/services/filebinary.spec.js +106 -117
  122. package/lib/services/filebinary.spec.js.map +1 -1
  123. package/lib/services/fileconfiguration.d.ts +2 -2
  124. package/lib/services/fileconfiguration.js +25 -43
  125. package/lib/services/fileconfiguration.js.map +1 -1
  126. package/lib/services/fileconfiguration.spec.js +79 -109
  127. package/lib/services/fileconfiguration.spec.js.map +1 -1
  128. package/lib/services/invitationservice.d.ts +9 -9
  129. package/lib/services/invitationservice.js +275 -313
  130. package/lib/services/invitationservice.js.map +1 -1
  131. package/lib/services/invitationservice.spec.js +442 -448
  132. package/lib/services/invitationservice.spec.js.map +1 -1
  133. package/lib/services/kubernetesconfiguration.d.ts +2 -2
  134. package/lib/services/kubernetesconfiguration.js +41 -59
  135. package/lib/services/kubernetesconfiguration.js.map +1 -1
  136. package/lib/services/kubernetesconfiguration.spec.js +80 -98
  137. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  138. package/lib/services/mailer.d.ts +4 -4
  139. package/lib/services/mailer.js +62 -86
  140. package/lib/services/mailer.js.map +1 -1
  141. package/lib/services/mailer.spec.js +86 -127
  142. package/lib/services/mailer.spec.js.map +1 -1
  143. package/lib/services/notificationservice.d.ts +4 -4
  144. package/lib/services/notificationservice.js +23 -42
  145. package/lib/services/notificationservice.js.map +1 -1
  146. package/lib/services/notificationservice.spec.js +47 -73
  147. package/lib/services/notificationservice.spec.js.map +1 -1
  148. package/lib/services/oauth.d.ts +32 -6
  149. package/lib/services/oauth.js +73 -78
  150. package/lib/services/oauth.js.map +1 -1
  151. package/lib/services/oauth.spec.js +128 -147
  152. package/lib/services/oauth.spec.js.map +1 -1
  153. package/lib/services/proxy.d.ts +74 -0
  154. package/lib/services/proxy.js +126 -0
  155. package/lib/services/proxy.js.map +1 -0
  156. package/lib/services/proxy.spec.d.ts +1 -0
  157. package/lib/services/proxy.spec.js +59 -0
  158. package/lib/services/proxy.spec.js.map +1 -0
  159. package/lib/services/resource.d.ts +2 -2
  160. package/lib/services/resource.js +12 -18
  161. package/lib/services/resource.js.map +1 -1
  162. package/lib/services/resource.spec.js +67 -99
  163. package/lib/services/resource.spec.js.map +1 -1
  164. package/lib/services/service.d.ts +33 -7
  165. package/lib/services/service.js +74 -42
  166. package/lib/services/service.js.map +1 -1
  167. package/lib/services/service.spec.js +62 -67
  168. package/lib/services/service.spec.js.map +1 -1
  169. package/lib/services/version.d.ts +1 -1
  170. package/lib/services/version.js +3 -8
  171. package/lib/services/version.js.map +1 -1
  172. package/lib/services/version.spec.js +11 -24
  173. package/lib/services/version.spec.js.map +1 -1
  174. package/lib/stores/aggregator.d.ts +3 -3
  175. package/lib/stores/aggregator.js +37 -57
  176. package/lib/stores/aggregator.js.map +1 -1
  177. package/lib/stores/file.d.ts +3 -3
  178. package/lib/stores/file.js +93 -131
  179. package/lib/stores/file.js.map +1 -1
  180. package/lib/stores/file.spec.d.ts +2 -2
  181. package/lib/stores/file.spec.js +261 -289
  182. package/lib/stores/file.spec.js.map +1 -1
  183. package/lib/stores/mapper.d.ts +4 -4
  184. package/lib/stores/mapper.js +112 -137
  185. package/lib/stores/mapper.js.map +1 -1
  186. package/lib/stores/mapper.spec.js +131 -150
  187. package/lib/stores/mapper.spec.js.map +1 -1
  188. package/lib/stores/memory.d.ts +67 -6
  189. package/lib/stores/memory.js +155 -117
  190. package/lib/stores/memory.js.map +1 -1
  191. package/lib/stores/memory.spec.d.ts +3 -2
  192. package/lib/stores/memory.spec.js +127 -105
  193. package/lib/stores/memory.spec.js.map +1 -1
  194. package/lib/stores/store.d.ts +35 -15
  195. package/lib/stores/store.js +839 -821
  196. package/lib/stores/store.js.map +1 -1
  197. package/lib/stores/store.spec.d.ts +6 -4
  198. package/lib/stores/store.spec.js +627 -647
  199. package/lib/stores/store.spec.js.map +1 -1
  200. package/lib/stores/webdaql/WebdaQLLexer.d.ts +4 -4
  201. package/lib/stores/webdaql/WebdaQLLexer.js +9 -13
  202. package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
  203. package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +4 -4
  204. package/lib/stores/webdaql/WebdaQLParserLexer.js +9 -13
  205. package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
  206. package/lib/stores/webdaql/WebdaQLParserListener.d.ts +2 -2
  207. package/lib/stores/webdaql/WebdaQLParserListener.js +1 -2
  208. package/lib/stores/webdaql/WebdaQLParserListener.js.map +1 -1
  209. package/lib/stores/webdaql/WebdaQLParserParser.d.ts +10 -10
  210. package/lib/stores/webdaql/WebdaQLParserParser.js +62 -91
  211. package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
  212. package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +2 -2
  213. package/lib/stores/webdaql/WebdaQLParserVisitor.js +1 -2
  214. package/lib/stores/webdaql/WebdaQLParserVisitor.js.map +1 -1
  215. package/lib/stores/webdaql/query.d.ts +4 -5
  216. package/lib/stores/webdaql/query.js +16 -19
  217. package/lib/stores/webdaql/query.js.map +1 -1
  218. package/lib/stores/webdaql/query.spec.js +30 -32
  219. package/lib/stores/webdaql/query.spec.js.map +1 -1
  220. package/lib/test.d.ts +3 -3
  221. package/lib/test.js +74 -94
  222. package/lib/test.js.map +1 -1
  223. package/lib/unpackedapplication.d.ts +1 -1
  224. package/lib/unpackedapplication.js +25 -31
  225. package/lib/unpackedapplication.js.map +1 -1
  226. package/lib/utils/abstractdeployer.js +1 -5
  227. package/lib/utils/abstractdeployer.js.map +1 -1
  228. package/lib/utils/abstractdeployer.spec.js +6 -8
  229. package/lib/utils/abstractdeployer.spec.js.map +1 -1
  230. package/lib/utils/context.d.ts +61 -29
  231. package/lib/utils/context.js +133 -127
  232. package/lib/utils/context.js.map +1 -1
  233. package/lib/utils/context.spec.js +147 -153
  234. package/lib/utils/context.spec.js.map +1 -1
  235. package/lib/utils/cookie.d.ts +66 -45
  236. package/lib/utils/cookie.js +69 -158
  237. package/lib/utils/cookie.js.map +1 -1
  238. package/lib/utils/cookie.spec.js +220 -238
  239. package/lib/utils/cookie.spec.js.map +1 -1
  240. package/lib/utils/esm.d.ts +4 -0
  241. package/lib/utils/esm.js +10 -0
  242. package/lib/utils/esm.js.map +1 -0
  243. package/lib/utils/httpcontext.d.ts +37 -9
  244. package/lib/utils/httpcontext.js +86 -57
  245. package/lib/utils/httpcontext.js.map +1 -1
  246. package/lib/utils/httpcontext.spec.js +37 -48
  247. package/lib/utils/httpcontext.spec.js.map +1 -1
  248. package/lib/utils/logger.d.ts +2 -2
  249. package/lib/utils/logger.js +15 -28
  250. package/lib/utils/logger.js.map +1 -1
  251. package/lib/utils/logger.spec.js +9 -11
  252. package/lib/utils/logger.spec.js.map +1 -1
  253. package/lib/utils/serializers.js +17 -20
  254. package/lib/utils/serializers.js.map +1 -1
  255. package/lib/utils/serializers.spec.js +43 -44
  256. package/lib/utils/serializers.spec.js.map +1 -1
  257. package/lib/utils/session.d.ts +120 -0
  258. package/lib/utils/session.js +155 -0
  259. package/lib/utils/session.js.map +1 -0
  260. package/lib/utils/session.spec.d.ts +1 -0
  261. package/lib/utils/session.spec.js +66 -0
  262. package/lib/utils/session.spec.js.map +1 -0
  263. package/lib/utils/waiter.d.ts +1 -1
  264. package/lib/utils/waiter.js +32 -52
  265. package/lib/utils/waiter.js.map +1 -1
  266. package/lib/utils/waiter.spec.js +75 -92
  267. package/lib/utils/waiter.spec.js.map +1 -1
  268. package/package.json +22 -14
  269. package/test/config-invitation.json +1 -3
  270. package/test/config.json +3 -3
  271. package/test/config.old.json +1 -2
  272. package/test/moddas/annotatedservice.js +5 -5
  273. package/test/moddas/debugmailer.js +2 -3
  274. package/test/moddas/fakeservice.js +2 -3
  275. package/test/moddas/voidstore.js +6 -4
  276. package/test/models/ident.js +2 -6
  277. package/test/models/task.js +3 -7
  278. package/test/package.json +2 -1
  279. package/webda.module.json +956 -188
@@ -1,31 +1,20 @@
1
- "use strict";
2
1
  var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
2
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
3
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
6
  };
8
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
9
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10
- return new (P || (P = Promise))(function (resolve, reject) {
11
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
12
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
13
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
14
- step((generator = generator.apply(thisArg, _arguments || [])).next());
15
- });
16
- };
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.FileStoreTest = void 0;
19
- const mocha_1 = require("@testdeck/mocha");
20
- const assert = require("assert");
21
- const fs_1 = require("fs");
22
- const fs_extra_1 = require("fs-extra");
23
- const sinon = require("sinon");
24
- const index_1 = require("../index");
25
- const httpcontext_1 = require("../utils/httpcontext");
26
- const store_1 = require("./store");
27
- const store_spec_1 = require("./store.spec");
28
- let FileStoreTest = class FileStoreTest extends store_spec_1.StoreTest {
7
+ import { suite, test } from "@testdeck/mocha";
8
+ import * as assert from "assert";
9
+ import { existsSync } from "fs";
10
+ import pkg from "fs-extra";
11
+ import * as sinon from "sinon";
12
+ import { FileUtils } from "../index.js";
13
+ import { HttpContext } from "../utils/httpcontext.js";
14
+ import { StoreNotFoundError, UpdateConditionFailError } from "./store.js";
15
+ import { StoreTest } from "./store.spec.js";
16
+ const { removeSync } = pkg;
17
+ let FileStoreTest = class FileStoreTest extends StoreTest {
29
18
  getUserStore() {
30
19
  return this.getService("Users");
31
20
  }
@@ -33,319 +22,302 @@ let FileStoreTest = class FileStoreTest extends store_spec_1.StoreTest {
33
22
  // Need to slow down the _get
34
23
  let store = this.getService("Idents");
35
24
  let original = store._get.bind(store);
36
- store._get = (...args) => __awaiter(this, void 0, void 0, function* () {
37
- yield this.sleep(1);
25
+ store._get = async (...args) => {
26
+ await this.sleep(1);
38
27
  return original(...args);
39
- });
28
+ };
40
29
  return store;
41
30
  }
42
- getIndex() {
43
- return __awaiter(this, void 0, void 0, function* () {
44
- return this.getService("memoryaggregators").get("idents-index");
45
- });
31
+ async getIndex() {
32
+ return this.getService("memoryaggregators").get("idents-index");
46
33
  }
47
- recreateIndex() {
48
- return __awaiter(this, void 0, void 0, function* () {
49
- let store = this.getService("memoryaggregators");
50
- yield store.__clean();
51
- yield this.getService("identsindexer").createAggregate();
52
- });
34
+ async recreateIndex() {
35
+ let store = this.getService("memoryaggregators");
36
+ await store.__clean();
37
+ await this.getService("identsindexer").createAggregate();
53
38
  }
54
- update(delay = 100) {
55
- const _super = Object.create(null, {
56
- update: { get: () => super.update }
57
- });
58
- return __awaiter(this, void 0, void 0, function* () {
59
- // Increase the delay for FileStore
60
- return _super.update.call(this, delay);
61
- });
39
+ async update(delay = 100) {
40
+ // Increase the delay for FileStore
41
+ return super.update(delay);
62
42
  }
63
- cov() {
64
- return __awaiter(this, void 0, void 0, function* () {
65
- let identStore = this.getService("idents");
66
- let userStore = this.getService("users");
67
- let user = yield userStore.save({});
68
- let ident = yield identStore.save({
69
- _user: user.getUuid()
70
- });
71
- let res = yield identStore.get(user.getUuid());
72
- assert.strictEqual(res, undefined);
73
- const stub = sinon.stub(identStore, "_get").callsFake(() => __awaiter(this, void 0, void 0, function* () { return user; }));
74
- try {
75
- res = yield identStore.get(user.getUuid());
76
- assert.strictEqual(res, undefined);
77
- yield assert.rejects(() => identStore.update({
78
- uuid: user.getUuid(),
79
- plop: true
80
- }), store_1.StoreNotFoundError);
81
- yield user.refresh();
82
- assert.strictEqual(user.plop, undefined);
83
- yield identStore.delete(user.getUuid());
84
- }
85
- finally {
86
- stub.restore();
87
- }
88
- // Shoud return directly
89
- yield identStore.incrementAttribute("test", "test", 0);
90
- (0, fs_extra_1.removeSync)(identStore.getParameters().folder);
91
- // Should not fail
92
- yield identStore.__clean();
93
- // Should recreate folder
94
- identStore.computeParameters();
95
- (0, fs_1.existsSync)(identStore.getParameters().folder);
96
- ident = new identStore._model();
97
- identStore.initModel(ident);
98
- assert.notStrictEqual(ident.getUuid(), undefined);
99
- // Test guard-rails (seems hardly reachable so might be useless)
100
- assert.throws(() => identStore.checkCollectionUpdateCondition(ident, "plops", undefined, 1, null), store_1.UpdateConditionFailError);
101
- // @ts-ignore
102
- ident.plops = [];
103
- assert.throws(() => identStore.checkCollectionUpdateCondition(ident, "plops", undefined, 1, null), store_1.UpdateConditionFailError);
104
- identStore.checkCollectionUpdateCondition(ident, "plops", undefined, 0, null);
105
- assert.rejects(() => identStore.simulateUpsertItemToCollection(undefined, "__proto__", undefined, new Date()), /Cannot update __proto__: js\/prototype-polluting-assignment/);
43
+ async cov() {
44
+ let identStore = this.getService("idents");
45
+ let userStore = this.getService("users");
46
+ let user = await userStore.save({});
47
+ let ident = await identStore.save({
48
+ _user: user.getUuid()
106
49
  });
50
+ let res = await identStore.get(user.getUuid());
51
+ assert.strictEqual(res, undefined);
52
+ const stub = sinon.stub(identStore, "_get").callsFake(async () => user);
53
+ try {
54
+ res = await identStore.get(user.getUuid());
55
+ assert.strictEqual(res, undefined);
56
+ await assert.rejects(() => identStore.update({
57
+ uuid: user.getUuid(),
58
+ plop: true
59
+ }), StoreNotFoundError);
60
+ await user.refresh();
61
+ assert.strictEqual(user.plop, undefined);
62
+ await identStore.delete(user.getUuid());
63
+ }
64
+ finally {
65
+ stub.restore();
66
+ }
67
+ // Shoud return directly
68
+ await identStore.incrementAttribute("test", "test", 0);
69
+ removeSync(identStore.getParameters().folder);
70
+ // Should not fail
71
+ await identStore.__clean();
72
+ // Should recreate folder
73
+ identStore.computeParameters();
74
+ existsSync(identStore.getParameters().folder);
75
+ ident = new identStore._model();
76
+ identStore.initModel(ident);
77
+ assert.notStrictEqual(ident.getUuid(), undefined);
78
+ // Test guard-rails (seems hardly reachable so might be useless)
79
+ assert.throws(() => identStore.checkCollectionUpdateCondition(ident, "plops", undefined, 1, null), UpdateConditionFailError);
80
+ // @ts-ignore
81
+ ident.plops = [];
82
+ assert.throws(() => identStore.checkCollectionUpdateCondition(ident, "plops", undefined, 1, null), UpdateConditionFailError);
83
+ identStore.checkCollectionUpdateCondition(ident, "plops", undefined, 0, null);
84
+ assert.rejects(() => identStore.simulateUpsertItemToCollection(undefined, "__proto__", undefined, new Date()), /Cannot update __proto__: js\/prototype-polluting-assignment/);
85
+ // Add a queryMethod test
86
+ userStore.getParameters().url = "/users";
87
+ userStore.getParameters().expose = {
88
+ queryMethod: "PUT",
89
+ restrict: {}
90
+ };
91
+ userStore.initRoutes();
92
+ userStore.getUrl("/url", ["GET"]);
107
93
  }
108
- configuration() {
109
- return __awaiter(this, void 0, void 0, function* () {
110
- let identStore = this.getService("idents");
111
- assert.strictEqual(identStore.canTriggerConfiguration("plop", () => { }), false);
112
- assert.strictEqual(yield identStore.getConfiguration("plop"), undefined);
113
- yield identStore.save({ plop: 1, other: true, uuid: "plop" });
114
- assert.deepStrictEqual(yield identStore.getConfiguration("plop"), {
115
- other: true,
116
- plop: 1
117
- });
94
+ async configuration() {
95
+ let identStore = this.getService("idents");
96
+ assert.strictEqual(identStore.canTriggerConfiguration("plop", () => { }), false);
97
+ assert.strictEqual(await identStore.getConfiguration("plop"), undefined);
98
+ await identStore.save({ plop: 1, other: true, uuid: "plop" });
99
+ assert.deepStrictEqual(await identStore.getConfiguration("plop"), {
100
+ other: true,
101
+ plop: 1
118
102
  });
119
103
  }
120
- modelActions() {
121
- return __awaiter(this, void 0, void 0, function* () {
122
- let identStore = this.getService("idents");
123
- assert.notStrictEqual(identStore.getModel(), undefined);
124
- let eventFired = 0;
125
- let executor, ctx;
126
- identStore.on("Store.Action", evt => {
127
- eventFired++;
128
- });
129
- identStore.on("Store.Actioned", evt => {
130
- eventFired++;
131
- });
132
- ctx = yield this.newContext({
133
- type: "CRUD",
134
- uuid: "PLOP"
135
- });
136
- executor = this.getExecutor(ctx, "test.webda.io", "PUT", "/idents/coucou/plop");
137
- assert.notStrictEqual(executor, undefined);
138
- yield assert.rejects(executor.execute(ctx), err => err == 404);
139
- yield identStore.save({
140
- uuid: "coucou"
141
- });
142
- yield executor.execute(ctx);
143
- // Our fake action is pushing true to _plop
144
- assert.strictEqual(JSON.parse(ctx.getResponseBody())._plop, true);
145
- assert.strictEqual(eventFired, 2);
146
- assert.notStrictEqual(this.getExecutor(ctx, "test.webda.io", "POST", "/idents/coucou/yop"), null);
147
- executor = this.getExecutor(ctx, "test.webda.io", "GET", "/idents/coucou/yop");
148
- assert.notStrictEqual(executor, null);
149
- // Test with action returning the result instead of writing it
150
- ctx.resetResponse();
151
- yield executor.execute(ctx);
152
- assert.strictEqual(ctx.getResponseBody(), "youpi");
104
+ async modelActions() {
105
+ let identStore = this.getService("idents");
106
+ assert.notStrictEqual(identStore.getModel(), undefined);
107
+ let eventFired = 0;
108
+ let executor, ctx;
109
+ identStore.on("Store.Action", evt => {
110
+ eventFired++;
153
111
  });
154
- }
155
- cacheMishit() {
156
- return __awaiter(this, void 0, void 0, function* () {
157
- let identStore = this.getService("idents");
158
- let ident = yield identStore.save({ uuid: "test" });
159
- yield identStore._cacheStore.__clean();
160
- yield ident.update({ retest: true }, false, true);
112
+ identStore.on("Store.Actioned", evt => {
113
+ eventFired++;
161
114
  });
162
- }
163
- modelStaticActions() {
164
- return __awaiter(this, void 0, void 0, function* () {
165
- let identStore = this.getService("idents");
166
- let ctx, executor;
167
- let eventFired = 0;
168
- identStore.on("Store.Action", evt => {
169
- eventFired++;
170
- });
171
- ctx = yield this.newContext({
172
- type: "CRUD",
173
- uuid: "PLOP"
174
- });
175
- executor = this.getExecutor(ctx, "test.webda.io", "GET", "/idents/index");
176
- assert.notStrictEqual(executor, undefined);
177
- yield executor.execute(ctx);
178
- // Our fake index action is just outputing 'indexer'
179
- assert.strictEqual(ctx.getResponseBody(), "indexer");
180
- assert.strictEqual(eventFired, 1);
181
- ctx.resetResponse();
182
- // Return some infos instead of using ctx
183
- // @ts-ignore
184
- identStore._model._index = () => __awaiter(this, void 0, void 0, function* () {
185
- return "vouzouf";
186
- });
187
- yield executor.execute(ctx);
188
- // Our fake index action is just outputing 'indexer'
189
- assert.strictEqual(ctx.getResponseBody(), "vouzouf");
115
+ ctx = await this.newContext({
116
+ type: "CRUD",
117
+ uuid: "PLOP"
118
+ });
119
+ executor = this.getExecutor(ctx, "test.webda.io", "PUT", "/idents/coucou/plop");
120
+ assert.notStrictEqual(executor, undefined);
121
+ await assert.rejects(executor.execute(ctx), err => err == 404);
122
+ await identStore.save({
123
+ uuid: "coucou"
190
124
  });
125
+ await executor.execute(ctx);
126
+ // Our fake action is pushing true to _plop
127
+ assert.strictEqual(JSON.parse(ctx.getResponseBody())._plop, true);
128
+ assert.strictEqual(eventFired, 2);
129
+ assert.notStrictEqual(this.getExecutor(ctx, "test.webda.io", "POST", "/idents/coucou/yop"), null);
130
+ executor = this.getExecutor(ctx, "test.webda.io", "GET", "/idents/coucou/yop");
131
+ assert.notStrictEqual(executor, null);
132
+ // Test with action returning the result instead of writing it
133
+ ctx.resetResponse();
134
+ await executor.execute(ctx);
135
+ assert.strictEqual(ctx.getResponseBody(), "youpi");
191
136
  }
192
- httpCRUD() {
193
- return __awaiter(this, void 0, void 0, function* () {
194
- let eventFired;
195
- let userStore = this.getUserStore();
196
- let ctx, executor;
197
- yield userStore.__clean();
198
- ctx = yield this.newContext({});
199
- ctx.session.login("fake_user", "fake_ident");
200
- executor = this.getExecutor(ctx, "test.webda.io", "POST", "/users", {
201
- type: "CRUD",
202
- uuid: "PLOP"
203
- });
204
- assert.notStrictEqual(executor, undefined);
205
- yield executor.execute(ctx);
206
- ctx.body = undefined;
207
- assert.strictEqual((yield userStore.getAll()).length, 1);
208
- yield this.getExecutor(ctx, "test.webda.io", "GET", "/users/PLOP").execute(ctx);
209
- assert.notStrictEqual(ctx.getResponseBody(), undefined);
210
- assert.strictEqual(ctx.getResponseBody().indexOf("_lastUpdate") >= 0, true);
211
- executor = this.getExecutor(ctx, "test.webda.io", "POST", "/users", {
212
- type: "CRUD2",
213
- uuid: "PLOP"
214
- });
215
- yield assert.rejects(executor.execute(ctx), err => err == 409);
216
- // Verify the none overide of UUID
217
- yield this.execute(ctx, "test.webda.io", "PUT", "/users/PLOP", {
218
- type: "CRUD2",
219
- additional: "field",
220
- uuid: "PLOP2",
221
- user: "fake_user"
222
- });
223
- let user = yield userStore.get("PLOP");
224
- assert.strictEqual(user.uuid, "PLOP");
225
- assert.strictEqual(user.type, "CRUD2");
226
- assert.strictEqual(user.additional, "field");
227
- assert.strictEqual(user.user, "fake_user");
228
- assert.strictEqual(user._user, "fake_user");
229
- // Add a role to the user
230
- user.addRole("plop");
231
- yield user.save();
232
- user = yield userStore.get("PLOP");
233
- assert.deepStrictEqual(user.getRoles(), ["plop"]);
234
- ctx.resetResponse();
235
- // Check PATH
236
- yield this.execute(ctx, "test.webda.io", "PATCH", "/users/PLOP", {
237
- type: "CRUD3",
238
- uuid: "PLOP2",
239
- _testor: "_ should not be update by client"
240
- });
241
- user = yield userStore.get("PLOP");
242
- assert.strictEqual(user.uuid, "PLOP");
243
- assert.strictEqual(user.type, "CRUD3");
244
- assert.strictEqual(user.additional, "field");
245
- assert.strictEqual(user._testor, undefined);
246
- assert.strictEqual(user._user, "fake_user");
247
- assert.deepStrictEqual(user.getRoles(), ["plop"]);
248
- executor = this.getExecutor(ctx, "test.webda.io", "PUT", "/users/PLOP", {
249
- type: "CRUD3",
250
- uuid: "PLOP2",
251
- _testor: "_ should not be update by client"
252
- });
253
- yield executor.execute(ctx);
254
- user = yield userStore.get("PLOP");
255
- assert.strictEqual(user.uuid, "PLOP");
256
- assert.strictEqual(user.type, "CRUD3");
257
- assert.strictEqual(user.additional, undefined);
258
- assert.strictEqual(user._testor, undefined);
259
- assert.deepStrictEqual(user.getRoles(), ["plop"]);
260
- yield this.getExecutor(ctx, "test.webda.io", "DELETE", "/users/PLOP").execute(ctx);
261
- eventFired = 0;
262
- executor = this.getExecutor(ctx, "test.webda.io", "GET", "/users/PLOP");
263
- yield assert.rejects(() => executor.execute(ctx), err => err == 404);
264
- eventFired++;
265
- executor = this.getExecutor(ctx, "test.webda.io", "DELETE", "/users/PLOP");
266
- yield assert.rejects(() => executor.execute(ctx), err => err == 404);
267
- eventFired++;
268
- executor = this.getExecutor(ctx, "test.webda.io", "PUT", "/users/PLOP");
269
- yield assert.rejects(() => executor.execute(ctx), err => err == 404);
137
+ async cacheMishit() {
138
+ let identStore = this.getService("idents");
139
+ let ident = await identStore.save({ uuid: "test" });
140
+ await identStore._cacheStore.__clean();
141
+ await ident.update({ retest: true });
142
+ }
143
+ async modelStaticActions() {
144
+ let identStore = this.getService("idents");
145
+ let ctx, executor;
146
+ let eventFired = 0;
147
+ identStore.on("Store.Action", evt => {
270
148
  eventFired++;
271
- assert.strictEqual(eventFired, 3);
272
149
  });
150
+ ctx = await this.newContext({
151
+ type: "CRUD",
152
+ uuid: "PLOP"
153
+ });
154
+ executor = this.getExecutor(ctx, "test.webda.io", "GET", "/idents/index");
155
+ assert.notStrictEqual(executor, undefined);
156
+ await executor.execute(ctx);
157
+ // Our fake index action is just outputing 'indexer'
158
+ assert.strictEqual(ctx.getResponseBody(), "indexer");
159
+ assert.strictEqual(eventFired, 1);
160
+ ctx.resetResponse();
161
+ // Return some infos instead of using ctx
162
+ // @ts-ignore
163
+ identStore._model._index = async () => {
164
+ return "vouzouf";
165
+ };
166
+ await executor.execute(ctx);
167
+ // Our fake index action is just outputing 'indexer'
168
+ assert.strictEqual(ctx.getResponseBody(), "vouzouf");
273
169
  }
274
- getURL() {
275
- return __awaiter(this, void 0, void 0, function* () {
276
- assert.strictEqual(this.webda.getService("users").getUrl(), "/users");
170
+ async httpCRUD() {
171
+ let eventFired;
172
+ let userStore = this.getUserStore();
173
+ let ctx, executor;
174
+ await userStore.__clean();
175
+ ctx = await this.newContext({});
176
+ ctx.session.login("fake_user", "fake_ident");
177
+ executor = this.getExecutor(ctx, "test.webda.io", "POST", "/users", {
178
+ type: "CRUD",
179
+ uuid: "PLOP"
180
+ });
181
+ assert.notStrictEqual(executor, undefined);
182
+ await executor.execute(ctx);
183
+ ctx.body = undefined;
184
+ assert.strictEqual((await userStore.getAll()).length, 1);
185
+ await this.getExecutor(ctx, "test.webda.io", "GET", "/users/PLOP").execute(ctx);
186
+ assert.notStrictEqual(ctx.getResponseBody(), undefined);
187
+ assert.strictEqual(ctx.getResponseBody().indexOf("_lastUpdate") >= 0, true);
188
+ executor = this.getExecutor(ctx, "test.webda.io", "POST", "/users", {
189
+ type: "CRUD2",
190
+ uuid: "PLOP"
191
+ });
192
+ await assert.rejects(executor.execute(ctx), err => err == 409);
193
+ // Verify the none overide of UUID
194
+ await this.execute(ctx, "test.webda.io", "PUT", "/users/PLOP", {
195
+ type: "CRUD2",
196
+ additional: "field",
197
+ uuid: "PLOP2",
198
+ user: "fake_user"
277
199
  });
200
+ let user = await userStore.get("PLOP");
201
+ assert.strictEqual(user.uuid, "PLOP");
202
+ assert.strictEqual(user.type, "CRUD2");
203
+ assert.strictEqual(user.additional, "field");
204
+ assert.strictEqual(user.user, "fake_user");
205
+ assert.strictEqual(user._user, "fake_user");
206
+ // Add a role to the user
207
+ user.addRole("plop");
208
+ await user.save();
209
+ user = await userStore.get("PLOP");
210
+ assert.deepStrictEqual(user.getRoles(), ["plop"]);
211
+ ctx.resetResponse();
212
+ // Check PATH
213
+ await this.execute(ctx, "test.webda.io", "PATCH", "/users/PLOP", {
214
+ type: "CRUD3",
215
+ uuid: "PLOP2",
216
+ _testor: "_ should not be update by client"
217
+ });
218
+ user = await userStore.get("PLOP");
219
+ assert.strictEqual(user.uuid, "PLOP");
220
+ assert.strictEqual(user.type, "CRUD3");
221
+ assert.strictEqual(user.additional, "field");
222
+ assert.strictEqual(user._testor, undefined);
223
+ assert.strictEqual(user._user, "fake_user");
224
+ assert.deepStrictEqual(user.getRoles(), ["plop"]);
225
+ executor = this.getExecutor(ctx, "test.webda.io", "PUT", "/users/PLOP", {
226
+ type: "CRUD3",
227
+ uuid: "PLOP2",
228
+ _testor: "_ should not be update by client"
229
+ });
230
+ await executor.execute(ctx);
231
+ user = await userStore.get("PLOP");
232
+ assert.strictEqual(user.uuid, "PLOP");
233
+ assert.strictEqual(user.type, "CRUD3");
234
+ assert.strictEqual(user.additional, undefined);
235
+ assert.strictEqual(user._testor, undefined);
236
+ assert.deepStrictEqual(user.getRoles(), ["plop"]);
237
+ await this.getExecutor(ctx, "test.webda.io", "DELETE", "/users/PLOP").execute(ctx);
238
+ eventFired = 0;
239
+ executor = this.getExecutor(ctx, "test.webda.io", "GET", "/users/PLOP");
240
+ await assert.rejects(() => executor.execute(ctx), err => err == 404);
241
+ eventFired++;
242
+ executor = this.getExecutor(ctx, "test.webda.io", "DELETE", "/users/PLOP");
243
+ await assert.rejects(() => executor.execute(ctx), err => err == 404);
244
+ eventFired++;
245
+ executor = this.getExecutor(ctx, "test.webda.io", "PUT", "/users/PLOP");
246
+ await assert.rejects(() => executor.execute(ctx), err => err == 404);
247
+ eventFired++;
248
+ assert.strictEqual(eventFired, 3);
249
+ }
250
+ async getURL() {
251
+ //assert.strictEqual((<Store<CoreModel>>this.webda.getService("users")).getUrl(), "/users");
278
252
  }
279
- schemaCreate() {
280
- return __awaiter(this, void 0, void 0, function* () {
281
- let taskStore = this.webda.getService("Tasks");
282
- let ctx = yield this.webda.newContext(new httpcontext_1.HttpContext("webda.io", "GET", "/"));
283
- let executor = this.getExecutor(ctx, "test.webda.io", "POST", "/tasks", {
284
- noname: "Task #1"
285
- });
286
- this.webda.getModules().schemas["webdatest/task"] = index_1.FileUtils.load("./test/schemas/task.json");
287
- assert.notStrictEqual(executor, undefined);
288
- ctx.getSession().login("fake_user", "fake_ident");
289
- yield assert.rejects(executor.execute(ctx), err => err == 400, "Should reject for bad schema");
290
- executor = this.getExecutor(ctx, "test.webda.io", "POST", "/tasks", {
291
- name: "Task #1"
292
- });
293
- yield executor.execute(ctx);
294
- let task = JSON.parse(ctx.getResponseBody());
295
- // It is two because the Saved has been called two
296
- assert.notStrictEqual(task.uuid, undefined);
297
- assert.strictEqual(task._autoListener, 2);
298
- task = yield taskStore.get(task.uuid);
299
- assert.strictEqual(task._autoListener, 1);
300
- executor = this.getExecutor(ctx, "test.webda.io", "PUT", `/tasks/${task.uuid}`, {
301
- test: "plop"
302
- });
303
- yield assert.rejects(() => executor.execute(ctx), /400/);
304
- executor = this.getExecutor(ctx, "test.webda.io", "PATCH", `/tasks/${task.uuid}`, {
305
- name: 123
306
- });
307
- yield assert.rejects(() => executor.execute(ctx), /400/);
253
+ async schemaCreate() {
254
+ let taskStore = this.webda.getService("Tasks");
255
+ let ctx = await this.webda.newContext(new HttpContext("webda.io", "GET", "/"));
256
+ let executor = this.getExecutor(ctx, "test.webda.io", "POST", "/tasks", {
257
+ noname: "Task #1"
258
+ });
259
+ this.webda.getModules().schemas["webdatest/task"] = FileUtils.load("./test/schemas/task.json");
260
+ assert.notStrictEqual(executor, undefined);
261
+ ctx.getSession().login("fake_user", "fake_ident");
262
+ await assert.rejects(executor.execute(ctx), err => err == 400, "Should reject for bad schema");
263
+ executor = this.getExecutor(ctx, "test.webda.io", "POST", "/tasks", {
264
+ name: "Task #1"
265
+ });
266
+ await executor.execute(ctx);
267
+ let task = JSON.parse(ctx.getResponseBody());
268
+ // It is two because the Saved has been called two
269
+ assert.notStrictEqual(task.uuid, undefined);
270
+ assert.strictEqual(task._autoListener, 2);
271
+ task = await taskStore.get(task.uuid);
272
+ assert.strictEqual(task._autoListener, 1);
273
+ executor = this.getExecutor(ctx, "test.webda.io", "PUT", `/tasks/${task.uuid}`, {
274
+ test: "plop"
275
+ });
276
+ await assert.rejects(() => executor.execute(ctx), /400/);
277
+ executor = this.getExecutor(ctx, "test.webda.io", "PATCH", `/tasks/${task.uuid}`, {
278
+ name: 123
308
279
  });
280
+ await assert.rejects(() => executor.execute(ctx), /400/);
309
281
  }
310
282
  computeParams() {
311
283
  let usersStore = this.getUserStore();
312
- (0, fs_extra_1.removeSync)(usersStore.getParameters().folder);
284
+ removeSync(usersStore.getParameters().folder);
313
285
  usersStore.computeParameters();
314
- assert.ok((0, fs_1.existsSync)(usersStore.getParameters().folder));
286
+ assert.ok(existsSync(usersStore.getParameters().folder));
315
287
  }
316
288
  };
317
289
  __decorate([
318
- mocha_1.test
290
+ test
319
291
  ], FileStoreTest.prototype, "update", null);
320
292
  __decorate([
321
- mocha_1.test
293
+ test
322
294
  ], FileStoreTest.prototype, "cov", null);
323
295
  __decorate([
324
- mocha_1.test
296
+ test
325
297
  ], FileStoreTest.prototype, "configuration", null);
326
298
  __decorate([
327
- mocha_1.test
299
+ test
328
300
  ], FileStoreTest.prototype, "modelActions", null);
329
301
  __decorate([
330
- mocha_1.test
302
+ test
331
303
  ], FileStoreTest.prototype, "cacheMishit", null);
332
304
  __decorate([
333
- mocha_1.test
305
+ test
334
306
  ], FileStoreTest.prototype, "modelStaticActions", null);
335
307
  __decorate([
336
- mocha_1.test
308
+ test
337
309
  ], FileStoreTest.prototype, "httpCRUD", null);
338
310
  __decorate([
339
- mocha_1.test
311
+ test
340
312
  ], FileStoreTest.prototype, "getURL", null);
341
313
  __decorate([
342
- (0, mocha_1.test)("JSON Schema - Create")
314
+ test("JSON Schema - Create")
343
315
  ], FileStoreTest.prototype, "schemaCreate", null);
344
316
  __decorate([
345
- mocha_1.test
317
+ test
346
318
  ], FileStoreTest.prototype, "computeParams", null);
347
319
  FileStoreTest = __decorate([
348
- mocha_1.suite
320
+ suite
349
321
  ], FileStoreTest);
350
- exports.FileStoreTest = FileStoreTest;
322
+ export { FileStoreTest };
351
323
  //# sourceMappingURL=file.spec.js.map