Leave out roles array in serialized user

Leave out the roles property containing the array of role ids if the
user does not have any roles.
This commit is contained in:
Hornwitser committed 2020-09-01 17:59:19 +02:00
1 parent 9761fbb71c
commit 5e5a47ce02
2 files changed
+17 -7

No files matched your search

+4 -1
View File
@@ -173,9 +173,12 @@ class User {
serialize() {
let serialized = {
name: this.name,
roles: [...this.roles].map(role => role.id),
};
if (this.roles.size) {
serialized.roles = [...this.roles].map(role => role.id);
}
if (this.tokenValidAfter) {
serialized.tokenValidAfter = this.tokenValidAfter;
}
+13 -6
View File
@@ -71,13 +71,20 @@ describe("lib/users", function() {
[2, new users.Role({ id: 2, name: "b", description: "b role", permissions: ["test"] })],
]);
it("should round trip serialize", function() {
let orig = new users.User({ name: "admin", roles: [1] }, roles);
let copy = new users.User(orig.serialize(), roles);
assert.deepEqual(copy, orig);
function test_roundtrip(serialized) {
let user = new users.User(serialized, roles);
let user_serialized = user.serialize();
assert.deepEqual(user_serialized, serialized);
let user_deserialized = new users.User(user_serialized, roles);
assert.deepEqual(user_deserialized, user);
}
orig = new users.User({ name: "user", roles: [2], tokenValidAfter: 12345 }, roles);
copy = new users.User(orig.serialize(), roles);
assert.deepEqual(copy, orig);
test_roundtrip({ name: "admin", roles: [1] });
test_roundtrip({ name: "user", roles: [2], token_valid_after: 12345 });
});
it("should ignore invalid roles", function() {
let user = new users.User({ name: "test", roles: [1, 4, 55] }, roles);
assert.equal(user.roles.size, 1, "Unexpected count of roles");
});
it("should track online users", function() {
let user = new users.User({ name: "admin", roles: [1] }, roles);