@antelopejs/interface-database-decorators 0.1.10 → 0.1.11
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/dist/common.js.map +1 -1
- package/dist/database.js.map +1 -1
- package/dist/model.js +29 -26
- package/dist/model.js.map +1 -1
- package/dist/modifiers/common.d.ts +24 -4
- package/dist/modifiers/common.js +92 -114
- package/dist/modifiers/common.js.map +1 -1
- package/dist/modifiers/encryption.js +14 -9
- package/dist/modifiers/encryption.js.map +1 -1
- package/dist/modifiers/internal/kinds.d.ts +12 -0
- package/dist/modifiers/internal/kinds.js +29 -0
- package/dist/modifiers/internal/kinds.js.map +1 -0
- package/dist/modifiers/internal/records.d.ts +29 -0
- package/dist/modifiers/internal/records.js +42 -0
- package/dist/modifiers/internal/records.js.map +1 -0
- package/dist/modifiers/localization.js +5 -1
- package/dist/modifiers/localization.js.map +1 -1
- package/dist/schema.js +1 -2
- package/dist/schema.js.map +1 -1
- package/dist/table.js +19 -5
- package/dist/table.js.map +1 -1
- package/dist/tests/codec_helpers.d.ts +6 -2
- package/dist/tests/codec_helpers.js +18 -14
- package/dist/tests/codec_helpers.js.map +1 -1
- package/dist/tests/common.test.js +38 -46
- package/dist/tests/common.test.js.map +1 -1
- package/dist/tests/cross_instance.test.js +27 -2
- package/dist/tests/cross_instance.test.js.map +1 -1
- package/dist/tests/database.test.js +246 -256
- package/dist/tests/database.test.js.map +1 -1
- package/dist/tests/helpers/other-instance.d.ts +1 -1
- package/dist/tests/helpers/other-instance.js +41 -9
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/integration.test.js +485 -485
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/model.test.js +293 -308
- package/dist/tests/model.test.js.map +1 -1
- package/dist/tests/modifiers/autodate.test.js +80 -86
- package/dist/tests/modifiers/autodate.test.js.map +1 -1
- package/dist/tests/modifiers/common.test.js +181 -195
- package/dist/tests/modifiers/common.test.js.map +1 -1
- package/dist/tests/modifiers/encryption.test.js +149 -155
- package/dist/tests/modifiers/encryption.test.js.map +1 -1
- package/dist/tests/modifiers/hash.test.js +91 -99
- package/dist/tests/modifiers/hash.test.js.map +1 -1
- package/dist/tests/modifiers/localization.test.js +186 -196
- package/dist/tests/modifiers/localization.test.js.map +1 -1
- package/dist/tests/relation.test.js +92 -97
- package/dist/tests/relation.test.js.map +1 -1
- package/dist/tests/schema.test.js +101 -106
- package/dist/tests/schema.test.js.map +1 -1
- package/dist/tests/table.test.js +124 -132
- package/dist/tests/table.test.js.map +1 -1
- package/package.json +14 -3
- package/skills/database-decorators-interface/cases.json +71 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/common.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"common.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/common.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,161 +10,155 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const chai_1 = require("chai");
|
|
13
|
-
const table_1 = require("
|
|
14
|
-
const encryption_1 = require("
|
|
13
|
+
const table_1 = require("../../table");
|
|
14
|
+
const encryption_1 = require("../../modifiers/encryption");
|
|
15
15
|
describe("Modifiers - encryption", () => {
|
|
16
|
-
it("creates encryption modifier", async () =>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
it("creates encryption modifier", async () => {
|
|
17
|
+
const Mixed = table_1.Table.with(encryption_1.EncryptionModifier);
|
|
18
|
+
class Sample extends Mixed {
|
|
19
|
+
}
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, encryption_1.Encrypted)({ secretKey: "12345678901234567890123456789012" }),
|
|
22
|
+
(0, table_1.Field)("string"),
|
|
23
|
+
__metadata("design:type", String)
|
|
24
|
+
], Sample.prototype, "value", void 0);
|
|
25
|
+
const instance = new Sample();
|
|
26
|
+
instance.value = "hello";
|
|
27
|
+
(0, chai_1.expect)(instance.value).to.equal("hello");
|
|
28
|
+
});
|
|
29
|
+
it("encrypts and decrypts string values", async () => {
|
|
30
|
+
class User extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
31
|
+
}
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, encryption_1.Encrypted)({
|
|
34
|
+
secretKey: "12345678901234567890123456789012",
|
|
35
|
+
algorithm: "aes-256-cbc",
|
|
36
|
+
}),
|
|
37
|
+
(0, table_1.Field)("string"),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], User.prototype, "email", void 0);
|
|
40
|
+
const user = new User();
|
|
41
|
+
user.email = "user@example.com";
|
|
42
|
+
(0, chai_1.expect)(user.email).to.equal("user@example.com");
|
|
43
|
+
});
|
|
44
|
+
it("encrypts and decrypts object values", async () => {
|
|
45
|
+
class Doc extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
46
|
+
}
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, encryption_1.Encrypted)({
|
|
49
|
+
secretKey: "12345678901234567890123456789012",
|
|
50
|
+
algorithm: "aes-256-cbc",
|
|
51
|
+
}),
|
|
52
|
+
(0, table_1.Field)("any"),
|
|
53
|
+
__metadata("design:type", Object)
|
|
54
|
+
], Doc.prototype, "meta", void 0);
|
|
55
|
+
const doc = new Doc();
|
|
56
|
+
const original = { admin: true, count: 3 };
|
|
57
|
+
doc.meta = original;
|
|
58
|
+
(0, chai_1.expect)(doc.meta).to.deep.equal(original);
|
|
59
|
+
});
|
|
60
|
+
it("encrypts and decrypts array values", async () => {
|
|
61
|
+
class Tags extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
62
|
+
}
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, encryption_1.Encrypted)({
|
|
65
|
+
secretKey: "12345678901234567890123456789012",
|
|
66
|
+
algorithm: "aes-256-cbc",
|
|
67
|
+
}),
|
|
68
|
+
(0, table_1.Field)("any"),
|
|
69
|
+
__metadata("design:type", Array)
|
|
70
|
+
], Tags.prototype, "values", void 0);
|
|
71
|
+
const tags = new Tags();
|
|
72
|
+
const original = ["a", "b", { deep: "x" }];
|
|
73
|
+
tags.values = original;
|
|
74
|
+
(0, chai_1.expect)(tags.values).to.deep.equal(original);
|
|
75
|
+
});
|
|
76
|
+
it("uses custom iv size", async () => {
|
|
77
|
+
class WithIv extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
78
|
+
}
|
|
79
|
+
__decorate([
|
|
80
|
+
(0, encryption_1.Encrypted)({
|
|
81
|
+
secretKey: "12345678901234567890123456789012",
|
|
82
|
+
ivSize: 16,
|
|
83
|
+
algorithm: "aes-256-cbc",
|
|
84
|
+
}),
|
|
85
|
+
(0, table_1.Field)("string"),
|
|
86
|
+
__metadata("design:type", String)
|
|
87
|
+
], WithIv.prototype, "data", void 0);
|
|
88
|
+
const test = new WithIv();
|
|
89
|
+
test.data = "iv test";
|
|
90
|
+
(0, chai_1.expect)(test.data).to.equal("iv test");
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
describe("Modifiers - encryption", () => {
|
|
94
|
+
it("handles encryption decorator", async () => {
|
|
95
|
+
class Secured extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
96
|
+
}
|
|
97
|
+
__decorate([
|
|
98
|
+
(0, encryption_1.Encrypted)({
|
|
99
|
+
secretKey: "12345678901234567890123456789012",
|
|
100
|
+
algorithm: "aes-256-cbc",
|
|
101
|
+
}),
|
|
102
|
+
(0, table_1.Field)("string"),
|
|
103
|
+
__metadata("design:type", String)
|
|
104
|
+
], Secured.prototype, "password", void 0);
|
|
105
|
+
__decorate([
|
|
106
|
+
(0, encryption_1.Encrypted)({
|
|
107
|
+
secretKey: "12345678901234567890123456789012",
|
|
108
|
+
algorithm: "aes-256-cbc",
|
|
109
|
+
}),
|
|
110
|
+
(0, table_1.Field)("any"),
|
|
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
|
+
it("generates unique iv for each encryption", async () => {
|
|
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
|
+
(0, table_1.Field)("string"),
|
|
128
|
+
__metadata("design:type", String)
|
|
129
|
+
], Message.prototype, "body", void 0);
|
|
130
|
+
const m1 = new Message();
|
|
131
|
+
const m2 = new Message();
|
|
132
|
+
m1.body = "secret";
|
|
133
|
+
m2.body = "secret";
|
|
134
|
+
(0, chai_1.expect)(m1.body).to.equal("secret");
|
|
135
|
+
(0, chai_1.expect)(m2.body).to.equal("secret");
|
|
136
|
+
(0, chai_1.expect)(m1).to.not.deep.equal(m2);
|
|
137
|
+
});
|
|
138
|
+
it("preserves data integrity", async () => {
|
|
139
|
+
class Complex extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
140
|
+
}
|
|
141
|
+
__decorate([
|
|
142
|
+
(0, encryption_1.Encrypted)({
|
|
143
|
+
secretKey: "12345678901234567890123456789012",
|
|
144
|
+
algorithm: "aes-256-cbc",
|
|
145
|
+
}),
|
|
146
|
+
(0, table_1.Field)("any"),
|
|
147
|
+
__metadata("design:type", Object)
|
|
148
|
+
], Complex.prototype, "payload", void 0);
|
|
149
|
+
const original = {
|
|
150
|
+
string: "txt",
|
|
151
|
+
number: 123,
|
|
152
|
+
boolean: true,
|
|
153
|
+
null: null,
|
|
154
|
+
array: [1, 2],
|
|
155
|
+
object: { nested: "val" },
|
|
156
|
+
date: new Date("2022-12-01"),
|
|
157
|
+
};
|
|
158
|
+
const instance = new Complex();
|
|
159
|
+
instance.payload = original;
|
|
160
|
+
(0, chai_1.expect)(instance.payload).to.deep.equal(original);
|
|
161
|
+
(0, chai_1.expect)(instance.payload.date).to.be.instanceOf(Date);
|
|
162
|
+
});
|
|
24
163
|
});
|
|
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
|
-
(0, table_1.Field)("string"),
|
|
32
|
-
__metadata("design:type", String)
|
|
33
|
-
], Sample.prototype, "value", void 0);
|
|
34
|
-
const instance = new Sample();
|
|
35
|
-
instance.value = "hello";
|
|
36
|
-
(0, chai_1.expect)(instance.value).to.equal("hello");
|
|
37
|
-
}
|
|
38
|
-
async function EncryptAndDecryptStringValuesTest() {
|
|
39
|
-
class User extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
40
|
-
}
|
|
41
|
-
__decorate([
|
|
42
|
-
(0, encryption_1.Encrypted)({
|
|
43
|
-
secretKey: "12345678901234567890123456789012",
|
|
44
|
-
algorithm: "aes-256-cbc",
|
|
45
|
-
}),
|
|
46
|
-
(0, table_1.Field)("string"),
|
|
47
|
-
__metadata("design:type", String)
|
|
48
|
-
], User.prototype, "email", void 0);
|
|
49
|
-
const user = new User();
|
|
50
|
-
user.email = "user@example.com";
|
|
51
|
-
(0, chai_1.expect)(user.email).to.equal("user@example.com");
|
|
52
|
-
}
|
|
53
|
-
async function EncryptAndDecryptObjectValuesTest() {
|
|
54
|
-
class Doc extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
55
|
-
}
|
|
56
|
-
__decorate([
|
|
57
|
-
(0, encryption_1.Encrypted)({
|
|
58
|
-
secretKey: "12345678901234567890123456789012",
|
|
59
|
-
algorithm: "aes-256-cbc",
|
|
60
|
-
}),
|
|
61
|
-
(0, table_1.Field)("any"),
|
|
62
|
-
__metadata("design:type", Object)
|
|
63
|
-
], Doc.prototype, "meta", void 0);
|
|
64
|
-
const doc = new Doc();
|
|
65
|
-
const original = { admin: true, count: 3 };
|
|
66
|
-
doc.meta = original;
|
|
67
|
-
(0, chai_1.expect)(doc.meta).to.deep.equal(original);
|
|
68
|
-
}
|
|
69
|
-
async function EncryptAndDecryptArrayValuesTest() {
|
|
70
|
-
class Tags extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
71
|
-
}
|
|
72
|
-
__decorate([
|
|
73
|
-
(0, encryption_1.Encrypted)({
|
|
74
|
-
secretKey: "12345678901234567890123456789012",
|
|
75
|
-
algorithm: "aes-256-cbc",
|
|
76
|
-
}),
|
|
77
|
-
(0, table_1.Field)("any"),
|
|
78
|
-
__metadata("design:type", Array)
|
|
79
|
-
], Tags.prototype, "values", void 0);
|
|
80
|
-
const tags = new Tags();
|
|
81
|
-
const original = ["a", "b", { deep: "x" }];
|
|
82
|
-
tags.values = original;
|
|
83
|
-
(0, chai_1.expect)(tags.values).to.deep.equal(original);
|
|
84
|
-
}
|
|
85
|
-
async function UseCustomIvSizeTest() {
|
|
86
|
-
class WithIv extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
87
|
-
}
|
|
88
|
-
__decorate([
|
|
89
|
-
(0, encryption_1.Encrypted)({
|
|
90
|
-
secretKey: "12345678901234567890123456789012",
|
|
91
|
-
ivSize: 16,
|
|
92
|
-
algorithm: "aes-256-cbc",
|
|
93
|
-
}),
|
|
94
|
-
(0, table_1.Field)("string"),
|
|
95
|
-
__metadata("design:type", String)
|
|
96
|
-
], WithIv.prototype, "data", void 0);
|
|
97
|
-
const test = new WithIv();
|
|
98
|
-
test.data = "iv test";
|
|
99
|
-
(0, chai_1.expect)(test.data).to.equal("iv test");
|
|
100
|
-
}
|
|
101
|
-
async function HandleEncryptionDecoratorTest() {
|
|
102
|
-
class Secured extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
103
|
-
}
|
|
104
|
-
__decorate([
|
|
105
|
-
(0, encryption_1.Encrypted)({
|
|
106
|
-
secretKey: "12345678901234567890123456789012",
|
|
107
|
-
algorithm: "aes-256-cbc",
|
|
108
|
-
}),
|
|
109
|
-
(0, table_1.Field)("string"),
|
|
110
|
-
__metadata("design:type", String)
|
|
111
|
-
], Secured.prototype, "password", void 0);
|
|
112
|
-
__decorate([
|
|
113
|
-
(0, encryption_1.Encrypted)({
|
|
114
|
-
secretKey: "12345678901234567890123456789012",
|
|
115
|
-
algorithm: "aes-256-cbc",
|
|
116
|
-
}),
|
|
117
|
-
(0, table_1.Field)("any"),
|
|
118
|
-
__metadata("design:type", Object)
|
|
119
|
-
], Secured.prototype, "extra", void 0);
|
|
120
|
-
const secured = new Secured();
|
|
121
|
-
secured.password = "admin123";
|
|
122
|
-
secured.extra = { token: "xyz" };
|
|
123
|
-
(0, chai_1.expect)(secured.password).to.equal("admin123");
|
|
124
|
-
(0, chai_1.expect)(secured.extra).to.deep.equal({ token: "xyz" });
|
|
125
|
-
}
|
|
126
|
-
async function GenerateUniqueIvForEachEncryptionTest() {
|
|
127
|
-
class Message extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
128
|
-
}
|
|
129
|
-
__decorate([
|
|
130
|
-
(0, encryption_1.Encrypted)({
|
|
131
|
-
secretKey: "12345678901234567890123456789012",
|
|
132
|
-
algorithm: "aes-256-cbc",
|
|
133
|
-
}),
|
|
134
|
-
(0, table_1.Field)("string"),
|
|
135
|
-
__metadata("design:type", String)
|
|
136
|
-
], Message.prototype, "body", void 0);
|
|
137
|
-
const m1 = new Message();
|
|
138
|
-
const m2 = new Message();
|
|
139
|
-
m1.body = "secret";
|
|
140
|
-
m2.body = "secret";
|
|
141
|
-
(0, chai_1.expect)(m1.body).to.equal("secret");
|
|
142
|
-
(0, chai_1.expect)(m2.body).to.equal("secret");
|
|
143
|
-
(0, chai_1.expect)(m1).to.not.deep.equal(m2);
|
|
144
|
-
}
|
|
145
|
-
async function PreserveDataIntegrityTest() {
|
|
146
|
-
class Complex extends table_1.Table.with(encryption_1.EncryptionModifier) {
|
|
147
|
-
}
|
|
148
|
-
__decorate([
|
|
149
|
-
(0, encryption_1.Encrypted)({
|
|
150
|
-
secretKey: "12345678901234567890123456789012",
|
|
151
|
-
algorithm: "aes-256-cbc",
|
|
152
|
-
}),
|
|
153
|
-
(0, table_1.Field)("any"),
|
|
154
|
-
__metadata("design:type", Object)
|
|
155
|
-
], Complex.prototype, "payload", void 0);
|
|
156
|
-
const original = {
|
|
157
|
-
string: "txt",
|
|
158
|
-
number: 123,
|
|
159
|
-
boolean: true,
|
|
160
|
-
null: null,
|
|
161
|
-
array: [1, 2],
|
|
162
|
-
object: { nested: "val" },
|
|
163
|
-
date: new Date("2022-12-01"),
|
|
164
|
-
};
|
|
165
|
-
const instance = new Complex();
|
|
166
|
-
instance.payload = original;
|
|
167
|
-
(0, chai_1.expect)(instance.payload).to.deep.equal(original);
|
|
168
|
-
(0, chai_1.expect)(instance.payload.date).to.be.instanceOf(Date);
|
|
169
|
-
}
|
|
170
164
|
//# sourceMappingURL=encryption.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/encryption.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"encryption.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/encryption.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,17 +10,98 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
const chai_1 = require("chai");
|
|
13
|
-
const table_1 = require("
|
|
14
|
-
const hash_1 = require("
|
|
13
|
+
const table_1 = require("../../table");
|
|
14
|
+
const hash_1 = require("../../modifiers/hash");
|
|
15
15
|
describe("Modifiers - hash", () => {
|
|
16
|
-
it("hashes string values", async () =>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
16
|
+
it("hashes string values", async () => {
|
|
17
|
+
const modifier = new TestableHashModifier();
|
|
18
|
+
modifier.setOptions({ algorithm: "sha256" });
|
|
19
|
+
modifier.setMeta({});
|
|
20
|
+
const originalValue = "password123";
|
|
21
|
+
const hashed = modifier.lock(undefined, originalValue);
|
|
22
|
+
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
23
|
+
(0, chai_1.expect)(hashed).to.not.equal(originalValue);
|
|
24
|
+
(0, chai_1.expect)(modifier.getMeta().salt).to.be.a("string");
|
|
25
|
+
});
|
|
26
|
+
it("hashes object values", async () => {
|
|
27
|
+
const modifier = new TestableHashModifier();
|
|
28
|
+
modifier.setOptions({ algorithm: "sha256" });
|
|
29
|
+
modifier.setMeta({});
|
|
30
|
+
const originalValue = { name: "John", age: 30 };
|
|
31
|
+
const hashed = modifier.lock(undefined, originalValue);
|
|
32
|
+
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
33
|
+
(0, chai_1.expect)(hashed).to.not.equal(JSON.stringify(originalValue));
|
|
34
|
+
});
|
|
35
|
+
it("handles undefined values", async () => {
|
|
36
|
+
const modifier = new TestableHashModifier();
|
|
37
|
+
modifier.setOptions({ algorithm: "sha256" });
|
|
38
|
+
modifier.setMeta({});
|
|
39
|
+
const hashed = modifier.lock(undefined, undefined);
|
|
40
|
+
(0, chai_1.expect)(hashed).to.equal(undefined);
|
|
41
|
+
});
|
|
42
|
+
it("uses custom hash algorithm", async () => {
|
|
43
|
+
const modifier = new TestableHashModifier();
|
|
44
|
+
modifier.setOptions({ algorithm: "md5" });
|
|
45
|
+
modifier.setMeta({});
|
|
46
|
+
const originalValue = "test data";
|
|
47
|
+
const hashed = modifier.lock(undefined, originalValue);
|
|
48
|
+
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
49
|
+
(0, chai_1.expect)(hashed).to.not.equal(originalValue);
|
|
50
|
+
(0, chai_1.expect)(modifier.getOptions().algorithm).to.equal("md5");
|
|
51
|
+
});
|
|
52
|
+
it("generates unique salt for each field", async () => {
|
|
53
|
+
const modifier1 = new TestableHashModifier();
|
|
54
|
+
modifier1.setOptions({ algorithm: "sha256" });
|
|
55
|
+
modifier1.setMeta({});
|
|
56
|
+
const modifier2 = new TestableHashModifier();
|
|
57
|
+
modifier2.setOptions({ algorithm: "sha256" });
|
|
58
|
+
modifier2.setMeta({});
|
|
59
|
+
const value = "test data";
|
|
60
|
+
const hashed1 = modifier1.lock(undefined, value);
|
|
61
|
+
const hashed2 = modifier2.lock(undefined, value);
|
|
62
|
+
(0, chai_1.expect)(hashed1).to.not.equal(hashed2);
|
|
63
|
+
(0, chai_1.expect)(modifier1.getMeta().salt).to.not.equal(modifier2.getMeta().salt);
|
|
64
|
+
});
|
|
65
|
+
it("handles hash decorator", async () => {
|
|
66
|
+
class TestTable extends table_1.Table.with(hash_1.HashModifier) {
|
|
67
|
+
}
|
|
68
|
+
__decorate([
|
|
69
|
+
(0, hash_1.Hashed)({ algorithm: "sha256" }),
|
|
70
|
+
(0, table_1.Field)("string"),
|
|
71
|
+
__metadata("design:type", String)
|
|
72
|
+
], TestTable.prototype, "password", void 0);
|
|
73
|
+
const instance = new TestTable();
|
|
74
|
+
instance.password = "myPassword123";
|
|
75
|
+
(0, chai_1.expect)(instance.testHash("password", "myPassword123")).to.equal(true);
|
|
76
|
+
(0, chai_1.expect)(instance.testHash("password", "notMyPassword")).to.equal(false);
|
|
77
|
+
});
|
|
78
|
+
it("tests hash values correctly", async () => {
|
|
79
|
+
const modifier = new TestableHashModifier();
|
|
80
|
+
modifier.setOptions({ algorithm: "sha256" });
|
|
81
|
+
modifier.setMeta({});
|
|
82
|
+
const originalValue = "test data";
|
|
83
|
+
const hashed = modifier.lock(undefined, originalValue);
|
|
84
|
+
const isMatch = modifier.test(hashed, originalValue);
|
|
85
|
+
const isNotMatch = modifier.test(hashed, "wrong data");
|
|
86
|
+
(0, chai_1.expect)(isMatch).to.equal(true);
|
|
87
|
+
(0, chai_1.expect)(isNotMatch).to.equal(false);
|
|
88
|
+
});
|
|
89
|
+
it("provides testHash method through mixin", async () => {
|
|
90
|
+
class TestTable extends table_1.Table.with(hash_1.HashModifier) {
|
|
91
|
+
}
|
|
92
|
+
__decorate([
|
|
93
|
+
(0, hash_1.Hashed)({ algorithm: "sha256" }),
|
|
94
|
+
(0, table_1.Field)("string"),
|
|
95
|
+
__metadata("design:type", String)
|
|
96
|
+
], TestTable.prototype, "password", void 0);
|
|
97
|
+
const instance = new TestTable();
|
|
98
|
+
instance.password = "myPassword123";
|
|
99
|
+
(0, chai_1.expect)(instance).to.have.property("testHash").that.is.a("function");
|
|
100
|
+
const isMatch = instance.testHash("password", "myPassword123");
|
|
101
|
+
const isNotMatch = instance.testHash("password", "wrongPassword");
|
|
102
|
+
(0, chai_1.expect)(isMatch).to.equal(true);
|
|
103
|
+
(0, chai_1.expect)(isNotMatch).to.equal(false);
|
|
104
|
+
});
|
|
24
105
|
});
|
|
25
106
|
class TestableHashModifier extends hash_1.HashModifier {
|
|
26
107
|
setOptions(options) {
|
|
@@ -36,93 +117,4 @@ class TestableHashModifier extends hash_1.HashModifier {
|
|
|
36
117
|
this.meta = meta;
|
|
37
118
|
}
|
|
38
119
|
}
|
|
39
|
-
async function HashStringValuesTest() {
|
|
40
|
-
const modifier = new TestableHashModifier();
|
|
41
|
-
modifier.setOptions({ algorithm: "sha256" });
|
|
42
|
-
modifier.setMeta({});
|
|
43
|
-
const originalValue = "password123";
|
|
44
|
-
const hashed = modifier.lock(undefined, originalValue);
|
|
45
|
-
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
46
|
-
(0, chai_1.expect)(hashed).to.not.equal(originalValue);
|
|
47
|
-
(0, chai_1.expect)(modifier.getMeta().salt).to.be.a("string");
|
|
48
|
-
}
|
|
49
|
-
async function HashObjectValuesTest() {
|
|
50
|
-
const modifier = new TestableHashModifier();
|
|
51
|
-
modifier.setOptions({ algorithm: "sha256" });
|
|
52
|
-
modifier.setMeta({});
|
|
53
|
-
const originalValue = { name: "John", age: 30 };
|
|
54
|
-
const hashed = modifier.lock(undefined, originalValue);
|
|
55
|
-
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
56
|
-
(0, chai_1.expect)(hashed).to.not.equal(JSON.stringify(originalValue));
|
|
57
|
-
}
|
|
58
|
-
async function HandleUndefinedValuesTest() {
|
|
59
|
-
const modifier = new TestableHashModifier();
|
|
60
|
-
modifier.setOptions({ algorithm: "sha256" });
|
|
61
|
-
modifier.setMeta({});
|
|
62
|
-
const hashed = modifier.lock(undefined, undefined);
|
|
63
|
-
(0, chai_1.expect)(hashed).to.equal(undefined);
|
|
64
|
-
}
|
|
65
|
-
async function UseCustomHashAlgorithmTest() {
|
|
66
|
-
const modifier = new TestableHashModifier();
|
|
67
|
-
modifier.setOptions({ algorithm: "md5" });
|
|
68
|
-
modifier.setMeta({});
|
|
69
|
-
const originalValue = "test data";
|
|
70
|
-
const hashed = modifier.lock(undefined, originalValue);
|
|
71
|
-
(0, chai_1.expect)(hashed).to.be.a("string");
|
|
72
|
-
(0, chai_1.expect)(hashed).to.not.equal(originalValue);
|
|
73
|
-
(0, chai_1.expect)(modifier.getOptions().algorithm).to.equal("md5");
|
|
74
|
-
}
|
|
75
|
-
async function GenerateUniqueSaltForEachFieldTest() {
|
|
76
|
-
const modifier1 = new TestableHashModifier();
|
|
77
|
-
modifier1.setOptions({ algorithm: "sha256" });
|
|
78
|
-
modifier1.setMeta({});
|
|
79
|
-
const modifier2 = new TestableHashModifier();
|
|
80
|
-
modifier2.setOptions({ algorithm: "sha256" });
|
|
81
|
-
modifier2.setMeta({});
|
|
82
|
-
const value = "test data";
|
|
83
|
-
const hashed1 = modifier1.lock(undefined, value);
|
|
84
|
-
const hashed2 = modifier2.lock(undefined, value);
|
|
85
|
-
(0, chai_1.expect)(hashed1).to.not.equal(hashed2);
|
|
86
|
-
(0, chai_1.expect)(modifier1.getMeta().salt).to.not.equal(modifier2.getMeta().salt);
|
|
87
|
-
}
|
|
88
|
-
async function HandleHashDecoratorTest() {
|
|
89
|
-
class TestTable extends table_1.Table.with(hash_1.HashModifier) {
|
|
90
|
-
}
|
|
91
|
-
__decorate([
|
|
92
|
-
(0, hash_1.Hashed)({ algorithm: "sha256" }),
|
|
93
|
-
(0, table_1.Field)("string"),
|
|
94
|
-
__metadata("design:type", String)
|
|
95
|
-
], TestTable.prototype, "password", void 0);
|
|
96
|
-
const instance = new TestTable();
|
|
97
|
-
instance.password = "myPassword123";
|
|
98
|
-
(0, chai_1.expect)(instance.testHash("password", "myPassword123")).to.equal(true);
|
|
99
|
-
(0, chai_1.expect)(instance.testHash("password", "notMyPassword")).to.equal(false);
|
|
100
|
-
}
|
|
101
|
-
async function TestHashValuesTest() {
|
|
102
|
-
const modifier = new TestableHashModifier();
|
|
103
|
-
modifier.setOptions({ algorithm: "sha256" });
|
|
104
|
-
modifier.setMeta({});
|
|
105
|
-
const originalValue = "test data";
|
|
106
|
-
const hashed = modifier.lock(undefined, originalValue);
|
|
107
|
-
const isMatch = modifier.test(hashed, originalValue);
|
|
108
|
-
const isNotMatch = modifier.test(hashed, "wrong data");
|
|
109
|
-
(0, chai_1.expect)(isMatch).to.equal(true);
|
|
110
|
-
(0, chai_1.expect)(isNotMatch).to.equal(false);
|
|
111
|
-
}
|
|
112
|
-
async function ProvideTestHashMethodTest() {
|
|
113
|
-
class TestTable extends table_1.Table.with(hash_1.HashModifier) {
|
|
114
|
-
}
|
|
115
|
-
__decorate([
|
|
116
|
-
(0, hash_1.Hashed)({ algorithm: "sha256" }),
|
|
117
|
-
(0, table_1.Field)("string"),
|
|
118
|
-
__metadata("design:type", String)
|
|
119
|
-
], TestTable.prototype, "password", void 0);
|
|
120
|
-
const instance = new TestTable();
|
|
121
|
-
instance.password = "myPassword123";
|
|
122
|
-
(0, chai_1.expect)(typeof instance.testHash).to.equal("function");
|
|
123
|
-
const isMatch = instance.testHash("password", "myPassword123");
|
|
124
|
-
const isNotMatch = instance.testHash("password", "wrongPassword");
|
|
125
|
-
(0, chai_1.expect)(isMatch).to.equal(true);
|
|
126
|
-
(0, chai_1.expect)(isNotMatch).to.equal(false);
|
|
127
|
-
}
|
|
128
120
|
//# sourceMappingURL=hash.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/hash.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,+BAA8B;AAC9B,
|
|
1
|
+
{"version":3,"file":"hash.test.js","sourceRoot":"","sources":["../../../src/tests/modifiers/hash.test.ts"],"names":[],"mappings":"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"}
|