@nymphjs/server 1.0.0-beta.1 → 1.0.0-beta.100
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.
- package/CHANGELOG.md +435 -0
- package/README.md +79 -7
- package/dist/HttpError.d.ts +5 -0
- package/dist/HttpError.js +11 -0
- package/dist/HttpError.js.map +1 -0
- package/dist/cache.test.js +17 -21
- package/dist/cache.test.js.map +1 -1
- package/dist/createServer.d.ts +17 -0
- package/dist/createServer.js +907 -0
- package/dist/createServer.js.map +1 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +5 -715
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +203 -61
- package/dist/index.test.js.map +1 -1
- package/dist/statusDescriptions.d.ts +6 -0
- package/dist/statusDescriptions.js +69 -0
- package/dist/statusDescriptions.js.map +1 -0
- package/dist/testArtifacts.d.ts +59 -7
- package/dist/testArtifacts.js +174 -72
- package/dist/testArtifacts.js.map +1 -1
- package/jest.config.js +11 -2
- package/package.json +20 -20
- package/src/HttpError.ts +12 -0
- package/src/cache.test.ts +10 -7
- package/src/createServer.ts +981 -0
- package/src/index.test.ts +208 -31
- package/src/index.ts +5 -793
- package/src/statusDescriptions.ts +68 -0
- package/src/testArtifacts.ts +189 -42
- package/tsconfig.json +5 -3
- package/typedoc.json +4 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAElC,eAAe,YAAY,CAAC"}
|
package/dist/index.test.js
CHANGED
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const driver_sqlite3_1 = __importDefault(require("@nymphjs/driver-sqlite3"));
|
|
8
|
-
const nymph_1 = require("@nymphjs/nymph");
|
|
9
|
-
const client_node_1 = require("@nymphjs/client-node");
|
|
10
|
-
const client_1 = require("@nymphjs/client");
|
|
11
|
-
const index_1 = __importDefault(require("./index"));
|
|
12
|
-
const testArtifacts_1 = require("./testArtifacts");
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import SQLite3Driver from '@nymphjs/driver-sqlite3';
|
|
3
|
+
import { Nymph as NymphServer } from '@nymphjs/nymph';
|
|
4
|
+
import { Nymph, Entity, HttpError } from '@nymphjs/client';
|
|
5
|
+
import createServer from './index.js';
|
|
6
|
+
import { EmployeeModel as EmployeeModelClass, Employee as EmployeeClass, RestrictedModel as RestrictedModelClass, Restricted as RestrictedClass, } from './testArtifacts.js';
|
|
13
7
|
const sqliteConfig = {
|
|
14
8
|
filename: ':memory:',
|
|
15
9
|
};
|
|
16
|
-
const nymphServer = new
|
|
17
|
-
nymphServer.addEntityClass(
|
|
18
|
-
const
|
|
19
|
-
app
|
|
10
|
+
const nymphServer = new NymphServer({}, new SQLite3Driver(sqliteConfig));
|
|
11
|
+
const EmployeeModel = nymphServer.addEntityClass(EmployeeModelClass);
|
|
12
|
+
const RestrictedModel = nymphServer.addEntityClass(RestrictedModelClass);
|
|
13
|
+
const app = express();
|
|
14
|
+
app.use('/test', createServer(nymphServer));
|
|
20
15
|
const server = app.listen(5080);
|
|
21
|
-
const
|
|
22
|
-
|
|
16
|
+
const REST_URL = 'http://localhost:5080/test/';
|
|
17
|
+
const nymph = new Nymph({
|
|
18
|
+
restUrl: REST_URL,
|
|
23
19
|
});
|
|
24
|
-
nymph.addEntityClass(
|
|
20
|
+
const Employee = nymph.addEntityClass(EmployeeClass);
|
|
21
|
+
const Restricted = nymph.addEntityClass(RestrictedClass);
|
|
25
22
|
describe('Nymph REST Server and Client', () => {
|
|
26
23
|
async function createJane() {
|
|
27
|
-
const jane = await
|
|
24
|
+
const jane = await Employee.factory();
|
|
28
25
|
jane.name = 'Jane Doe';
|
|
29
26
|
jane.current = true;
|
|
30
27
|
jane.salary = 8000000;
|
|
@@ -54,14 +51,14 @@ describe('Nymph REST Server and Client', () => {
|
|
|
54
51
|
expect(jane.mdate).toBeGreaterThan(oldMdate);
|
|
55
52
|
});
|
|
56
53
|
it('create two unrelated entities', async () => {
|
|
57
|
-
const entity = await
|
|
54
|
+
const entity = await Employee.factory();
|
|
58
55
|
entity.name = 'Jane Doe';
|
|
59
56
|
entity.current = true;
|
|
60
57
|
entity.salary = 8000000;
|
|
61
58
|
entity.startDate = Date.now();
|
|
62
59
|
entity.subordinates = [];
|
|
63
60
|
entity.title = 'Seniorer Person';
|
|
64
|
-
const entity2 = await
|
|
61
|
+
const entity2 = await Employee.factory();
|
|
65
62
|
entity2.name = 'John Doe';
|
|
66
63
|
entity2.current = true;
|
|
67
64
|
entity2.salary = 8000000;
|
|
@@ -76,13 +73,13 @@ describe('Nymph REST Server and Client', () => {
|
|
|
76
73
|
entity.building = 'J2';
|
|
77
74
|
entity2.building = 'B4';
|
|
78
75
|
await nymph.saveEntities(entities);
|
|
79
|
-
const jane = await nymph.getEntity({ class:
|
|
80
|
-
const john = await nymph.getEntity({ class:
|
|
76
|
+
const jane = await nymph.getEntity({ class: Employee }, entity.guid);
|
|
77
|
+
const john = await nymph.getEntity({ class: Employee }, entity2.guid);
|
|
81
78
|
expect(jane?.building).toEqual('J2');
|
|
82
79
|
expect(john?.building).toEqual('B4');
|
|
83
80
|
});
|
|
84
81
|
it('create two related entities', async () => {
|
|
85
|
-
const jane = await
|
|
82
|
+
const jane = await Employee.factory();
|
|
86
83
|
jane.name = 'Jane Doe';
|
|
87
84
|
jane.current = true;
|
|
88
85
|
jane.salary = 8000000;
|
|
@@ -90,7 +87,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
90
87
|
jane.subordinates = [];
|
|
91
88
|
jane.title = 'Seniorer Person';
|
|
92
89
|
await jane.$save();
|
|
93
|
-
const steve = await
|
|
90
|
+
const steve = await Employee.factory();
|
|
94
91
|
steve.$addTag('boss', 'bigcheese');
|
|
95
92
|
steve.name = 'Steve Guy';
|
|
96
93
|
steve.current = true;
|
|
@@ -102,22 +99,22 @@ describe('Nymph REST Server and Client', () => {
|
|
|
102
99
|
if (jane.guid == null || steve.guid == null) {
|
|
103
100
|
throw new Error('Entity is null.');
|
|
104
101
|
}
|
|
105
|
-
const checkSteve = await nymph.getEntity({ class:
|
|
102
|
+
const checkSteve = await nymph.getEntity({ class: Employee }, {
|
|
106
103
|
type: '&',
|
|
107
104
|
ref: ['subordinates', jane],
|
|
108
105
|
});
|
|
109
106
|
expect(checkSteve?.guid).toEqual(steve.guid);
|
|
110
|
-
const checkSteveQref = await nymph.getEntity({ class:
|
|
107
|
+
const checkSteveQref = await nymph.getEntity({ class: Employee }, {
|
|
111
108
|
type: '&',
|
|
112
109
|
qref: [
|
|
113
110
|
'subordinates',
|
|
114
|
-
[{ class:
|
|
111
|
+
[{ class: Employee }, { type: '&', guid: jane.guid }],
|
|
115
112
|
],
|
|
116
113
|
});
|
|
117
114
|
expect(checkSteveQref?.guid).toEqual(steve.guid);
|
|
118
115
|
});
|
|
119
116
|
it('add, check, and remove tags', async () => {
|
|
120
|
-
const entity = await
|
|
117
|
+
const entity = await Entity.factory();
|
|
121
118
|
entity.$addTag('test');
|
|
122
119
|
expect(entity.$hasTag('test')).toEqual(true);
|
|
123
120
|
entity.$addTag('test', 'test2');
|
|
@@ -137,13 +134,13 @@ describe('Nymph REST Server and Client', () => {
|
|
|
137
134
|
if (jane.guid == null) {
|
|
138
135
|
throw new Error('Entity is null.');
|
|
139
136
|
}
|
|
140
|
-
const entity =
|
|
137
|
+
const entity = Employee.factoryReference([
|
|
141
138
|
'nymph_entity_reference',
|
|
142
139
|
jane.guid,
|
|
143
140
|
'Employee',
|
|
144
141
|
]);
|
|
145
|
-
await entity.$
|
|
146
|
-
expect(
|
|
142
|
+
await entity.$wake();
|
|
143
|
+
expect(entity?.name).toEqual('Jane Doe');
|
|
147
144
|
});
|
|
148
145
|
it('change an entity', async () => {
|
|
149
146
|
const employee = await createJane();
|
|
@@ -154,7 +151,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
154
151
|
employee.current = false;
|
|
155
152
|
employee.endDate = Date.now() + 1;
|
|
156
153
|
await employee.$save();
|
|
157
|
-
const check = await
|
|
154
|
+
const check = await Employee.factory(employee.guid);
|
|
158
155
|
expect(check.salary).toBeUndefined();
|
|
159
156
|
expect(check.current).toEqual(false);
|
|
160
157
|
expect(check.endDate).toBeGreaterThan(check.startDate ?? 0);
|
|
@@ -168,7 +165,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
168
165
|
employee.current = false;
|
|
169
166
|
employee.endDate = Date.now() + 1;
|
|
170
167
|
await employee.$patch();
|
|
171
|
-
const check = await
|
|
168
|
+
const check = await Employee.factory(employee.guid);
|
|
172
169
|
expect(check.salary).toBeUndefined();
|
|
173
170
|
expect(check.current).toEqual(false);
|
|
174
171
|
expect(check.endDate).toBeGreaterThan(check.startDate ?? 0);
|
|
@@ -176,7 +173,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
176
173
|
it('get an entity', async () => {
|
|
177
174
|
await createJane();
|
|
178
175
|
const jane = await nymph.getEntity({
|
|
179
|
-
class:
|
|
176
|
+
class: Employee,
|
|
180
177
|
}, {
|
|
181
178
|
type: '&',
|
|
182
179
|
equal: ['name', 'Jane Doe'],
|
|
@@ -184,12 +181,41 @@ describe('Nymph REST Server and Client', () => {
|
|
|
184
181
|
expect(jane).not.toBeNull();
|
|
185
182
|
expect(jane?.guid).not.toBeNull();
|
|
186
183
|
});
|
|
184
|
+
it('try to get a non-existent entity', async () => {
|
|
185
|
+
let error = { status: 200 };
|
|
186
|
+
try {
|
|
187
|
+
await nymph.getEntity({
|
|
188
|
+
class: Employee,
|
|
189
|
+
}, {
|
|
190
|
+
type: '&',
|
|
191
|
+
equal: ['name', 'Non Existent'],
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
catch (e) {
|
|
195
|
+
error = e;
|
|
196
|
+
}
|
|
197
|
+
expect(error.status).toEqual(404);
|
|
198
|
+
});
|
|
199
|
+
it('try to get a non-existent entity without error', async () => {
|
|
200
|
+
const nymph = new Nymph({
|
|
201
|
+
restUrl: REST_URL,
|
|
202
|
+
returnNullOnNotFound: true,
|
|
203
|
+
});
|
|
204
|
+
const Employee = nymph.addEntityClass(EmployeeClass);
|
|
205
|
+
const nonexistent = await nymph.getEntity({
|
|
206
|
+
class: Employee,
|
|
207
|
+
}, {
|
|
208
|
+
type: '&',
|
|
209
|
+
equal: ['name', 'Non Existent'],
|
|
210
|
+
});
|
|
211
|
+
expect(nonexistent).toBeNull();
|
|
212
|
+
});
|
|
187
213
|
it('get entities', async () => {
|
|
188
214
|
for (let i = 0; i < 4; i++) {
|
|
189
215
|
await createJane();
|
|
190
216
|
}
|
|
191
217
|
const entities = await nymph.getEntities({
|
|
192
|
-
class:
|
|
218
|
+
class: Employee,
|
|
193
219
|
limit: 4,
|
|
194
220
|
}, {
|
|
195
221
|
type: '&',
|
|
@@ -204,29 +230,34 @@ describe('Nymph REST Server and Client', () => {
|
|
|
204
230
|
for (let i = 0; i < 20; i++) {
|
|
205
231
|
await createJane();
|
|
206
232
|
}
|
|
207
|
-
const result = await nymph.getEntities({ class:
|
|
233
|
+
const result = await nymph.getEntities({ class: Employee });
|
|
234
|
+
// Testing count return...
|
|
208
235
|
const resultCount = await nymph.getEntities({
|
|
209
|
-
class:
|
|
236
|
+
class: Employee,
|
|
210
237
|
return: 'count',
|
|
211
238
|
});
|
|
212
239
|
expect(resultCount).toBeGreaterThanOrEqual(1);
|
|
213
240
|
expect(resultCount).toEqual(result.length);
|
|
214
|
-
const resultSelectors = await nymph.getEntities({ class:
|
|
215
|
-
|
|
241
|
+
const resultSelectors = await nymph.getEntities({ class: Employee }, { type: '&', equal: ['name', 'Jane Doe'] });
|
|
242
|
+
// Testing count return with selectors...
|
|
243
|
+
const resultSelectorsCount = await nymph.getEntities({ class: Employee, return: 'count' }, { type: '&', equal: ['name', 'Jane Doe'] });
|
|
216
244
|
expect(resultSelectorsCount).toBeGreaterThanOrEqual(1);
|
|
217
245
|
expect(resultSelectorsCount).toEqual(resultSelectors.length);
|
|
246
|
+
// Testing count return with limit...
|
|
218
247
|
const resultSelectorsLimit = await nymph.getEntities({
|
|
219
|
-
class:
|
|
248
|
+
class: Employee,
|
|
220
249
|
limit: 1,
|
|
221
250
|
return: 'count',
|
|
222
251
|
});
|
|
223
252
|
expect(resultSelectorsLimit).toEqual(1);
|
|
253
|
+
// Testing count return with limit...
|
|
224
254
|
const resultSelectorsSingle = await nymph.getEntity({
|
|
225
|
-
class:
|
|
255
|
+
class: Employee,
|
|
226
256
|
return: 'count',
|
|
227
257
|
});
|
|
228
258
|
expect(resultSelectorsSingle).toEqual(1);
|
|
229
|
-
|
|
259
|
+
// Testing empty count...
|
|
260
|
+
const resultSelectorsEmpty = await nymph.getEntities({ class: Employee, return: 'count' }, { type: '&', tag: 'pickle' });
|
|
230
261
|
expect(resultSelectorsEmpty).toEqual(0);
|
|
231
262
|
});
|
|
232
263
|
it('get entity GUIDs', async () => {
|
|
@@ -234,7 +265,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
234
265
|
await createJane();
|
|
235
266
|
}
|
|
236
267
|
const entities = await nymph.getEntities({
|
|
237
|
-
class:
|
|
268
|
+
class: Employee,
|
|
238
269
|
limit: 4,
|
|
239
270
|
return: 'guid',
|
|
240
271
|
}, {
|
|
@@ -251,7 +282,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
251
282
|
await createJane();
|
|
252
283
|
}
|
|
253
284
|
const entities = await nymph.getEntities({
|
|
254
|
-
class:
|
|
285
|
+
class: Employee,
|
|
255
286
|
limit: 4,
|
|
256
287
|
}, {
|
|
257
288
|
type: '&',
|
|
@@ -270,7 +301,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
270
301
|
await createJane();
|
|
271
302
|
}
|
|
272
303
|
const entities = await nymph.getEntities({
|
|
273
|
-
class:
|
|
304
|
+
class: Employee,
|
|
274
305
|
limit: 4,
|
|
275
306
|
}, {
|
|
276
307
|
type: '&',
|
|
@@ -290,7 +321,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
290
321
|
await createJane();
|
|
291
322
|
}
|
|
292
323
|
const entities = await nymph.getEntities({
|
|
293
|
-
class:
|
|
324
|
+
class: Employee,
|
|
294
325
|
limit: 4,
|
|
295
326
|
}, {
|
|
296
327
|
type: '&',
|
|
@@ -322,7 +353,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
322
353
|
}
|
|
323
354
|
const deleted = await jane.$delete();
|
|
324
355
|
expect(deleted).toEqual(true);
|
|
325
|
-
const check = await nymph.getEntities({ class:
|
|
356
|
+
const check = await nymph.getEntities({ class: Employee }, {
|
|
326
357
|
type: '&',
|
|
327
358
|
guid,
|
|
328
359
|
});
|
|
@@ -338,14 +369,14 @@ describe('Nymph REST Server and Client', () => {
|
|
|
338
369
|
});
|
|
339
370
|
const deleted = await nymph.deleteEntities(janes);
|
|
340
371
|
expect(deleted).toEqual(guids);
|
|
341
|
-
const check = await nymph.getEntities({ class:
|
|
372
|
+
const check = await nymph.getEntities({ class: Employee }, {
|
|
342
373
|
type: '|',
|
|
343
374
|
guid: guids,
|
|
344
375
|
});
|
|
345
376
|
expect(check.length).toEqual(0);
|
|
346
377
|
});
|
|
347
378
|
it('try to save Entity class directly', async () => {
|
|
348
|
-
const entity = new
|
|
379
|
+
const entity = new Entity();
|
|
349
380
|
entity.$nymph = nymph;
|
|
350
381
|
entity.something = 'Anything';
|
|
351
382
|
let error = { message: '' };
|
|
@@ -360,7 +391,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
360
391
|
it('handle forbidden method', async () => {
|
|
361
392
|
let error = { status: 200 };
|
|
362
393
|
try {
|
|
363
|
-
await
|
|
394
|
+
await Employee.inaccessibleMethod();
|
|
364
395
|
}
|
|
365
396
|
catch (e) {
|
|
366
397
|
error = e;
|
|
@@ -368,30 +399,91 @@ describe('Nymph REST Server and Client', () => {
|
|
|
368
399
|
expect(error.status).toEqual(403);
|
|
369
400
|
});
|
|
370
401
|
it('handle server side static error', async () => {
|
|
371
|
-
let error = { error: { name: '' } };
|
|
402
|
+
let error = { status: 0, error: { name: '' } };
|
|
372
403
|
try {
|
|
373
|
-
await
|
|
404
|
+
await Employee.throwErrorStatic();
|
|
374
405
|
}
|
|
375
406
|
catch (e) {
|
|
376
407
|
error = e;
|
|
377
408
|
}
|
|
409
|
+
expect(error.status).toEqual(500);
|
|
410
|
+
expect(error.error.name).toEqual('BadFunctionCallError');
|
|
411
|
+
});
|
|
412
|
+
it('handle server side static iterator error', async () => {
|
|
413
|
+
let error = { status: 0, error: { name: '' } };
|
|
414
|
+
const data = await Employee.throwErrorStaticIterable();
|
|
415
|
+
let count = 0;
|
|
416
|
+
for await (let value of data) {
|
|
417
|
+
count++;
|
|
418
|
+
if (value instanceof Error) {
|
|
419
|
+
error = value;
|
|
420
|
+
}
|
|
421
|
+
else {
|
|
422
|
+
expect(value).toEqual(count);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
expect(count).toEqual(2);
|
|
426
|
+
expect(error.status).toEqual(500);
|
|
378
427
|
expect(error.error.name).toEqual('BadFunctionCallError');
|
|
379
428
|
});
|
|
380
429
|
it('handle server side error', async () => {
|
|
381
430
|
const jane = await createJane();
|
|
382
|
-
let error = { error: { name: '' } };
|
|
431
|
+
let error = { status: 0, error: { name: '' } };
|
|
383
432
|
try {
|
|
384
433
|
await jane.$throwError();
|
|
385
434
|
}
|
|
386
435
|
catch (e) {
|
|
387
436
|
error = e;
|
|
388
437
|
}
|
|
438
|
+
expect(error.status).toEqual(500);
|
|
389
439
|
expect(error.error.name).toEqual('BadFunctionCallError');
|
|
390
440
|
});
|
|
441
|
+
it('handle server side HTTP error', async () => {
|
|
442
|
+
const jane = await createJane();
|
|
443
|
+
let error = { status: 0, statusText: '', message: '' };
|
|
444
|
+
try {
|
|
445
|
+
await jane.$throwHttpError();
|
|
446
|
+
}
|
|
447
|
+
catch (e) {
|
|
448
|
+
error = e;
|
|
449
|
+
}
|
|
450
|
+
expect(error.status).toEqual(501);
|
|
451
|
+
expect(error.statusText).toEqual('Not Implemented');
|
|
452
|
+
expect(error.message).toEqual('A 501 HTTP error.');
|
|
453
|
+
});
|
|
454
|
+
it('handle server side custom HTTP error', async () => {
|
|
455
|
+
const jane = await createJane();
|
|
456
|
+
let error = { status: 0, statusText: '', message: '' };
|
|
457
|
+
try {
|
|
458
|
+
await jane.$throwHttpErrorWithDescription();
|
|
459
|
+
}
|
|
460
|
+
catch (e) {
|
|
461
|
+
error = e;
|
|
462
|
+
}
|
|
463
|
+
expect(error.status).toEqual(512);
|
|
464
|
+
expect(error.statusText).toEqual('Some Error');
|
|
465
|
+
expect(error.message).toEqual('A 512 HTTP error.');
|
|
466
|
+
});
|
|
391
467
|
it('call a server side static method', async () => {
|
|
392
|
-
const data = await
|
|
468
|
+
const data = await Employee.testStatic(5);
|
|
393
469
|
expect(data).toEqual(10);
|
|
394
470
|
});
|
|
471
|
+
it('call a server side static iterator method', async () => {
|
|
472
|
+
const data = await Employee.testStaticIterable(5);
|
|
473
|
+
let count = 0;
|
|
474
|
+
for await (let value of data) {
|
|
475
|
+
count++;
|
|
476
|
+
expect(value).toEqual(5 + count);
|
|
477
|
+
}
|
|
478
|
+
expect(count).toEqual(3);
|
|
479
|
+
});
|
|
480
|
+
it('aborts a server side static iterator method', async () => {
|
|
481
|
+
const data = await Employee.testStaticIterableAbort();
|
|
482
|
+
data.abortController.abort();
|
|
483
|
+
// Wait 1 second to ensure server receives abort signal.
|
|
484
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
485
|
+
expect(true).toBeTruthy();
|
|
486
|
+
});
|
|
395
487
|
it('call a stateless server side method', async () => {
|
|
396
488
|
const jane = await createJane();
|
|
397
489
|
const data = await jane?.$testMethodStateless(5);
|
|
@@ -411,7 +503,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
411
503
|
throw new Error('Entity is null.');
|
|
412
504
|
}
|
|
413
505
|
const jane2 = await nymph.getEntity({
|
|
414
|
-
class:
|
|
506
|
+
class: Employee,
|
|
415
507
|
}, jane1.guid);
|
|
416
508
|
if (jane1 == null || jane2 == null) {
|
|
417
509
|
throw new Error('Entity is null.');
|
|
@@ -428,7 +520,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
428
520
|
throw new Error('Entity is null.');
|
|
429
521
|
}
|
|
430
522
|
const second = await nymph.getEntity({
|
|
431
|
-
class:
|
|
523
|
+
class: Employee,
|
|
432
524
|
}, first.guid);
|
|
433
525
|
if (second == null || second.guid == null) {
|
|
434
526
|
throw new Error('Entity is null.');
|
|
@@ -448,7 +540,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
448
540
|
throw new Error('Entity is null.');
|
|
449
541
|
}
|
|
450
542
|
const second = await nymph.getEntity({
|
|
451
|
-
class:
|
|
543
|
+
class: Employee,
|
|
452
544
|
}, first.guid);
|
|
453
545
|
if (second == null || second.guid == null) {
|
|
454
546
|
throw new Error('Entity is null.');
|
|
@@ -459,7 +551,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
459
551
|
expect(first.$is(second)).toEqual(true);
|
|
460
552
|
await createJane();
|
|
461
553
|
const third = await nymph.getEntity({
|
|
462
|
-
class:
|
|
554
|
+
class: Employee,
|
|
463
555
|
}, {
|
|
464
556
|
type: '&',
|
|
465
557
|
'!guid': first.guid,
|
|
@@ -469,6 +561,56 @@ describe('Nymph REST Server and Client', () => {
|
|
|
469
561
|
}
|
|
470
562
|
expect(first.$is(third)).toEqual(false);
|
|
471
563
|
});
|
|
564
|
+
it("doesn't allow creation of a restricted entity class", async () => {
|
|
565
|
+
const attempt = await Restricted.factory();
|
|
566
|
+
attempt.name = 'Jane Doe';
|
|
567
|
+
let error = null;
|
|
568
|
+
try {
|
|
569
|
+
await attempt.$save();
|
|
570
|
+
}
|
|
571
|
+
catch (e) {
|
|
572
|
+
error = e;
|
|
573
|
+
}
|
|
574
|
+
expect(error).toBeInstanceOf(HttpError);
|
|
575
|
+
expect(error.status).toEqual(403);
|
|
576
|
+
});
|
|
577
|
+
it("doesn't allow search of a restricted entity class", async () => {
|
|
578
|
+
let error = null;
|
|
579
|
+
try {
|
|
580
|
+
await nymph.getEntity({
|
|
581
|
+
class: Restricted,
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
catch (e) {
|
|
585
|
+
error = e;
|
|
586
|
+
}
|
|
587
|
+
expect(error).toBeInstanceOf(HttpError);
|
|
588
|
+
expect(error.status).toEqual(403);
|
|
589
|
+
});
|
|
590
|
+
it("doesn't allow methods of a restricted entity class", async () => {
|
|
591
|
+
const attempt = await Restricted.factory();
|
|
592
|
+
attempt.name = 'Jane Doe';
|
|
593
|
+
let error = null;
|
|
594
|
+
try {
|
|
595
|
+
await attempt.$testMethod(1);
|
|
596
|
+
}
|
|
597
|
+
catch (e) {
|
|
598
|
+
error = e;
|
|
599
|
+
}
|
|
600
|
+
expect(error).toBeInstanceOf(HttpError);
|
|
601
|
+
expect(error.status).toEqual(403);
|
|
602
|
+
});
|
|
603
|
+
it("doesn't allow static methods of a restricted entity class", async () => {
|
|
604
|
+
let error = null;
|
|
605
|
+
try {
|
|
606
|
+
await Restricted.testStatic(1);
|
|
607
|
+
}
|
|
608
|
+
catch (e) {
|
|
609
|
+
error = e;
|
|
610
|
+
}
|
|
611
|
+
expect(error).toBeInstanceOf(HttpError);
|
|
612
|
+
expect(error.status).toEqual(403);
|
|
613
|
+
});
|
|
472
614
|
it('get a new UID', async () => {
|
|
473
615
|
const uidValue = await nymph.newUID('employee');
|
|
474
616
|
expect(typeof uidValue).toEqual('number');
|
|
@@ -510,7 +652,7 @@ describe('Nymph REST Server and Client', () => {
|
|
|
510
652
|
expect(error.status).toEqual(404);
|
|
511
653
|
});
|
|
512
654
|
afterAll(() => {
|
|
513
|
-
server.close();
|
|
655
|
+
server.close(); // avoid jest open handle error
|
|
514
656
|
});
|
|
515
657
|
});
|
|
516
658
|
//# sourceMappingURL=index.test.js.map
|