@antelopejs/interface-database-decorators 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.
- package/LICENSE +190 -0
- package/README.md +42 -0
- package/dist/antelope.test.d.ts +2 -0
- package/dist/antelope.test.js +52 -0
- package/dist/antelope.test.js.map +1 -0
- package/dist/common.d.ts +22 -0
- package/dist/common.js +36 -0
- package/dist/common.js.map +1 -0
- package/dist/database.d.ts +2 -0
- package/dist/database.js +71 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/model.d.ts +101 -0
- package/dist/model.js +161 -0
- package/dist/model.js.map +1 -0
- package/dist/modifiers/common.d.ts +87 -0
- package/dist/modifiers/common.js +370 -0
- package/dist/modifiers/common.js.map +1 -0
- package/dist/modifiers/encryption.d.ts +37 -0
- package/dist/modifiers/encryption.js +79 -0
- package/dist/modifiers/encryption.js.map +1 -0
- package/dist/modifiers/hash.d.ts +41 -0
- package/dist/modifiers/hash.js +54 -0
- package/dist/modifiers/hash.js.map +1 -0
- package/dist/modifiers/index.d.ts +4 -0
- package/dist/modifiers/index.js +21 -0
- package/dist/modifiers/index.js.map +1 -0
- package/dist/modifiers/localization.d.ts +43 -0
- package/dist/modifiers/localization.js +57 -0
- package/dist/modifiers/localization.js.map +1 -0
- package/dist/schema.d.ts +4 -0
- package/dist/schema.js +21 -0
- package/dist/schema.js.map +1 -0
- package/dist/table.d.ts +53 -0
- package/dist/table.js +63 -0
- package/dist/table.js.map +1 -0
- package/dist/tests/common.test.d.ts +1 -0
- package/dist/tests/common.test.js +52 -0
- package/dist/tests/common.test.js.map +1 -0
- package/dist/tests/database.test.d.ts +1 -0
- package/dist/tests/database.test.js +184 -0
- package/dist/tests/database.test.js.map +1 -0
- package/dist/tests/integration.test.d.ts +1 -0
- package/dist/tests/integration.test.js +399 -0
- package/dist/tests/integration.test.js.map +1 -0
- package/dist/tests/model.test.d.ts +1 -0
- package/dist/tests/model.test.js +186 -0
- package/dist/tests/model.test.js.map +1 -0
- package/dist/tests/modifiers/common.test.d.ts +1 -0
- package/dist/tests/modifiers/common.test.js +165 -0
- package/dist/tests/modifiers/common.test.js.map +1 -0
- package/dist/tests/modifiers/encryption.test.d.ts +1 -0
- package/dist/tests/modifiers/encryption.test.js +161 -0
- package/dist/tests/modifiers/encryption.test.js.map +1 -0
- package/dist/tests/modifiers/hash.test.d.ts +1 -0
- package/dist/tests/modifiers/hash.test.js +126 -0
- package/dist/tests/modifiers/hash.test.js.map +1 -0
- package/dist/tests/modifiers/localization.test.d.ts +1 -0
- package/dist/tests/modifiers/localization.test.js +175 -0
- package/dist/tests/modifiers/localization.test.js.map +1 -0
- package/dist/tests/schema.test.d.ts +1 -0
- package/dist/tests/schema.test.js +102 -0
- package/dist/tests/schema.test.js.map +1 -0
- package/dist/tests/table.test.d.ts +1 -0
- package/dist/tests/table.test.js +112 -0
- package/dist/tests/table.test.js.map +1 -0
- package/package.json +101 -0
|
@@ -0,0 +1,186 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
13
|
+
const database_1 = require("@antelopejs/interface-database-decorators/database");
|
|
14
|
+
const model_1 = require("@antelopejs/interface-database-decorators/model");
|
|
15
|
+
const schema_1 = require("@antelopejs/interface-database-decorators/schema");
|
|
16
|
+
const table_1 = require("@antelopejs/interface-database-decorators/table");
|
|
17
|
+
const chai_1 = require("chai");
|
|
18
|
+
describe("Model - data operations", () => {
|
|
19
|
+
it("creates basic data model", async () => CreateBasicDataModelTest());
|
|
20
|
+
it("creates basic data model from metadata", async () => CreateBasicDataModelFromMetadataTest());
|
|
21
|
+
it("converts plain data to table instance", async () => ConvertPlainDataToTableTest());
|
|
22
|
+
it("converts database data to table instance", async () => ConvertDatabaseDataToTableTest());
|
|
23
|
+
it("converts table instance to database data", async () => ConvertTableToDatabaseDataTest());
|
|
24
|
+
it("handles null database data", async () => HandleNullDatabaseDataTest());
|
|
25
|
+
it("gets model from cache", async () => GetModelFromCacheTest());
|
|
26
|
+
it("creates new model when not cached", async () => CreateNewModelWhenNotCachedTest());
|
|
27
|
+
it("handles model with string instance id", async () => HandleModelWithStringInstanceIdTest());
|
|
28
|
+
it("handles model with callback instance id", async () => HandleModelWithCallbackInstanceIdTest());
|
|
29
|
+
});
|
|
30
|
+
async function CreateBasicDataModelTest() {
|
|
31
|
+
class TestTable extends table_1.Table {
|
|
32
|
+
name;
|
|
33
|
+
age;
|
|
34
|
+
}
|
|
35
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "test_table");
|
|
36
|
+
(0, chai_1.expect)(TestModel).to.be.a("function");
|
|
37
|
+
(0, chai_1.expect)(TestModel.name).to.equal("Model");
|
|
38
|
+
}
|
|
39
|
+
async function CreateBasicDataModelFromMetadataTest() {
|
|
40
|
+
let TestTable = class TestTable extends table_1.Table {
|
|
41
|
+
name;
|
|
42
|
+
};
|
|
43
|
+
TestTable = __decorate([
|
|
44
|
+
(0, schema_1.RegisterTable)("meta_table", "model-meta-schema")
|
|
45
|
+
], TestTable);
|
|
46
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable);
|
|
47
|
+
(0, chai_1.expect)(TestModel).to.be.a("function");
|
|
48
|
+
(0, chai_1.expect)(TestModel.name).to.equal("Model");
|
|
49
|
+
}
|
|
50
|
+
async function ConvertPlainDataToTableTest() {
|
|
51
|
+
class TestTable extends table_1.Table {
|
|
52
|
+
name;
|
|
53
|
+
age;
|
|
54
|
+
}
|
|
55
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "test_table");
|
|
56
|
+
const plainData = { _id: "1", name: "John", age: 30 };
|
|
57
|
+
const instance = TestModel.fromPlainData(plainData);
|
|
58
|
+
(0, chai_1.expect)(instance).to.be.instanceOf(TestTable);
|
|
59
|
+
(0, chai_1.expect)(instance._id).to.equal("1");
|
|
60
|
+
(0, chai_1.expect)(instance.name).to.equal("John");
|
|
61
|
+
(0, chai_1.expect)(instance.age).to.equal(30);
|
|
62
|
+
}
|
|
63
|
+
async function ConvertDatabaseDataToTableTest() {
|
|
64
|
+
class TestTable extends table_1.Table {
|
|
65
|
+
name;
|
|
66
|
+
age;
|
|
67
|
+
}
|
|
68
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "test_table");
|
|
69
|
+
const dbData = { _id: "123", name: "John", age: 30 };
|
|
70
|
+
const instance = TestModel.fromDatabase(dbData);
|
|
71
|
+
(0, chai_1.expect)(instance).to.be.instanceOf(TestTable);
|
|
72
|
+
(0, chai_1.expect)(instance?.name).to.equal("John");
|
|
73
|
+
(0, chai_1.expect)(instance?.age).to.equal(30);
|
|
74
|
+
}
|
|
75
|
+
async function ConvertTableToDatabaseDataTest() {
|
|
76
|
+
class TestTable extends table_1.Table {
|
|
77
|
+
name;
|
|
78
|
+
age;
|
|
79
|
+
}
|
|
80
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "test_table");
|
|
81
|
+
const instance = new TestTable();
|
|
82
|
+
instance._id = "1";
|
|
83
|
+
instance.name = "John";
|
|
84
|
+
instance.age = 30;
|
|
85
|
+
const dbData = TestModel.toDatabase(instance);
|
|
86
|
+
(0, chai_1.expect)(dbData._id).to.equal("1");
|
|
87
|
+
(0, chai_1.expect)(dbData.name).to.equal("John");
|
|
88
|
+
(0, chai_1.expect)(dbData.age).to.equal(30);
|
|
89
|
+
}
|
|
90
|
+
async function HandleNullDatabaseDataTest() {
|
|
91
|
+
class TestTable extends table_1.Table {
|
|
92
|
+
name;
|
|
93
|
+
}
|
|
94
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "test_table");
|
|
95
|
+
const instance = TestModel.fromDatabase(null);
|
|
96
|
+
(0, chai_1.expect)(instance).to.equal(undefined);
|
|
97
|
+
}
|
|
98
|
+
async function GetModelFromCacheTest() {
|
|
99
|
+
let TestTable = class TestTable extends table_1.Table {
|
|
100
|
+
name;
|
|
101
|
+
};
|
|
102
|
+
TestTable = __decorate([
|
|
103
|
+
(0, schema_1.RegisterTable)("cache_table", "model-cache-schema")
|
|
104
|
+
], TestTable);
|
|
105
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "cache_table");
|
|
106
|
+
await (0, database_1.CreateDatabaseSchemaInstance)("model-cache-schema", "test-model-cache-db");
|
|
107
|
+
const model1 = (0, model_1.GetModel)(TestModel, "test-model-cache-db");
|
|
108
|
+
const model2 = (0, model_1.GetModel)(TestModel, "test-model-cache-db");
|
|
109
|
+
(0, chai_1.expect)(model1).to.equal(model2);
|
|
110
|
+
(0, chai_1.expect)(model1).to.be.instanceOf(TestModel);
|
|
111
|
+
}
|
|
112
|
+
async function CreateNewModelWhenNotCachedTest() {
|
|
113
|
+
let TestTable = class TestTable extends table_1.Table {
|
|
114
|
+
name;
|
|
115
|
+
};
|
|
116
|
+
TestTable = __decorate([
|
|
117
|
+
(0, schema_1.RegisterTable)("nocache_table", "model-nocache-schema")
|
|
118
|
+
], TestTable);
|
|
119
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "nocache_table");
|
|
120
|
+
await (0, database_1.CreateDatabaseSchemaInstance)("model-nocache-schema", "model-db1");
|
|
121
|
+
await (0, database_1.CreateDatabaseSchemaInstance)("model-nocache-schema", "model-db2");
|
|
122
|
+
const model1 = (0, model_1.GetModel)(TestModel, "model-db1");
|
|
123
|
+
const model2 = (0, model_1.GetModel)(TestModel, "model-db2");
|
|
124
|
+
(0, chai_1.expect)(model1).to.not.equal(model2);
|
|
125
|
+
(0, chai_1.expect)(model1).to.be.instanceOf(TestModel);
|
|
126
|
+
(0, chai_1.expect)(model2).to.be.instanceOf(TestModel);
|
|
127
|
+
}
|
|
128
|
+
async function HandleModelWithStringInstanceIdTest() {
|
|
129
|
+
let TestTable = class TestTable extends table_1.Table {
|
|
130
|
+
name;
|
|
131
|
+
};
|
|
132
|
+
TestTable = __decorate([
|
|
133
|
+
(0, schema_1.RegisterTable)("static_table", "model-static-schema")
|
|
134
|
+
], TestTable);
|
|
135
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "static_table");
|
|
136
|
+
await (0, database_1.CreateDatabaseSchemaInstance)("model-static-schema", "test-static-model-db");
|
|
137
|
+
class _TestService extends (0, interface_api_1.Controller)("/staticmodel") {
|
|
138
|
+
model;
|
|
139
|
+
callback() {
|
|
140
|
+
(0, chai_1.expect)("model" in this).to.equal(true);
|
|
141
|
+
(0, chai_1.expect)(this.model).to.be.instanceOf(TestModel);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
__decorate([
|
|
145
|
+
(0, model_1.Model)(TestModel, "test-static-model-db"),
|
|
146
|
+
__metadata("design:type", void 0)
|
|
147
|
+
], _TestService.prototype, "model", void 0);
|
|
148
|
+
__decorate([
|
|
149
|
+
(0, interface_api_1.Get)("/"),
|
|
150
|
+
__metadata("design:type", Function),
|
|
151
|
+
__metadata("design:paramtypes", []),
|
|
152
|
+
__metadata("design:returntype", void 0)
|
|
153
|
+
], _TestService.prototype, "callback", null);
|
|
154
|
+
const res = await fetch("http://localhost:5010/staticmodel");
|
|
155
|
+
(0, chai_1.expect)(res.status, res.statusText).to.equal(200);
|
|
156
|
+
}
|
|
157
|
+
async function HandleModelWithCallbackInstanceIdTest() {
|
|
158
|
+
let TestTable = class TestTable extends table_1.Table {
|
|
159
|
+
name;
|
|
160
|
+
};
|
|
161
|
+
TestTable = __decorate([
|
|
162
|
+
(0, schema_1.RegisterTable)("dynamic_table", "model-dynamic-schema")
|
|
163
|
+
], TestTable);
|
|
164
|
+
const TestModel = (0, model_1.BasicDataModel)(TestTable, "dynamic_table");
|
|
165
|
+
await (0, database_1.CreateDatabaseSchemaInstance)("model-dynamic-schema", "test-dynamic-model-db");
|
|
166
|
+
class _TestService extends (0, interface_api_1.Controller)("/dynamicmodel/:database") {
|
|
167
|
+
model;
|
|
168
|
+
callback() {
|
|
169
|
+
(0, chai_1.expect)("model" in this).to.equal(true);
|
|
170
|
+
(0, chai_1.expect)(this.model).to.be.instanceOf(TestModel);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
__decorate([
|
|
174
|
+
(0, model_1.Model)(TestModel, (ctx) => ctx.routeParameters.database),
|
|
175
|
+
__metadata("design:type", void 0)
|
|
176
|
+
], _TestService.prototype, "model", void 0);
|
|
177
|
+
__decorate([
|
|
178
|
+
(0, interface_api_1.Get)("/"),
|
|
179
|
+
__metadata("design:type", Function),
|
|
180
|
+
__metadata("design:paramtypes", []),
|
|
181
|
+
__metadata("design:returntype", void 0)
|
|
182
|
+
], _TestService.prototype, "callback", null);
|
|
183
|
+
const res = await fetch("http://localhost:5010/dynamicmodel/test-dynamic-model-db");
|
|
184
|
+
(0, chai_1.expect)(res.status, res.statusText).to.equal(200);
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=model.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.test.js","sourceRoot":"","sources":["../../src/tests/model.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const common_1 = require("@antelopejs/interface-database-decorators/modifiers/common");
|
|
4
|
+
const table_1 = require("@antelopejs/interface-database-decorators/table");
|
|
5
|
+
const chai_1 = require("chai");
|
|
6
|
+
describe("Modifiers - common", () => {
|
|
7
|
+
it("creates basic modifier", async () => CreateBasicModifierTest());
|
|
8
|
+
it("creates one way modifier", async () => CreateOneWayModifierTest());
|
|
9
|
+
it("creates two way modifier", async () => CreateTwoWayModifierTest());
|
|
10
|
+
it("creates container modifier", async () => CreateContainerModifierTest());
|
|
11
|
+
it("passes options to modifier via attachModifier()", async () => AttachWithOptionsTest());
|
|
12
|
+
it("attaches multiple modifiers on same field", async () => ChainedModifiersTest());
|
|
13
|
+
it("throws if adding OneWayModifier after another OneWayModifier", async () => DuplicateOneWayErrorTest());
|
|
14
|
+
it("converts database data to table instance", async () => ConvertDatabaseDataToTableTest());
|
|
15
|
+
it("converts table instance to database data", async () => ConvertTableToDatabaseDataTest());
|
|
16
|
+
it("gets modified fields", async () => GetModifiedFieldsTest());
|
|
17
|
+
});
|
|
18
|
+
async function CreateBasicModifierTest() {
|
|
19
|
+
class TestModifier extends common_1.Modifier {
|
|
20
|
+
lock(v) {
|
|
21
|
+
return v;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const modifier = new TestModifier();
|
|
25
|
+
(0, chai_1.expect)(modifier).to.be.instanceOf(common_1.Modifier);
|
|
26
|
+
}
|
|
27
|
+
async function CreateOneWayModifierTest() {
|
|
28
|
+
class TestOneWayModifier extends common_1.OneWayModifier {
|
|
29
|
+
lock(_, value, prefix) {
|
|
30
|
+
return `${prefix}_${String(value)}`;
|
|
31
|
+
}
|
|
32
|
+
test(lockedValue, value, prefix) {
|
|
33
|
+
return this.lock(undefined, value, prefix) === lockedValue;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const mod = new TestOneWayModifier();
|
|
37
|
+
const locked = mod.lock(undefined, "val", "prefix");
|
|
38
|
+
(0, chai_1.expect)(locked).to.equal("prefix_val");
|
|
39
|
+
(0, chai_1.expect)(mod.test(locked, "val", "prefix")).to.equal(true);
|
|
40
|
+
}
|
|
41
|
+
async function CreateTwoWayModifierTest() {
|
|
42
|
+
class TestTwoWayModifier extends common_1.TwoWayModifier {
|
|
43
|
+
lock(_, value, prefix) {
|
|
44
|
+
return `${prefix}_${String(value)}`;
|
|
45
|
+
}
|
|
46
|
+
unlock(lockedValue, prefix) {
|
|
47
|
+
return lockedValue.replace(`${prefix}_`, "");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const mod = new TestTwoWayModifier();
|
|
51
|
+
const locked = mod.lock(undefined, "value", "pre");
|
|
52
|
+
const unlocked = mod.unlock(locked, "pre");
|
|
53
|
+
(0, chai_1.expect)(unlocked).to.equal("value");
|
|
54
|
+
}
|
|
55
|
+
async function CreateContainerModifierTest() {
|
|
56
|
+
class TestContainer extends common_1.ContainerModifier {
|
|
57
|
+
getLock() {
|
|
58
|
+
return this.lock;
|
|
59
|
+
}
|
|
60
|
+
getUnlock() {
|
|
61
|
+
return this.unlock;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
const mod = new TestContainer();
|
|
65
|
+
const data1 = mod.lock(undefined, "val", "key1");
|
|
66
|
+
(0, chai_1.expect)(data1).to.deep.equal({ key1: "val" });
|
|
67
|
+
const data2 = mod.lock(data1, "val2", "key2");
|
|
68
|
+
(0, chai_1.expect)(data2).to.deep.equal({ key1: "val", key2: "val2" });
|
|
69
|
+
const result = mod.unlock(data2, "key1");
|
|
70
|
+
(0, chai_1.expect)(result).to.equal("val");
|
|
71
|
+
}
|
|
72
|
+
async function AttachWithOptionsTest() {
|
|
73
|
+
class SuffixModifier extends common_1.OneWayModifier {
|
|
74
|
+
autolock = true;
|
|
75
|
+
lock(_, value) {
|
|
76
|
+
return `${String(value)}${this.options.suffix}`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
class TestTable extends table_1.Table {
|
|
80
|
+
}
|
|
81
|
+
(0, common_1.attachModifier)(TestTable, SuffixModifier, "name", { suffix: "_suffix" });
|
|
82
|
+
const row = new TestTable();
|
|
83
|
+
row.name = "hello";
|
|
84
|
+
(0, chai_1.expect)(row.name).to.equal("hello_suffix");
|
|
85
|
+
}
|
|
86
|
+
async function ChainedModifiersTest() {
|
|
87
|
+
class Prefix extends common_1.OneWayModifier {
|
|
88
|
+
lock(_, value) {
|
|
89
|
+
return `${this.options.prefix}${String(value)}`;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
class Suffix extends common_1.TwoWayModifier {
|
|
93
|
+
lock(_, value) {
|
|
94
|
+
return `${String(value)}${this.options.suffix}`;
|
|
95
|
+
}
|
|
96
|
+
unlock(lockedValue) {
|
|
97
|
+
return lockedValue.replace(this.options.suffix, "");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
class TestTable extends table_1.Table {
|
|
101
|
+
name;
|
|
102
|
+
}
|
|
103
|
+
(0, common_1.attachModifier)(TestTable, Prefix, "name", { prefix: "pre_" });
|
|
104
|
+
(0, chai_1.expect)(() => {
|
|
105
|
+
(0, common_1.attachModifier)(TestTable, Suffix, "name", { suffix: "_suffix" });
|
|
106
|
+
}).to.throw(/please review your ordering/);
|
|
107
|
+
}
|
|
108
|
+
async function DuplicateOneWayErrorTest() {
|
|
109
|
+
class Mod1 extends common_1.OneWayModifier {
|
|
110
|
+
lock(_, val) {
|
|
111
|
+
return `#${String(val)}`;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
class Mod2 extends common_1.OneWayModifier {
|
|
115
|
+
lock(_, val) {
|
|
116
|
+
return `@${String(val)}`;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
class TestTable extends table_1.Table {
|
|
120
|
+
name;
|
|
121
|
+
}
|
|
122
|
+
(0, common_1.attachModifier)(TestTable, Mod1, "name", {});
|
|
123
|
+
(0, chai_1.expect)(() => {
|
|
124
|
+
(0, common_1.attachModifier)(TestTable, Mod2, "name", {});
|
|
125
|
+
}).to.throw(/already has a One-Way Modifier/);
|
|
126
|
+
}
|
|
127
|
+
async function ConvertDatabaseDataToTableTest() {
|
|
128
|
+
class TestTable extends table_1.Table {
|
|
129
|
+
name;
|
|
130
|
+
age;
|
|
131
|
+
}
|
|
132
|
+
const dbRow = { _id: "1", name: "John", age: 40 };
|
|
133
|
+
const instance = (0, common_1.fromDatabase)(dbRow, TestTable);
|
|
134
|
+
(0, chai_1.expect)(instance).to.be.instanceOf(TestTable);
|
|
135
|
+
(0, chai_1.expect)(instance.name).to.equal("John");
|
|
136
|
+
(0, chai_1.expect)(instance.age).to.equal(40);
|
|
137
|
+
}
|
|
138
|
+
async function ConvertTableToDatabaseDataTest() {
|
|
139
|
+
class TestTable extends table_1.Table {
|
|
140
|
+
name;
|
|
141
|
+
age;
|
|
142
|
+
}
|
|
143
|
+
const instance = new TestTable();
|
|
144
|
+
instance.name = "Eva";
|
|
145
|
+
instance.age = 22;
|
|
146
|
+
const db = (0, common_1.toDatabase)(instance);
|
|
147
|
+
(0, chai_1.expect)(db.name).to.equal("Eva");
|
|
148
|
+
(0, chai_1.expect)(db.age).to.equal(22);
|
|
149
|
+
}
|
|
150
|
+
async function GetModifiedFieldsTest() {
|
|
151
|
+
class TestMod extends common_1.OneWayModifier {
|
|
152
|
+
lock(_, v) {
|
|
153
|
+
return `mod_${String(v)}`;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
class TestTable extends table_1.Table {
|
|
157
|
+
name;
|
|
158
|
+
age;
|
|
159
|
+
}
|
|
160
|
+
(0, common_1.attachModifier)(TestTable, TestMod, "name", { prefix: "mod" });
|
|
161
|
+
const row = new TestTable();
|
|
162
|
+
const fields = (0, common_1.getModifiedFields)(row, TestMod);
|
|
163
|
+
(0, chai_1.expect)(fields).to.deep.equal(["name"]);
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=common.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/common.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,161 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const encryption_1 = require("@antelopejs/interface-database-decorators/modifiers/encryption");
|
|
13
|
+
const table_1 = require("@antelopejs/interface-database-decorators/table");
|
|
14
|
+
const chai_1 = require("chai");
|
|
15
|
+
describe("Modifiers - encryption", () => {
|
|
16
|
+
it("creates encryption modifier", async () => CreateEncryptionModifierTest());
|
|
17
|
+
it("encrypts and decrypts string values", async () => EncryptAndDecryptStringValuesTest());
|
|
18
|
+
it("encrypts and decrypts object values", async () => EncryptAndDecryptObjectValuesTest());
|
|
19
|
+
it("encrypts and decrypts array values", async () => EncryptAndDecryptArrayValuesTest());
|
|
20
|
+
it("uses custom iv size", async () => UseCustomIvSizeTest());
|
|
21
|
+
it("handles encryption decorator", async () => HandleEncryptionDecoratorTest());
|
|
22
|
+
it("generates unique iv for each encryption", async () => GenerateUniqueIvForEachEncryptionTest());
|
|
23
|
+
it("preserves data integrity", async () => PreserveDataIntegrityTest());
|
|
24
|
+
});
|
|
25
|
+
async function CreateEncryptionModifierTest() {
|
|
26
|
+
const Mixed = table_1.Table.with(encryption_1.EncryptionModifier);
|
|
27
|
+
class Sample extends Mixed {
|
|
28
|
+
}
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, encryption_1.Encrypted)({ secretKey: "12345678901234567890123456789012" }),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], Sample.prototype, "value", void 0);
|
|
33
|
+
const instance = new Sample();
|
|
34
|
+
instance.value = "hello";
|
|
35
|
+
(0, chai_1.expect)(instance.value).to.equal("hello");
|
|
36
|
+
}
|
|
37
|
+
async function EncryptAndDecryptStringValuesTest() {
|
|
38
|
+
class User extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
39
|
+
}
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, encryption_1.Encrypted)({
|
|
42
|
+
secretKey: "12345678901234567890123456789012",
|
|
43
|
+
algorithm: "aes-256-cbc",
|
|
44
|
+
}),
|
|
45
|
+
__metadata("design:type", String)
|
|
46
|
+
], User.prototype, "email", void 0);
|
|
47
|
+
const user = new User();
|
|
48
|
+
user.email = "user@example.com";
|
|
49
|
+
(0, chai_1.expect)(user.email).to.equal("user@example.com");
|
|
50
|
+
}
|
|
51
|
+
async function EncryptAndDecryptObjectValuesTest() {
|
|
52
|
+
class Doc extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
53
|
+
}
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, encryption_1.Encrypted)({
|
|
56
|
+
secretKey: "12345678901234567890123456789012",
|
|
57
|
+
algorithm: "aes-256-cbc",
|
|
58
|
+
}),
|
|
59
|
+
__metadata("design:type", Object)
|
|
60
|
+
], Doc.prototype, "meta", void 0);
|
|
61
|
+
const doc = new Doc();
|
|
62
|
+
const original = { admin: true, count: 3 };
|
|
63
|
+
doc.meta = original;
|
|
64
|
+
(0, chai_1.expect)(doc.meta).to.deep.equal(original);
|
|
65
|
+
}
|
|
66
|
+
async function EncryptAndDecryptArrayValuesTest() {
|
|
67
|
+
class Tags extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
68
|
+
}
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, encryption_1.Encrypted)({
|
|
71
|
+
secretKey: "12345678901234567890123456789012",
|
|
72
|
+
algorithm: "aes-256-cbc",
|
|
73
|
+
}),
|
|
74
|
+
__metadata("design:type", Array)
|
|
75
|
+
], Tags.prototype, "values", void 0);
|
|
76
|
+
const tags = new Tags();
|
|
77
|
+
const original = ["a", "b", { deep: "x" }];
|
|
78
|
+
tags.values = original;
|
|
79
|
+
(0, chai_1.expect)(tags.values).to.deep.equal(original);
|
|
80
|
+
}
|
|
81
|
+
async function UseCustomIvSizeTest() {
|
|
82
|
+
class WithIv extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
83
|
+
}
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, encryption_1.Encrypted)({
|
|
86
|
+
secretKey: "12345678901234567890123456789012",
|
|
87
|
+
ivSize: 16,
|
|
88
|
+
algorithm: "aes-256-cbc",
|
|
89
|
+
}),
|
|
90
|
+
__metadata("design:type", String)
|
|
91
|
+
], WithIv.prototype, "data", void 0);
|
|
92
|
+
const test = new WithIv();
|
|
93
|
+
test.data = "iv test";
|
|
94
|
+
(0, chai_1.expect)(test.data).to.equal("iv test");
|
|
95
|
+
}
|
|
96
|
+
async function HandleEncryptionDecoratorTest() {
|
|
97
|
+
class Secured extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
98
|
+
}
|
|
99
|
+
__decorate([
|
|
100
|
+
(0, encryption_1.Encrypted)({
|
|
101
|
+
secretKey: "12345678901234567890123456789012",
|
|
102
|
+
algorithm: "aes-256-cbc",
|
|
103
|
+
}),
|
|
104
|
+
__metadata("design:type", String)
|
|
105
|
+
], Secured.prototype, "password", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
(0, encryption_1.Encrypted)({
|
|
108
|
+
secretKey: "12345678901234567890123456789012",
|
|
109
|
+
algorithm: "aes-256-cbc",
|
|
110
|
+
}),
|
|
111
|
+
__metadata("design:type", Object)
|
|
112
|
+
], Secured.prototype, "extra", void 0);
|
|
113
|
+
const secured = new Secured();
|
|
114
|
+
secured.password = "admin123";
|
|
115
|
+
secured.extra = { token: "xyz" };
|
|
116
|
+
(0, chai_1.expect)(secured.password).to.equal("admin123");
|
|
117
|
+
(0, chai_1.expect)(secured.extra).to.deep.equal({ token: "xyz" });
|
|
118
|
+
}
|
|
119
|
+
async function GenerateUniqueIvForEachEncryptionTest() {
|
|
120
|
+
class Message extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
121
|
+
}
|
|
122
|
+
__decorate([
|
|
123
|
+
(0, encryption_1.Encrypted)({
|
|
124
|
+
secretKey: "12345678901234567890123456789012",
|
|
125
|
+
algorithm: "aes-256-cbc",
|
|
126
|
+
}),
|
|
127
|
+
__metadata("design:type", String)
|
|
128
|
+
], Message.prototype, "body", void 0);
|
|
129
|
+
const m1 = new Message();
|
|
130
|
+
const m2 = new Message();
|
|
131
|
+
m1.body = "secret";
|
|
132
|
+
m2.body = "secret";
|
|
133
|
+
(0, chai_1.expect)(m1.body).to.equal("secret");
|
|
134
|
+
(0, chai_1.expect)(m2.body).to.equal("secret");
|
|
135
|
+
(0, chai_1.expect)(m1).to.not.deep.equal(m2);
|
|
136
|
+
}
|
|
137
|
+
async function PreserveDataIntegrityTest() {
|
|
138
|
+
class Complex extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
139
|
+
}
|
|
140
|
+
__decorate([
|
|
141
|
+
(0, encryption_1.Encrypted)({
|
|
142
|
+
secretKey: "12345678901234567890123456789012",
|
|
143
|
+
algorithm: "aes-256-cbc",
|
|
144
|
+
}),
|
|
145
|
+
__metadata("design:type", Object)
|
|
146
|
+
], Complex.prototype, "payload", void 0);
|
|
147
|
+
const original = {
|
|
148
|
+
string: "txt",
|
|
149
|
+
number: 123,
|
|
150
|
+
boolean: true,
|
|
151
|
+
null: null,
|
|
152
|
+
array: [1, 2],
|
|
153
|
+
object: { nested: "val" },
|
|
154
|
+
date: new Date("2022-12-01"),
|
|
155
|
+
};
|
|
156
|
+
const instance = new Complex();
|
|
157
|
+
instance.payload = original;
|
|
158
|
+
(0, chai_1.expect)(instance.payload).to.deep.equal(original);
|
|
159
|
+
(0, chai_1.expect)(instance.payload.date).to.be.instanceOf(Date);
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=encryption.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/encryption.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|