@webda/core 2.0.0-beta.3 → 2.1.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 (276) hide show
  1. package/lib/application.d.ts +5 -5
  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 +21 -25
  7. package/lib/core.js +233 -320
  8. package/lib/core.js.map +1 -1
  9. package/lib/core.spec.js +334 -406
  10. package/lib/core.spec.js.map +1 -1
  11. package/lib/index.d.ts +49 -48
  12. package/lib/index.js +53 -70
  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 +128 -152
  18. package/lib/models/aclmodel.spec.js.map +1 -1
  19. package/lib/models/coremodel.d.ts +33 -14
  20. package/lib/models/coremodel.js +160 -117
  21. package/lib/models/coremodel.js.map +1 -1
  22. package/lib/models/coremodel.spec.js +143 -107
  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 +3 -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 +2 -2
  31. package/lib/models/ownermodel.js +39 -62
  32. package/lib/models/ownermodel.js.map +1 -1
  33. package/lib/models/ownermodel.spec.js +126 -168
  34. package/lib/models/ownermodel.spec.js.map +1 -1
  35. package/lib/models/rolemodel.d.ts +1 -1
  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 -63
  39. package/lib/models/rolemodel.spec.js.map +1 -1
  40. package/lib/models/user.d.ts +9 -9
  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 +3 -3
  62. package/lib/queues/queueservice.js +51 -67
  63. package/lib/queues/queueservice.js.map +1 -1
  64. package/lib/router.d.ts +3 -3
  65. package/lib/router.js +46 -47
  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 +23 -13
  75. package/lib/services/authentication.js +540 -566
  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 -245
  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 +45 -70
  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 +1 -1
  92. package/lib/services/configuration.js +78 -105
  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 +9 -4
  102. package/lib/services/cryptoservice.js +187 -221
  103. package/lib/services/cryptoservice.js.map +1 -1
  104. package/lib/services/cryptoservice.spec.js +88 -115
  105. package/lib/services/cryptoservice.spec.js.map +1 -1
  106. package/lib/services/debugmailer.d.ts +1 -1
  107. package/lib/services/debugmailer.js +13 -34
  108. package/lib/services/debugmailer.js.map +1 -1
  109. package/lib/services/debugmailer.spec.js +16 -29
  110. package/lib/services/debugmailer.spec.js.map +1 -1
  111. package/lib/services/echo.d.ts +2 -2
  112. package/lib/services/echo.js +15 -31
  113. package/lib/services/echo.js.map +1 -1
  114. package/lib/services/echo.spec.js +27 -40
  115. package/lib/services/echo.spec.js.map +1 -1
  116. package/lib/services/filebinary.d.ts +5 -5
  117. package/lib/services/filebinary.js +165 -210
  118. package/lib/services/filebinary.js.map +1 -1
  119. package/lib/services/filebinary.spec.d.ts +2 -1
  120. package/lib/services/filebinary.spec.js +106 -116
  121. package/lib/services/filebinary.spec.js.map +1 -1
  122. package/lib/services/fileconfiguration.d.ts +1 -1
  123. package/lib/services/fileconfiguration.js +25 -44
  124. package/lib/services/fileconfiguration.js.map +1 -1
  125. package/lib/services/fileconfiguration.spec.js +79 -109
  126. package/lib/services/fileconfiguration.spec.js.map +1 -1
  127. package/lib/services/invitationservice.d.ts +8 -8
  128. package/lib/services/invitationservice.js +274 -314
  129. package/lib/services/invitationservice.js.map +1 -1
  130. package/lib/services/invitationservice.spec.js +443 -449
  131. package/lib/services/invitationservice.spec.js.map +1 -1
  132. package/lib/services/kubernetesconfiguration.d.ts +1 -1
  133. package/lib/services/kubernetesconfiguration.js +41 -60
  134. package/lib/services/kubernetesconfiguration.js.map +1 -1
  135. package/lib/services/kubernetesconfiguration.spec.js +80 -98
  136. package/lib/services/kubernetesconfiguration.spec.js.map +1 -1
  137. package/lib/services/mailer.d.ts +4 -4
  138. package/lib/services/mailer.js +62 -86
  139. package/lib/services/mailer.js.map +1 -1
  140. package/lib/services/mailer.spec.js +86 -127
  141. package/lib/services/mailer.spec.js.map +1 -1
  142. package/lib/services/notificationservice.d.ts +3 -3
  143. package/lib/services/notificationservice.js +21 -42
  144. package/lib/services/notificationservice.js.map +1 -1
  145. package/lib/services/notificationservice.spec.js +47 -73
  146. package/lib/services/notificationservice.spec.js.map +1 -1
  147. package/lib/services/oauth.d.ts +4 -4
  148. package/lib/services/oauth.js +68 -83
  149. package/lib/services/oauth.js.map +1 -1
  150. package/lib/services/oauth.spec.js +130 -156
  151. package/lib/services/oauth.spec.js.map +1 -1
  152. package/lib/services/proxy.d.ts +2 -6
  153. package/lib/services/proxy.js +45 -58
  154. package/lib/services/proxy.js.map +1 -1
  155. package/lib/services/proxy.spec.js +34 -53
  156. package/lib/services/proxy.spec.js.map +1 -1
  157. package/lib/services/resource.d.ts +2 -2
  158. package/lib/services/resource.js +12 -18
  159. package/lib/services/resource.js.map +1 -1
  160. package/lib/services/resource.spec.js +67 -99
  161. package/lib/services/resource.spec.js.map +1 -1
  162. package/lib/services/service.d.ts +26 -3
  163. package/lib/services/service.js +68 -40
  164. package/lib/services/service.js.map +1 -1
  165. package/lib/services/service.spec.js +62 -67
  166. package/lib/services/service.spec.js.map +1 -1
  167. package/lib/services/version.d.ts +1 -1
  168. package/lib/services/version.js +3 -8
  169. package/lib/services/version.js.map +1 -1
  170. package/lib/services/version.spec.js +11 -24
  171. package/lib/services/version.spec.js.map +1 -1
  172. package/lib/stores/aggregator.d.ts +2 -2
  173. package/lib/stores/aggregator.js +37 -58
  174. package/lib/stores/aggregator.js.map +1 -1
  175. package/lib/stores/file.d.ts +3 -3
  176. package/lib/stores/file.js +93 -131
  177. package/lib/stores/file.js.map +1 -1
  178. package/lib/stores/file.spec.d.ts +2 -2
  179. package/lib/stores/file.spec.js +262 -289
  180. package/lib/stores/file.spec.js.map +1 -1
  181. package/lib/stores/mapper.d.ts +3 -3
  182. package/lib/stores/mapper.js +110 -137
  183. package/lib/stores/mapper.js.map +1 -1
  184. package/lib/stores/mapper.spec.js +133 -150
  185. package/lib/stores/mapper.spec.js.map +1 -1
  186. package/lib/stores/memory.d.ts +3 -3
  187. package/lib/stores/memory.js +98 -144
  188. package/lib/stores/memory.js.map +1 -1
  189. package/lib/stores/memory.spec.d.ts +2 -2
  190. package/lib/stores/memory.spec.js +124 -145
  191. package/lib/stores/memory.spec.js.map +1 -1
  192. package/lib/stores/store.d.ts +27 -17
  193. package/lib/stores/store.js +833 -849
  194. package/lib/stores/store.js.map +1 -1
  195. package/lib/stores/store.spec.d.ts +5 -4
  196. package/lib/stores/store.spec.js +625 -669
  197. package/lib/stores/store.spec.js.map +1 -1
  198. package/lib/stores/webdaql/WebdaQLLexer.d.ts +4 -4
  199. package/lib/stores/webdaql/WebdaQLLexer.js +9 -13
  200. package/lib/stores/webdaql/WebdaQLLexer.js.map +1 -1
  201. package/lib/stores/webdaql/WebdaQLParserLexer.d.ts +4 -4
  202. package/lib/stores/webdaql/WebdaQLParserLexer.js +9 -13
  203. package/lib/stores/webdaql/WebdaQLParserLexer.js.map +1 -1
  204. package/lib/stores/webdaql/WebdaQLParserListener.d.ts +2 -2
  205. package/lib/stores/webdaql/WebdaQLParserListener.js +1 -2
  206. package/lib/stores/webdaql/WebdaQLParserListener.js.map +1 -1
  207. package/lib/stores/webdaql/WebdaQLParserParser.d.ts +10 -10
  208. package/lib/stores/webdaql/WebdaQLParserParser.js +62 -91
  209. package/lib/stores/webdaql/WebdaQLParserParser.js.map +1 -1
  210. package/lib/stores/webdaql/WebdaQLParserVisitor.d.ts +2 -2
  211. package/lib/stores/webdaql/WebdaQLParserVisitor.js +1 -2
  212. package/lib/stores/webdaql/WebdaQLParserVisitor.js.map +1 -1
  213. package/lib/stores/webdaql/query.d.ts +4 -5
  214. package/lib/stores/webdaql/query.js +16 -19
  215. package/lib/stores/webdaql/query.js.map +1 -1
  216. package/lib/stores/webdaql/query.spec.js +30 -32
  217. package/lib/stores/webdaql/query.spec.js.map +1 -1
  218. package/lib/test.d.ts +3 -3
  219. package/lib/test.js +73 -100
  220. package/lib/test.js.map +1 -1
  221. package/lib/unpackedapplication.d.ts +1 -1
  222. package/lib/unpackedapplication.js +49 -39
  223. package/lib/unpackedapplication.js.map +1 -1
  224. package/lib/utils/abstractdeployer.js +1 -5
  225. package/lib/utils/abstractdeployer.js.map +1 -1
  226. package/lib/utils/abstractdeployer.spec.js +6 -8
  227. package/lib/utils/abstractdeployer.spec.js.map +1 -1
  228. package/lib/utils/context.d.ts +7 -5
  229. package/lib/utils/context.js +95 -103
  230. package/lib/utils/context.js.map +1 -1
  231. package/lib/utils/context.spec.js +139 -163
  232. package/lib/utils/context.spec.js.map +1 -1
  233. package/lib/utils/cookie.d.ts +3 -3
  234. package/lib/utils/cookie.js +42 -61
  235. package/lib/utils/cookie.js.map +1 -1
  236. package/lib/utils/cookie.spec.js +42 -64
  237. package/lib/utils/cookie.spec.js.map +1 -1
  238. package/lib/utils/esm.d.ts +4 -0
  239. package/lib/utils/esm.js +10 -0
  240. package/lib/utils/esm.js.map +1 -0
  241. package/lib/utils/httpcontext.d.ts +3 -0
  242. package/lib/utils/httpcontext.js +48 -65
  243. package/lib/utils/httpcontext.js.map +1 -1
  244. package/lib/utils/httpcontext.spec.js +37 -56
  245. package/lib/utils/httpcontext.spec.js.map +1 -1
  246. package/lib/utils/logger.d.ts +2 -2
  247. package/lib/utils/logger.js +15 -28
  248. package/lib/utils/logger.js.map +1 -1
  249. package/lib/utils/logger.spec.js +9 -11
  250. package/lib/utils/logger.spec.js.map +1 -1
  251. package/lib/utils/serializers.js +17 -20
  252. package/lib/utils/serializers.js.map +1 -1
  253. package/lib/utils/serializers.spec.js +43 -44
  254. package/lib/utils/serializers.spec.js.map +1 -1
  255. package/lib/utils/session.d.ts +6 -6
  256. package/lib/utils/session.js +37 -59
  257. package/lib/utils/session.js.map +1 -1
  258. package/lib/utils/session.spec.js +38 -51
  259. package/lib/utils/session.spec.js.map +1 -1
  260. package/lib/utils/waiter.d.ts +1 -1
  261. package/lib/utils/waiter.js +32 -52
  262. package/lib/utils/waiter.js.map +1 -1
  263. package/lib/utils/waiter.spec.js +75 -92
  264. package/lib/utils/waiter.spec.js.map +1 -1
  265. package/package.json +18 -13
  266. package/test/config-invitation.json +1 -3
  267. package/test/config.json +1 -2
  268. package/test/config.old.json +1 -2
  269. package/test/moddas/annotatedservice.js +5 -5
  270. package/test/moddas/debugmailer.js +2 -3
  271. package/test/moddas/fakeservice.js +2 -3
  272. package/test/moddas/voidstore.js +6 -4
  273. package/test/models/ident.js +2 -6
  274. package/test/models/task.js +3 -7
  275. package/test/package.json +2 -1
  276. package/webda.module.json +895 -190
@@ -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,303 @@ 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.newModel(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 });
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
+ // @ts-ignore
142
+ await ident.patch({ retest: true });
143
+ }
144
+ async modelStaticActions() {
145
+ let identStore = this.getService("idents");
146
+ let ctx, executor;
147
+ let eventFired = 0;
148
+ identStore.on("Store.Action", evt => {
270
149
  eventFired++;
271
- assert.strictEqual(eventFired, 3);
272
150
  });
151
+ ctx = await this.newContext({
152
+ type: "CRUD",
153
+ uuid: "PLOP"
154
+ });
155
+ executor = this.getExecutor(ctx, "test.webda.io", "GET", "/idents/index");
156
+ assert.notStrictEqual(executor, undefined);
157
+ await executor.execute(ctx);
158
+ // Our fake index action is just outputing 'indexer'
159
+ assert.strictEqual(ctx.getResponseBody(), "indexer");
160
+ assert.strictEqual(eventFired, 1);
161
+ ctx.resetResponse();
162
+ // Return some infos instead of using ctx
163
+ // @ts-ignore
164
+ identStore._model._index = async () => {
165
+ return "vouzouf";
166
+ };
167
+ await executor.execute(ctx);
168
+ // Our fake index action is just outputing 'indexer'
169
+ assert.strictEqual(ctx.getResponseBody(), "vouzouf");
273
170
  }
274
- getURL() {
275
- return __awaiter(this, void 0, void 0, function* () {
276
- assert.strictEqual(this.webda.getService("users").getUrl(), "/users");
171
+ async httpCRUD() {
172
+ let eventFired;
173
+ let userStore = this.getUserStore();
174
+ let ctx, executor;
175
+ await userStore.__clean();
176
+ ctx = await this.newContext({});
177
+ ctx.session.login("fake_user", "fake_ident");
178
+ executor = this.getExecutor(ctx, "test.webda.io", "POST", "/users", {
179
+ type: "CRUD",
180
+ uuid: "PLOP"
181
+ });
182
+ assert.notStrictEqual(executor, undefined);
183
+ await executor.execute(ctx);
184
+ ctx.body = undefined;
185
+ assert.strictEqual((await userStore.getAll()).length, 1);
186
+ await this.getExecutor(ctx, "test.webda.io", "GET", "/users/PLOP").execute(ctx);
187
+ assert.notStrictEqual(ctx.getResponseBody(), undefined);
188
+ assert.strictEqual(ctx.getResponseBody().indexOf("_lastUpdate") >= 0, true);
189
+ executor = this.getExecutor(ctx, "test.webda.io", "POST", "/users", {
190
+ type: "CRUD2",
191
+ uuid: "PLOP"
192
+ });
193
+ await assert.rejects(executor.execute(ctx), err => err == 409);
194
+ // Verify the none overide of UUID
195
+ await this.execute(ctx, "test.webda.io", "PUT", "/users/PLOP", {
196
+ type: "CRUD2",
197
+ additional: "field",
198
+ uuid: "PLOP2",
199
+ user: "fake_user"
277
200
  });
201
+ let user = await userStore.get("PLOP");
202
+ assert.strictEqual(user.uuid, "PLOP");
203
+ assert.strictEqual(user.type, "CRUD2");
204
+ assert.strictEqual(user.additional, "field");
205
+ assert.strictEqual(user.user, "fake_user");
206
+ assert.strictEqual(user._user, "fake_user");
207
+ // Add a role to the user
208
+ user.addRole("plop");
209
+ await user.save();
210
+ user = await userStore.get("PLOP");
211
+ assert.deepStrictEqual(user.getRoles(), ["plop"]);
212
+ ctx.resetResponse();
213
+ // Check PATH
214
+ await this.execute(ctx, "test.webda.io", "PATCH", "/users/PLOP", {
215
+ type: "CRUD3",
216
+ uuid: "PLOP2",
217
+ _testor: "_ should not be update by client"
218
+ });
219
+ user = await userStore.get("PLOP");
220
+ assert.strictEqual(user.uuid, "PLOP");
221
+ assert.strictEqual(user.type, "CRUD3");
222
+ assert.strictEqual(user.additional, "field");
223
+ assert.strictEqual(user._testor, undefined);
224
+ assert.strictEqual(user._user, "fake_user");
225
+ assert.deepStrictEqual(user.getRoles(), ["plop"]);
226
+ executor = this.getExecutor(ctx, "test.webda.io", "PUT", "/users/PLOP", {
227
+ type: "CRUD3",
228
+ uuid: "PLOP2",
229
+ _testor: "_ should not be update by client"
230
+ });
231
+ await executor.execute(ctx);
232
+ user = await userStore.get("PLOP");
233
+ assert.strictEqual(user.uuid, "PLOP");
234
+ assert.strictEqual(user.type, "CRUD3");
235
+ assert.strictEqual(user.additional, undefined);
236
+ assert.strictEqual(user._testor, undefined);
237
+ assert.deepStrictEqual(user.getRoles(), ["plop"]);
238
+ await this.getExecutor(ctx, "test.webda.io", "DELETE", "/users/PLOP").execute(ctx);
239
+ eventFired = 0;
240
+ executor = this.getExecutor(ctx, "test.webda.io", "GET", "/users/PLOP");
241
+ await assert.rejects(() => executor.execute(ctx), err => err == 404);
242
+ eventFired++;
243
+ executor = this.getExecutor(ctx, "test.webda.io", "DELETE", "/users/PLOP");
244
+ await assert.rejects(() => executor.execute(ctx), err => err == 404);
245
+ eventFired++;
246
+ executor = this.getExecutor(ctx, "test.webda.io", "PUT", "/users/PLOP");
247
+ await assert.rejects(() => executor.execute(ctx), err => err == 404);
248
+ eventFired++;
249
+ assert.strictEqual(eventFired, 3);
250
+ }
251
+ async getURL() {
252
+ //assert.strictEqual((<Store<CoreModel>>this.webda.getService("users")).getUrl(), "/users");
278
253
  }
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/);
254
+ async schemaCreate() {
255
+ let taskStore = this.webda.getService("Tasks");
256
+ let ctx = await this.webda.newContext(new HttpContext("webda.io", "GET", "/"));
257
+ let executor = this.getExecutor(ctx, "test.webda.io", "POST", "/tasks", {
258
+ noname: "Task #1"
259
+ });
260
+ this.webda.getModules().schemas["webdatest/task"] = FileUtils.load("./test/schemas/task.json");
261
+ assert.notStrictEqual(executor, undefined);
262
+ ctx.getSession().login("fake_user", "fake_ident");
263
+ await assert.rejects(executor.execute(ctx), err => err == 400, "Should reject for bad schema");
264
+ executor = this.getExecutor(ctx, "test.webda.io", "POST", "/tasks", {
265
+ name: "Task #1"
266
+ });
267
+ await executor.execute(ctx);
268
+ let task = JSON.parse(ctx.getResponseBody());
269
+ // It is two because the Saved has been called two
270
+ assert.notStrictEqual(task.uuid, undefined);
271
+ assert.strictEqual(task._autoListener, 2);
272
+ task = await taskStore.get(task.uuid);
273
+ assert.strictEqual(task._autoListener, 1);
274
+ executor = this.getExecutor(ctx, "test.webda.io", "PUT", `/tasks/${task.uuid}`, {
275
+ test: "plop"
276
+ });
277
+ await assert.rejects(() => executor.execute(ctx), /400/);
278
+ executor = this.getExecutor(ctx, "test.webda.io", "PATCH", `/tasks/${task.uuid}`, {
279
+ name: 123
308
280
  });
281
+ await assert.rejects(() => executor.execute(ctx), /400/);
309
282
  }
310
283
  computeParams() {
311
284
  let usersStore = this.getUserStore();
312
- (0, fs_extra_1.removeSync)(usersStore.getParameters().folder);
285
+ removeSync(usersStore.getParameters().folder);
313
286
  usersStore.computeParameters();
314
- assert.ok((0, fs_1.existsSync)(usersStore.getParameters().folder));
287
+ assert.ok(existsSync(usersStore.getParameters().folder));
315
288
  }
316
289
  };
317
290
  __decorate([
318
- mocha_1.test
291
+ test
319
292
  ], FileStoreTest.prototype, "update", null);
320
293
  __decorate([
321
- mocha_1.test
294
+ test
322
295
  ], FileStoreTest.prototype, "cov", null);
323
296
  __decorate([
324
- mocha_1.test
297
+ test
325
298
  ], FileStoreTest.prototype, "configuration", null);
326
299
  __decorate([
327
- mocha_1.test
300
+ test
328
301
  ], FileStoreTest.prototype, "modelActions", null);
329
302
  __decorate([
330
- mocha_1.test
303
+ test
331
304
  ], FileStoreTest.prototype, "cacheMishit", null);
332
305
  __decorate([
333
- mocha_1.test
306
+ test
334
307
  ], FileStoreTest.prototype, "modelStaticActions", null);
335
308
  __decorate([
336
- mocha_1.test
309
+ test
337
310
  ], FileStoreTest.prototype, "httpCRUD", null);
338
311
  __decorate([
339
- mocha_1.test
312
+ test
340
313
  ], FileStoreTest.prototype, "getURL", null);
341
314
  __decorate([
342
- (0, mocha_1.test)("JSON Schema - Create")
315
+ test("JSON Schema - Create")
343
316
  ], FileStoreTest.prototype, "schemaCreate", null);
344
317
  __decorate([
345
- mocha_1.test
318
+ test
346
319
  ], FileStoreTest.prototype, "computeParams", null);
347
320
  FileStoreTest = __decorate([
348
- mocha_1.suite
321
+ suite
349
322
  ], FileStoreTest);
350
- exports.FileStoreTest = FileStoreTest;
323
+ export { FileStoreTest };
351
324
  //# sourceMappingURL=file.spec.js.map