@antelopejs/interface-data-api 0.0.2

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 (42) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +45 -0
  3. package/dist/antelope.test.d.ts +2 -0
  4. package/dist/antelope.test.js +59 -0
  5. package/dist/antelope.test.js.map +1 -0
  6. package/dist/components.d.ts +72 -0
  7. package/dist/components.js +344 -0
  8. package/dist/components.js.map +1 -0
  9. package/dist/index.d.ts +93 -0
  10. package/dist/index.js +217 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/metadata.d.ts +290 -0
  13. package/dist/metadata.js +444 -0
  14. package/dist/metadata.js.map +1 -0
  15. package/dist/tests/components/access_control.test.d.ts +1 -0
  16. package/dist/tests/components/access_control.test.js +138 -0
  17. package/dist/tests/components/access_control.test.js.map +1 -0
  18. package/dist/tests/components/listable.test.d.ts +1 -0
  19. package/dist/tests/components/listable.test.js +361 -0
  20. package/dist/tests/components/listable.test.js.map +1 -0
  21. package/dist/tests/components/mandatory.test.d.ts +1 -0
  22. package/dist/tests/components/mandatory.test.js +193 -0
  23. package/dist/tests/components/mandatory.test.js.map +1 -0
  24. package/dist/tests/components/per_action_access.test.d.ts +1 -0
  25. package/dist/tests/components/per_action_access.test.js +115 -0
  26. package/dist/tests/components/per_action_access.test.js.map +1 -0
  27. package/dist/tests/components/validator.test.d.ts +1 -0
  28. package/dist/tests/components/validator.test.js +178 -0
  29. package/dist/tests/components/validator.test.js.map +1 -0
  30. package/dist/tests/constants.d.ts +3 -0
  31. package/dist/tests/constants.js +7 -0
  32. package/dist/tests/constants.js.map +1 -0
  33. package/dist/tests/index/routes.test.d.ts +1 -0
  34. package/dist/tests/index/routes.test.js +210 -0
  35. package/dist/tests/index/routes.test.js.map +1 -0
  36. package/dist/tests/integration.test.d.ts +1 -0
  37. package/dist/tests/integration.test.js +838 -0
  38. package/dist/tests/integration.test.js.map +1 -0
  39. package/dist/tests/utils.d.ts +12 -0
  40. package/dist/tests/utils.js +70 -0
  41. package/dist/tests/utils.js.map +1 -0
  42. package/package.json +78 -0
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
+ const interface_data_api_1 = require("@antelopejs/interface-data-api");
18
+ const metadata_1 = require("@antelopejs/interface-data-api/metadata");
19
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
20
+ const chai_1 = require("chai");
21
+ const utils_1 = require("../utils");
22
+ const currentTestName = node_path_1.default
23
+ .basename(__filename)
24
+ .replace(/\.test\.(ts|js)$/, "");
25
+ const userTableName = `users-${currentTestName}`;
26
+ const schemaName = "default";
27
+ let User = class User extends interface_database_decorators_1.Table {
28
+ };
29
+ __decorate([
30
+ (0, interface_database_decorators_1.Index)(),
31
+ __metadata("design:type", String)
32
+ ], User.prototype, "email", void 0);
33
+ User = __decorate([
34
+ (0, interface_database_decorators_1.RegisterTable)(userTableName, schemaName)
35
+ ], User);
36
+ class UserModel extends (0, interface_database_decorators_1.BasicDataModel)(User, userTableName) {
37
+ }
38
+ const defaultUserDataset = {
39
+ name: "Jean Test",
40
+ email: "jean.test@email.com",
41
+ role: "admin",
42
+ age: 30,
43
+ };
44
+ describe("Per-Action Access Control", () => {
45
+ it("writable in new but read-only in edit", async () => await writableInNewReadOnlyInEdit());
46
+ it("read-only globally but read-write in new", async () => await readOnlyGloballyReadWriteInNew());
47
+ after(async () => { });
48
+ });
49
+ async function _createDataController(testName, user) {
50
+ let _PerActionAccessAPI = class _PerActionAccessAPI extends (0, interface_data_api_1.DataController)(User, interface_data_api_1.DefaultRoutes.All, (0, interface_api_1.Controller)(`/${testName}`)) {
51
+ };
52
+ __decorate([
53
+ (0, metadata_1.ModelReference)(),
54
+ (0, interface_database_decorators_1.Model)(UserModel),
55
+ __metadata("design:type", UserModel)
56
+ ], _PerActionAccessAPI.prototype, "userModel", void 0);
57
+ __decorate([
58
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
59
+ __metadata("design:type", String)
60
+ ], _PerActionAccessAPI.prototype, "_id", void 0);
61
+ __decorate([
62
+ (0, metadata_1.Listable)(),
63
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
64
+ __metadata("design:type", String)
65
+ ], _PerActionAccessAPI.prototype, "name", void 0);
66
+ __decorate([
67
+ (0, metadata_1.Listable)(),
68
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
69
+ __metadata("design:type", String)
70
+ ], _PerActionAccessAPI.prototype, "email", void 0);
71
+ __decorate([
72
+ (0, metadata_1.Listable)(),
73
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite, { edit: metadata_1.AccessMode.ReadOnly }),
74
+ __metadata("design:type", String)
75
+ ], _PerActionAccessAPI.prototype, "role", void 0);
76
+ __decorate([
77
+ (0, metadata_1.Listable)(),
78
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly, { new: metadata_1.AccessMode.ReadWrite }),
79
+ __metadata("design:type", Number)
80
+ ], _PerActionAccessAPI.prototype, "age", void 0);
81
+ _PerActionAccessAPI = __decorate([
82
+ (0, interface_data_api_1.RegisterDataController)()
83
+ ], _PerActionAccessAPI);
84
+ await (0, interface_database_decorators_1.CreateDatabaseSchemaInstance)(schemaName);
85
+ const database = (0, utils_1.getSchemaInstance)(schemaName);
86
+ const userModel = new UserModel(database);
87
+ const insertResult = await userModel.insert(user);
88
+ return { id: insertResult[0], userModel };
89
+ }
90
+ async function writableInNewReadOnlyInEdit() {
91
+ const { id, userModel } = await _createDataController((0, utils_1.getFunctionName)(), defaultUserDataset);
92
+ const getResponse = await (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), { id });
93
+ (0, chai_1.expect)(getResponse.status).to.equal(200);
94
+ const data = (await getResponse.json());
95
+ (0, chai_1.expect)(data.role).to.equal("admin");
96
+ await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), { role: "user" }, { id });
97
+ const user = await userModel.get(id);
98
+ (0, chai_1.expect)(user?.role).to.equal("admin");
99
+ }
100
+ async function readOnlyGloballyReadWriteInNew() {
101
+ const { id, userModel } = await _createDataController((0, utils_1.getFunctionName)(), defaultUserDataset);
102
+ const newResponse = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), defaultUserDataset);
103
+ (0, chai_1.expect)(newResponse.status).to.equal(200);
104
+ const newIds = (await newResponse.json());
105
+ const newUser = await userModel.get(newIds[0]);
106
+ (0, chai_1.expect)(newUser?.age).to.equal(30);
107
+ await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), { age: 99 }, { id });
108
+ const editedUser = await userModel.get(id);
109
+ (0, chai_1.expect)(editedUser?.age).to.equal(30);
110
+ const getResponse = await (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), { id });
111
+ (0, chai_1.expect)(getResponse.status).to.equal(200);
112
+ const getData = (await getResponse.json());
113
+ (0, chai_1.expect)(getData.age).to.equal(30);
114
+ }
115
+ //# sourceMappingURL=per_action_access.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"per_action_access.test.js","sourceRoot":"","sources":["../../../src/tests/components/per_action_access.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
+ const interface_data_api_1 = require("@antelopejs/interface-data-api");
18
+ const metadata_1 = require("@antelopejs/interface-data-api/metadata");
19
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
20
+ const chai_1 = require("chai");
21
+ const utils_1 = require("../utils");
22
+ const currentTestName = node_path_1.default
23
+ .basename(__filename)
24
+ .replace(/\.test\.(ts|js)$/, "");
25
+ const productTableName = `products-${currentTestName}`;
26
+ const schemaName = "default";
27
+ let Product = class Product extends interface_database_decorators_1.Table {
28
+ };
29
+ __decorate([
30
+ (0, interface_database_decorators_1.Index)(),
31
+ __metadata("design:type", String)
32
+ ], Product.prototype, "sku", void 0);
33
+ Product = __decorate([
34
+ (0, interface_database_decorators_1.RegisterTable)(productTableName, schemaName)
35
+ ], Product);
36
+ class ProductModel extends (0, interface_database_decorators_1.BasicDataModel)(Product, productTableName) {
37
+ }
38
+ const validProductData = {
39
+ default: {
40
+ name: "Valid Product",
41
+ price: 29.99,
42
+ email: "test@example.com",
43
+ birthDate: new Date("1990-01-01"),
44
+ status: "active",
45
+ tags: ["electronics", "gadgets"],
46
+ },
47
+ alternative: {
48
+ name: "Valid Product",
49
+ price: 29.99,
50
+ email: "test@example.com",
51
+ birthDate: new Date("1990-01-01"),
52
+ status: "active",
53
+ tags: ["electronics", "gadgets"],
54
+ },
55
+ };
56
+ describe("Field Validator", () => {
57
+ it("validate correct parameters on new", async () => await validateCorrectParametersOnNew());
58
+ it("validate incorrect date parameter on new", async () => await validateIncorrectDateParameterOnNew());
59
+ it("validate incorrect regex parameter on new", async () => await validateIncorrectEmailParameterOnNew());
60
+ it("validate incorrect string parameter on new", async () => await validateIncorrectStringParameterOnNew());
61
+ it("validate incorrect number parameter on new", async () => await validateIncorrectNumberParameterOnNew());
62
+ it("validate correct parameters on edit", async () => await validateCorrectParametersOnEdit());
63
+ it("validate incorrect date parameter on edit", async () => await validateIncorrectDateParameterOnEdit());
64
+ it("validate incorrect regex parameter on edit", async () => await validateIncorrectEmailParameterOnEdit());
65
+ it("validate incorrect string parameter on edit", async () => await validateIncorrectStringParameterOnEdit());
66
+ it("validate incorrect number parameter on edit", async () => await validateIncorrectNumberParameterOnEdit());
67
+ after(async () => { });
68
+ });
69
+ async function _createDataController(testName, route, product) {
70
+ let _ValidatorTestAPI = class _ValidatorTestAPI extends (0, interface_data_api_1.DataController)(Product, route, (0, interface_api_1.Controller)(`/${testName}`)) {
71
+ };
72
+ __decorate([
73
+ (0, metadata_1.ModelReference)(),
74
+ (0, interface_database_decorators_1.Model)(ProductModel),
75
+ __metadata("design:type", ProductModel)
76
+ ], _ValidatorTestAPI.prototype, "productModel", void 0);
77
+ __decorate([
78
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
79
+ (0, metadata_1.Validator)((value) => typeof value === "string" && value.length >= 3),
80
+ __metadata("design:type", String)
81
+ ], _ValidatorTestAPI.prototype, "name", void 0);
82
+ __decorate([
83
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
84
+ (0, metadata_1.Validator)((value) => typeof value === "number" && value >= 0),
85
+ __metadata("design:type", Number)
86
+ ], _ValidatorTestAPI.prototype, "price", void 0);
87
+ __decorate([
88
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
89
+ (0, metadata_1.Validator)((value) => {
90
+ if (typeof value !== "string")
91
+ return false;
92
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
93
+ return emailRegex.test(value);
94
+ }),
95
+ __metadata("design:type", String)
96
+ ], _ValidatorTestAPI.prototype, "email", void 0);
97
+ __decorate([
98
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
99
+ (0, metadata_1.Validator)((value) => typeof value === "string" && !Number.isNaN(Date.parse(value))),
100
+ __metadata("design:type", Date)
101
+ ], _ValidatorTestAPI.prototype, "birthDate", void 0);
102
+ __decorate([
103
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
104
+ (0, metadata_1.Validator)((value) => ["active", "inactive", "pending"].includes(value)),
105
+ __metadata("design:type", String)
106
+ ], _ValidatorTestAPI.prototype, "status", void 0);
107
+ __decorate([
108
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
109
+ (0, metadata_1.Validator)((value) => Array.isArray(value) &&
110
+ value.every((tag) => typeof tag === "string" && tag.length > 0)),
111
+ __metadata("design:type", Array)
112
+ ], _ValidatorTestAPI.prototype, "tags", void 0);
113
+ _ValidatorTestAPI = __decorate([
114
+ (0, interface_data_api_1.RegisterDataController)()
115
+ ], _ValidatorTestAPI);
116
+ await (0, interface_database_decorators_1.CreateDatabaseSchemaInstance)(schemaName);
117
+ const productModel = new ProductModel((0, utils_1.getSchemaInstance)(schemaName));
118
+ if (product) {
119
+ const insertResult = await productModel.insert(product);
120
+ return { id: insertResult[0], productModel };
121
+ }
122
+ return { productModel };
123
+ }
124
+ function createIncorrectValidator(testName, fieldName, invalidValue, requestFunction, route, testDataset, createDataset) {
125
+ return async () => {
126
+ const { id } = await _createDataController(testName, route, createDataset);
127
+ const invalidData = { ...testDataset, [fieldName]: invalidValue };
128
+ const response = await requestFunction(testName, invalidData, id ? { id } : {});
129
+ (0, chai_1.expect)(response.status).to.equal(400);
130
+ const error = await response.text();
131
+ (0, chai_1.expect)(error).to.include(fieldName);
132
+ };
133
+ }
134
+ function createCorrectValidator(testName, requestFunction, route, testDataset, createDataset) {
135
+ return async () => {
136
+ const { id, productModel } = await _createDataController(testName, route, createDataset);
137
+ const response = await requestFunction(testName, testDataset, id ? { id } : {});
138
+ (0, chai_1.expect)(response.status).to.equal(200);
139
+ let product_fetched;
140
+ if (id) {
141
+ product_fetched = await productModel.get(id);
142
+ }
143
+ else {
144
+ const result = (await response.json());
145
+ (0, chai_1.expect)(result).to.be.an("array");
146
+ (0, chai_1.expect)(result).to.have.length(1);
147
+ (0, chai_1.expect)(result[0]).to.be.an("string");
148
+ product_fetched = await productModel.get(result[0]);
149
+ }
150
+ (0, chai_1.expect)(product_fetched).to.not.equal(undefined);
151
+ if (product_fetched) {
152
+ await (0, utils_1.validateObject)(product_fetched, testDataset, [
153
+ "email",
154
+ "name",
155
+ "price",
156
+ "status",
157
+ "tags",
158
+ ]);
159
+ }
160
+ };
161
+ }
162
+ function createIncorrectValidatorEdit(testName, fieldName, invalidValue, requestFunction) {
163
+ return createIncorrectValidator(testName, fieldName, invalidValue, requestFunction, { edit: interface_data_api_1.DefaultRoutes.Edit }, validProductData.alternative, validProductData.default);
164
+ }
165
+ function createIncorrectValidatorNew(testName, fieldName, invalidValue, requestFunction) {
166
+ return createIncorrectValidator(testName, fieldName, invalidValue, requestFunction, { new: interface_data_api_1.DefaultRoutes.New }, validProductData.default);
167
+ }
168
+ const validateCorrectParametersOnNew = createCorrectValidator("CorrectParametersOnNew", utils_1.newRequest, { new: interface_data_api_1.DefaultRoutes.New }, validProductData.default);
169
+ const validateIncorrectDateParameterOnNew = createIncorrectValidatorNew("DateParameterOnNew", "birthDate", "invalid", utils_1.newRequest);
170
+ const validateIncorrectEmailParameterOnNew = createIncorrectValidatorNew("EmailParameterOnNew", "email", "invalid", utils_1.newRequest);
171
+ const validateIncorrectStringParameterOnNew = createIncorrectValidatorNew("StringParameterOnNew", "name", "ab", utils_1.newRequest);
172
+ const validateIncorrectNumberParameterOnNew = createIncorrectValidatorNew("NumberParameterOnNew", "price", -10, utils_1.newRequest);
173
+ const validateCorrectParametersOnEdit = createCorrectValidator("CorrectParametersOnEdit", utils_1.editRequest, { edit: interface_data_api_1.DefaultRoutes.Edit }, validProductData.alternative, validProductData.default);
174
+ const validateIncorrectDateParameterOnEdit = createIncorrectValidatorEdit("DateParameterOnEdit", "birthDate", "invalid-date", utils_1.editRequest);
175
+ const validateIncorrectEmailParameterOnEdit = createIncorrectValidatorEdit("EmailParameterOnEdit", "email", "invalid-email@a", utils_1.editRequest);
176
+ const validateIncorrectStringParameterOnEdit = createIncorrectValidatorEdit("StringParameterOnEdit", "name", "ab", utils_1.editRequest);
177
+ const validateIncorrectNumberParameterOnEdit = createIncorrectValidatorEdit("NumberParameterOnEdit", "price", -10, utils_1.editRequest);
178
+ //# sourceMappingURL=validator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.test.js","sourceRoot":"","sources":["../../../src/tests/components/validator.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const API_PORT = 5010;
2
+ export declare const API_HOST = "localhost";
3
+ export declare const URL_BASE = "http://localhost:5010";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.URL_BASE = exports.API_HOST = exports.API_PORT = void 0;
4
+ exports.API_PORT = 5010;
5
+ exports.API_HOST = "localhost";
6
+ exports.URL_BASE = `http://${exports.API_HOST}:${exports.API_PORT}`;
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/tests/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,IAAI,CAAC;AAChB,QAAA,QAAQ,GAAG,WAAW,CAAC;AACvB,QAAA,QAAQ,GAAG,UAAU,gBAAQ,IAAI,gBAAQ,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ const node_path_1 = __importDefault(require("node:path"));
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
+ const interface_data_api_1 = require("@antelopejs/interface-data-api");
18
+ const metadata_1 = require("@antelopejs/interface-data-api/metadata");
19
+ const interface_database_1 = require("@antelopejs/interface-database");
20
+ const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
21
+ const chai_1 = require("chai");
22
+ const utils_1 = require("../utils");
23
+ const currentTestName = node_path_1.default
24
+ .basename(__filename)
25
+ .replace(/\.test\.(ts|js)$/, "");
26
+ const userTableName = `users-${currentTestName}`;
27
+ const schemaName = "default";
28
+ let User = class User extends interface_database_decorators_1.Table {
29
+ };
30
+ __decorate([
31
+ (0, interface_database_decorators_1.Index)(),
32
+ __metadata("design:type", String)
33
+ ], User.prototype, "email", void 0);
34
+ User = __decorate([
35
+ (0, interface_database_decorators_1.RegisterTable)(userTableName, schemaName)
36
+ ], User);
37
+ class UserModel extends (0, interface_database_decorators_1.BasicDataModel)(User, userTableName) {
38
+ }
39
+ const validUserDataset = {
40
+ default: {
41
+ name: "Bob",
42
+ email: "bob@email.com",
43
+ age: 30,
44
+ password: "very-secure-qwerty123",
45
+ },
46
+ alternative: {
47
+ name: "Alice",
48
+ email: "alice@email.com",
49
+ age: 25,
50
+ password: "very-secure-qwerty123",
51
+ },
52
+ };
53
+ describe("Routes", () => {
54
+ beforeEach(async () => {
55
+ try {
56
+ await interface_database_1.Schema.get(schemaName)?.instance().table(userTableName).delete();
57
+ }
58
+ catch {
59
+ // Instance may not exist yet on first run
60
+ }
61
+ });
62
+ it("accessing default routes", async () => requestingDefaultRoutes());
63
+ it("accessing undefined route", async () => await requestingUndefinedRoute());
64
+ it("using route get", async () => await usingRouteGet());
65
+ it("using route list", async () => await usingRouteList());
66
+ it("using route new", async () => await usingRouteNew());
67
+ it("using route edit", async () => await usingRouteEdit());
68
+ it("using route delete", async () => await usingRouteDelete());
69
+ after(async () => { });
70
+ });
71
+ async function _createDataController(testName, user, routes) {
72
+ let _AccessTestAPI = class _AccessTestAPI extends (0, interface_data_api_1.DataController)(User, routes ?? interface_data_api_1.DefaultRoutes.All, (0, interface_api_1.Controller)(`/${testName}`)) {
73
+ };
74
+ __decorate([
75
+ (0, metadata_1.ModelReference)(),
76
+ (0, interface_database_decorators_1.Model)(UserModel),
77
+ __metadata("design:type", UserModel)
78
+ ], _AccessTestAPI.prototype, "userModel", void 0);
79
+ __decorate([
80
+ (0, metadata_1.Listable)(),
81
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
82
+ __metadata("design:type", String)
83
+ ], _AccessTestAPI.prototype, "_id", void 0);
84
+ __decorate([
85
+ (0, metadata_1.Listable)(),
86
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
87
+ __metadata("design:type", String)
88
+ ], _AccessTestAPI.prototype, "password", void 0);
89
+ __decorate([
90
+ (0, metadata_1.Listable)(),
91
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
92
+ __metadata("design:type", String)
93
+ ], _AccessTestAPI.prototype, "name", void 0);
94
+ __decorate([
95
+ (0, metadata_1.Listable)(),
96
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
97
+ __metadata("design:type", Number)
98
+ ], _AccessTestAPI.prototype, "age", void 0);
99
+ __decorate([
100
+ (0, metadata_1.Listable)(),
101
+ (0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
102
+ __metadata("design:type", String)
103
+ ], _AccessTestAPI.prototype, "email", void 0);
104
+ _AccessTestAPI = __decorate([
105
+ (0, interface_data_api_1.RegisterDataController)()
106
+ ], _AccessTestAPI);
107
+ await (0, interface_database_decorators_1.CreateDatabaseSchemaInstance)(schemaName);
108
+ const userModel = new UserModel((0, utils_1.getSchemaInstance)(schemaName));
109
+ const insertResult = await userModel.insert(user);
110
+ return { id: insertResult[0], userModel };
111
+ }
112
+ async function requestingDefaultRoutes() {
113
+ await _createDataController((0, utils_1.getFunctionName)(), validUserDataset.default);
114
+ const [get_response, list_response, new_response, edit_response, delete_response,] = await Promise.all([
115
+ (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), {}),
116
+ (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {}),
117
+ (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {}),
118
+ (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), {}),
119
+ (0, utils_1.deleteRequest)((0, utils_1.getFunctionName)(), {}),
120
+ ]);
121
+ (0, chai_1.expect)(get_response.status).to.not.equal(404);
122
+ (0, chai_1.expect)(list_response.status).to.not.equal(404);
123
+ (0, chai_1.expect)(new_response.status).to.not.equal(404);
124
+ (0, chai_1.expect)(edit_response.status).to.not.equal(404);
125
+ (0, chai_1.expect)(delete_response.status).to.not.equal(404);
126
+ }
127
+ async function requestingUndefinedRoute() {
128
+ await _createDataController((0, utils_1.getFunctionName)(), validUserDataset.default, {
129
+ get: interface_data_api_1.DefaultRoutes.Get,
130
+ new: interface_data_api_1.DefaultRoutes.New,
131
+ delete: interface_data_api_1.DefaultRoutes.Delete,
132
+ });
133
+ const [get_response, list_response, new_response, edit_response, delete_response,] = await Promise.all([
134
+ (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), {}),
135
+ (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {}),
136
+ (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {}),
137
+ (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), {}),
138
+ (0, utils_1.deleteRequest)((0, utils_1.getFunctionName)(), {}),
139
+ ]);
140
+ (0, chai_1.expect)(list_response.status).to.equal(404);
141
+ (0, chai_1.expect)(edit_response.status).to.equal(404);
142
+ (0, chai_1.expect)(get_response.status).to.not.equal(404);
143
+ (0, chai_1.expect)(new_response.status).to.not.equal(404);
144
+ (0, chai_1.expect)(delete_response.status).to.not.equal(404);
145
+ }
146
+ async function validateUserUsingResponse(response, id, validDataset) {
147
+ const data = (await response.json());
148
+ (0, chai_1.expect)(response.status).to.equal(200);
149
+ let found;
150
+ if (data.results && Array.isArray(data.results)) {
151
+ for (const user of data.results) {
152
+ if (user._id === id) {
153
+ found = user;
154
+ break;
155
+ }
156
+ }
157
+ }
158
+ await validateUser(found, validDataset);
159
+ }
160
+ async function validateUserUsingModel(userModel, id, validDataset) {
161
+ const user = await userModel.get(id);
162
+ await validateUser(user, validDataset, id);
163
+ }
164
+ async function validateUser(user, validDataset, id) {
165
+ const foundDataset = user instanceof UserModel ? await user.get(id ?? "") : user;
166
+ (0, chai_1.expect)(foundDataset).to.be.an("object");
167
+ (0, chai_1.expect)(foundDataset).to.have.property("name", validDataset.name);
168
+ (0, chai_1.expect)(foundDataset).to.have.property("email", validDataset.email);
169
+ (0, chai_1.expect)(foundDataset).to.have.property("age", validDataset.age);
170
+ (0, chai_1.expect)(foundDataset).to.have.property("password", validDataset.password);
171
+ }
172
+ async function usingRouteGet() {
173
+ const { id, userModel } = await _createDataController((0, utils_1.getFunctionName)(), validUserDataset.default, {
174
+ get: interface_data_api_1.DefaultRoutes.Get,
175
+ });
176
+ const response = await (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), { id });
177
+ (0, chai_1.expect)(response.status).to.equal(200);
178
+ await validateUserUsingModel(userModel, id, validUserDataset.default);
179
+ }
180
+ async function usingRouteList() {
181
+ const { id } = await _createDataController((0, utils_1.getFunctionName)(), validUserDataset.default, {
182
+ list: interface_data_api_1.DefaultRoutes.List,
183
+ });
184
+ const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {});
185
+ (0, chai_1.expect)(response.status).to.equal(200);
186
+ await validateUserUsingResponse(response, id, validUserDataset.default);
187
+ }
188
+ async function usingRouteNew() {
189
+ const { userModel } = await _createDataController((0, utils_1.getFunctionName)(), validUserDataset.default, {
190
+ new: interface_data_api_1.DefaultRoutes.New,
191
+ });
192
+ const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), validUserDataset.default);
193
+ const result = (await response.json());
194
+ await validateUserUsingModel(userModel, result[0], validUserDataset.default);
195
+ }
196
+ async function usingRouteEdit() {
197
+ const { id, userModel } = await _createDataController((0, utils_1.getFunctionName)(), validUserDataset.default, {
198
+ edit: interface_data_api_1.DefaultRoutes.Edit,
199
+ });
200
+ await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), validUserDataset.alternative, { id });
201
+ await validateUserUsingModel(userModel, id, validUserDataset.alternative);
202
+ }
203
+ async function usingRouteDelete() {
204
+ const { id, userModel } = await _createDataController((0, utils_1.getFunctionName)(), validUserDataset.default, {
205
+ delete: interface_data_api_1.DefaultRoutes.Delete,
206
+ });
207
+ await (0, utils_1.deleteRequest)((0, utils_1.getFunctionName)(), { id });
208
+ (0, chai_1.expect)(await userModel.get(id)).to.equal(undefined);
209
+ }
210
+ //# sourceMappingURL=routes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.test.js","sourceRoot":"","sources":["../../../src/tests/index/routes.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};