From d9f8710758a56aa7f16880668759f79dc729580b Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Fri, 10 Sep 2021 14:44:50 -0600 Subject: [PATCH] Add missing tests for MSC3089 implementation Fixes https://github.com/vector-im/element-web/issues/18461 --- spec/unit/models/MSC3089Branch.spec.ts | 17 +++++++++++ spec/unit/models/MSC3089TreeSpace.spec.ts | 37 +++++++++++++++++++---- 2 files changed, 48 insertions(+), 6 deletions(-) diff --git a/spec/unit/models/MSC3089Branch.spec.ts b/spec/unit/models/MSC3089Branch.spec.ts index 72454cc54..24ce8f9fc 100644 --- a/spec/unit/models/MSC3089Branch.spec.ts +++ b/spec/unit/models/MSC3089Branch.spec.ts @@ -151,4 +151,21 @@ describe("MSC3089Branch", () => { httpUrl: expect.stringMatching(`.+${mxcLatter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}$`), }); }); + + it('should be able to return the event object', async () => { + const mxcLatter = "example.org/file"; + const fileContent = { isFile: "not quite", url: "mxc://" + mxcLatter }; + const eventsArr = [ + { getId: () => "$not-file", getContent: () => ({}) }, + { getId: () => fileEventId, getContent: () => ({ file: fileContent }) }, + ]; + client.getEventTimeline = () => Promise.resolve({ + getEvents: () => eventsArr, + }) as any as Promise; // partial + client.decryptEventIfNeeded = () => Promise.resolve(); + + const res = await branch.getFileEvent(); + expect(res).toBeDefined(); + expect(res).toBe(eventsArr[1]); + }); }); diff --git a/spec/unit/models/MSC3089TreeSpace.spec.ts b/spec/unit/models/MSC3089TreeSpace.spec.ts index ae9652e7d..f034ee884 100644 --- a/spec/unit/models/MSC3089TreeSpace.spec.ts +++ b/spec/unit/models/MSC3089TreeSpace.spec.ts @@ -227,40 +227,61 @@ describe("MSC3089TreeSpace", () => { [targetUser]: expectedPl, }, }); + + // Store new power levels so the `getPermissions()` test passes + makePowerLevels(content); + return Promise.resolve(); }); client.sendStateEvent = fn; await tree.setPermissions(targetUser, role); expect(fn.mock.calls.length).toBe(1); + + const finalPermissions = tree.getPermissions(targetUser); + expect(finalPermissions).toEqual(role); } it('should support setting Viewer permissions', () => { return evaluatePowerLevels({ ...DEFAULT_TREE_POWER_LEVELS_TEMPLATE, users_default: 1024, + events_default: 1025, + events: { + [EventType.RoomPowerLevels]: 1026, + }, }, TreePermissions.Viewer, 1024); }); it('should support setting Editor permissions', () => { return evaluatePowerLevels({ ...DEFAULT_TREE_POWER_LEVELS_TEMPLATE, - events_default: 1024, - }, TreePermissions.Editor, 1024); + users_default: 1024, + events_default: 1025, + events: { + [EventType.RoomPowerLevels]: 1026, + }, + }, TreePermissions.Editor, 1025); }); it('should support setting Owner permissions', () => { return evaluatePowerLevels({ ...DEFAULT_TREE_POWER_LEVELS_TEMPLATE, + users_default: 1024, + events_default: 1025, events: { - [EventType.RoomPowerLevels]: 1024, + [EventType.RoomPowerLevels]: 1026, }, - }, TreePermissions.Owner, 1024); + }, TreePermissions.Owner, 1026); }); it('should support demoting permissions', () => { return evaluatePowerLevels({ ...DEFAULT_TREE_POWER_LEVELS_TEMPLATE, users_default: 1024, + events_default: 1025, + events: { + [EventType.RoomPowerLevels]: 1026, + }, users: { [targetUser]: 2222, }, @@ -270,11 +291,15 @@ describe("MSC3089TreeSpace", () => { it('should support promoting permissions', () => { return evaluatePowerLevels({ ...DEFAULT_TREE_POWER_LEVELS_TEMPLATE, - events_default: 1024, + users_default: 1024, + events_default: 1025, + events: { + [EventType.RoomPowerLevels]: 1026, + }, users: { [targetUser]: 5, }, - }, TreePermissions.Editor, 1024); + }, TreePermissions.Editor, 1025); }); it('should support defaults: Viewer', () => {