@nymphjs/tilmeld 1.0.0-beta.7 → 1.0.0-beta.71
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 +330 -0
- package/README.md +14 -1
- package/dist/AbleObject.d.ts +15 -0
- package/dist/AbleObject.js +16 -1
- package/dist/AbleObject.js.map +1 -1
- package/dist/Group.d.ts +130 -10
- package/dist/Group.js +311 -129
- package/dist/Group.js.map +1 -1
- package/dist/Group.test.js +77 -2
- package/dist/Group.test.js.map +1 -1
- package/dist/Tilmeld.d.ts +237 -9
- package/dist/Tilmeld.js +569 -201
- package/dist/Tilmeld.js.map +1 -1
- package/dist/User.d.ts +344 -16
- package/dist/User.js +979 -313
- package/dist/User.js.map +1 -1
- package/dist/User.test.js +63 -2
- package/dist/User.test.js.map +1 -1
- package/dist/conf/d.d.ts +250 -3
- package/dist/conf/defaults.js +146 -98
- package/dist/conf/defaults.js.map +1 -1
- package/dist/enforceTilmeld.d.ts +3 -0
- package/dist/enforceTilmeld.js +22 -0
- package/dist/enforceTilmeld.js.map +1 -0
- package/dist/errors/AccessControlError.d.ts +2 -1
- package/dist/errors/AccessControlError.js +3 -2
- package/dist/errors/AccessControlError.js.map +1 -1
- package/dist/errors/BadDataError.d.ts +2 -1
- package/dist/errors/BadDataError.js +3 -2
- package/dist/errors/BadDataError.js.map +1 -1
- package/dist/errors/BadEmailError.d.ts +2 -1
- package/dist/errors/BadEmailError.js +3 -2
- package/dist/errors/BadEmailError.js.map +1 -1
- package/dist/errors/BadUsernameError.d.ts +2 -1
- package/dist/errors/BadUsernameError.js +3 -2
- package/dist/errors/BadUsernameError.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +30 -26
- package/src/AbleObject.ts +2 -2
- package/src/Group.test.ts +102 -4
- package/src/Group.ts +274 -158
- package/src/Tilmeld.ts +383 -249
- package/src/User.test.ts +80 -4
- package/src/User.ts +1061 -382
- package/src/conf/d.ts +26 -13
- package/src/conf/defaults.ts +151 -104
- package/src/enforceTilmeld.ts +20 -0
- package/src/errors/AccessControlError.ts +4 -2
- package/src/errors/BadDataError.ts +4 -2
- package/src/errors/BadEmailError.ts +4 -2
- package/src/errors/BadUsernameError.ts +4 -2
- package/src/index.ts +2 -0
- package/src/tilmeldJoiProps.ts +9 -9
- package/tsconfig.json +3 -3
- package/typedoc.json +4 -0
package/src/User.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SQLite3Driver } from '@nymphjs/driver-sqlite3';
|
|
2
|
-
import { Nymph } from '@nymphjs/nymph';
|
|
2
|
+
import { Nymph, EntityUniqueConstraintError } from '@nymphjs/nymph';
|
|
3
3
|
|
|
4
4
|
import Tilmeld from './Tilmeld';
|
|
5
5
|
import defaults from './conf/defaults';
|
|
@@ -21,7 +21,7 @@ const _nymph = new Nymph(
|
|
|
21
21
|
new SQLite3Driver({
|
|
22
22
|
filename: ':memory:',
|
|
23
23
|
}),
|
|
24
|
-
tilmeld
|
|
24
|
+
tilmeld,
|
|
25
25
|
);
|
|
26
26
|
|
|
27
27
|
const User = tilmeld.User;
|
|
@@ -44,7 +44,7 @@ describe('User', () => {
|
|
|
44
44
|
const validUser = await makeNewUser();
|
|
45
45
|
|
|
46
46
|
expect(() => {
|
|
47
|
-
defaults.validatorUser(validUser);
|
|
47
|
+
defaults.validatorUser({ config: defaults } as Tilmeld, validUser);
|
|
48
48
|
}).not.toThrow();
|
|
49
49
|
});
|
|
50
50
|
|
|
@@ -55,7 +55,83 @@ describe('User', () => {
|
|
|
55
55
|
invalidUser.unknown = 'I should cause an error.';
|
|
56
56
|
|
|
57
57
|
expect(() => {
|
|
58
|
-
defaults.validatorUser(invalidUser);
|
|
58
|
+
defaults.validatorUser({ config: defaults } as Tilmeld, invalidUser);
|
|
59
59
|
}).toThrow('Invalid User: "unknown" is not allowed');
|
|
60
60
|
});
|
|
61
|
+
|
|
62
|
+
it("doesn't allow duplicate usernames", async () => {
|
|
63
|
+
const newUserA = await User.factory();
|
|
64
|
+
|
|
65
|
+
newUserA.username = 'new-user';
|
|
66
|
+
newUserA.email = 'newusera@localhost';
|
|
67
|
+
newUserA.nameFirst = 'New';
|
|
68
|
+
newUserA.nameLast = 'User';
|
|
69
|
+
newUserA.name = 'New User';
|
|
70
|
+
newUserA.$password('password');
|
|
71
|
+
|
|
72
|
+
const newUserB = await User.factory();
|
|
73
|
+
|
|
74
|
+
newUserB.username = 'new-user';
|
|
75
|
+
newUserB.email = 'newuserb@localhost';
|
|
76
|
+
newUserB.nameFirst = 'New';
|
|
77
|
+
newUserB.nameLast = 'User';
|
|
78
|
+
newUserB.name = 'New User';
|
|
79
|
+
newUserB.$password('password');
|
|
80
|
+
|
|
81
|
+
const promises = [newUserA.$saveSkipAC(), newUserB.$saveSkipAC()];
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
await Promise.all(promises);
|
|
85
|
+
|
|
86
|
+
throw new Error("Shouldn't get here because of unique constraint.");
|
|
87
|
+
} catch (e: any) {
|
|
88
|
+
expect(e).toBeInstanceOf(EntityUniqueConstraintError);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
await Promise.allSettled(promises);
|
|
92
|
+
|
|
93
|
+
for (const user of [newUserA, newUserB]) {
|
|
94
|
+
if (user.guid != null) {
|
|
95
|
+
expect(await user.$deleteSkipAC()).toEqual(true);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("doesn't allow duplicate emails", async () => {
|
|
101
|
+
const newUserA = await User.factory();
|
|
102
|
+
|
|
103
|
+
newUserA.username = 'new-user-a';
|
|
104
|
+
newUserA.email = 'newuser@localhost';
|
|
105
|
+
newUserA.nameFirst = 'New';
|
|
106
|
+
newUserA.nameLast = 'User';
|
|
107
|
+
newUserA.name = 'New User';
|
|
108
|
+
newUserA.$password('password');
|
|
109
|
+
|
|
110
|
+
const newUserB = await User.factory();
|
|
111
|
+
|
|
112
|
+
newUserB.username = 'new-user-b';
|
|
113
|
+
newUserB.email = 'newuser@localhost';
|
|
114
|
+
newUserB.nameFirst = 'New';
|
|
115
|
+
newUserB.nameLast = 'User';
|
|
116
|
+
newUserB.name = 'New User';
|
|
117
|
+
newUserB.$password('password');
|
|
118
|
+
|
|
119
|
+
const promises = [newUserA.$saveSkipAC(), newUserB.$saveSkipAC()];
|
|
120
|
+
|
|
121
|
+
try {
|
|
122
|
+
await Promise.all(promises);
|
|
123
|
+
|
|
124
|
+
throw new Error("Shouldn't get here because of unique constraint.");
|
|
125
|
+
} catch (e: any) {
|
|
126
|
+
expect(e).toBeInstanceOf(EntityUniqueConstraintError);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
await Promise.allSettled(promises);
|
|
130
|
+
|
|
131
|
+
for (const user of [newUserA, newUserB]) {
|
|
132
|
+
if (user.guid != null) {
|
|
133
|
+
expect(await user.$deleteSkipAC()).toEqual(true);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
});
|
|
61
137
|
});
|