Provide a labs flag for encrypted state events (MSC3414) (#31513)
Signed-off-by: Skye Elliot <actuallyori@gmail.com> Co-authored-by: Skye Elliot <actuallyori@gmail.com>
This commit is contained in:
co-authored by
Skye Elliot
parent
6f0369e623
commit
ff3f069122
@@ -17,7 +17,7 @@ import {
|
||||
type IEvent,
|
||||
type RoomMember,
|
||||
type MatrixClient,
|
||||
type RoomState,
|
||||
RoomState,
|
||||
EventType,
|
||||
type IEventRelation,
|
||||
type IUnsigned,
|
||||
@@ -31,6 +31,7 @@ import {
|
||||
type OidcClientConfig,
|
||||
type GroupCall,
|
||||
HistoryVisibility,
|
||||
type ICreateRoomOpts,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { KnownMembership } from "matrix-js-sdk/src/types";
|
||||
import { normalize } from "matrix-js-sdk/src/utils";
|
||||
@@ -85,6 +86,7 @@ export function createTestClient(): MatrixClient {
|
||||
const eventEmitter = new EventEmitter();
|
||||
|
||||
let txnId = 1;
|
||||
let createdRoom: Room | undefined;
|
||||
|
||||
const client = {
|
||||
getHomeserverUrl: jest.fn(),
|
||||
@@ -124,6 +126,7 @@ export function createTestClient(): MatrixClient {
|
||||
getDeviceVerificationStatus: jest.fn(),
|
||||
resetKeyBackup: jest.fn(),
|
||||
isEncryptionEnabledInRoom: jest.fn().mockResolvedValue(false),
|
||||
isStateEncryptionEnabledInRoom: jest.fn().mockResolvedValue(false),
|
||||
getVerificationRequestsToDeviceInProgress: jest.fn().mockReturnValue([]),
|
||||
setDeviceIsolationMode: jest.fn(),
|
||||
prepareToEncrypt: jest.fn(),
|
||||
@@ -162,7 +165,14 @@ export function createTestClient(): MatrixClient {
|
||||
}),
|
||||
|
||||
getPushActionsForEvent: jest.fn(),
|
||||
getRoom: jest.fn().mockImplementation((roomId) => mkStubRoom(roomId, "My room", client)),
|
||||
getRoom: jest.fn().mockImplementation((roomId) => {
|
||||
// If the test called `createRoom`, return the mocked room it created.
|
||||
if (createdRoom) {
|
||||
return createdRoom;
|
||||
} else {
|
||||
return mkStubRoom(roomId, "My room", client);
|
||||
}
|
||||
}),
|
||||
getRooms: jest.fn().mockReturnValue([]),
|
||||
getVisibleRooms: jest.fn().mockReturnValue([]),
|
||||
loginFlows: jest.fn(),
|
||||
@@ -201,6 +211,7 @@ export function createTestClient(): MatrixClient {
|
||||
setAccountData: jest.fn(),
|
||||
deleteAccountData: jest.fn(),
|
||||
setRoomAccountData: jest.fn(),
|
||||
setRoomName: jest.fn(),
|
||||
setRoomTopic: jest.fn(),
|
||||
setRoomReadMarkers: jest.fn().mockResolvedValue({}),
|
||||
sendTyping: jest.fn().mockResolvedValue({}),
|
||||
@@ -213,7 +224,23 @@ export function createTestClient(): MatrixClient {
|
||||
getRoomHierarchy: jest.fn().mockReturnValue({
|
||||
rooms: [],
|
||||
}),
|
||||
createRoom: jest.fn().mockResolvedValue({ room_id: "!1:example.org" }),
|
||||
createRoom: jest.fn(async (createOpts?: ICreateRoomOpts) => {
|
||||
const initialState = createOpts?.initial_state?.map((event, i) =>
|
||||
mkEvent({
|
||||
...event,
|
||||
room: "!1:example.org",
|
||||
user: "@user:example.com",
|
||||
event: true,
|
||||
}),
|
||||
);
|
||||
createdRoom = mkStubRoom(
|
||||
"!1:example.org",
|
||||
"My room",
|
||||
client,
|
||||
initialState && mkRoomState("!1:example.org", initialState),
|
||||
);
|
||||
return { room_id: "!1:example.org" };
|
||||
}),
|
||||
setPowerLevel: jest.fn().mockResolvedValue(undefined),
|
||||
pushRules: {},
|
||||
decryptEventIfNeeded: () => Promise.resolve(),
|
||||
@@ -616,10 +643,11 @@ export function mkStubRoom(
|
||||
roomId: string | null | undefined = null,
|
||||
name: string | undefined,
|
||||
client: MatrixClient | undefined,
|
||||
state?: RoomState | undefined,
|
||||
): Room {
|
||||
const stubTimeline = {
|
||||
getEvents: (): MatrixEvent[] => [],
|
||||
getState: (): RoomState | undefined => undefined,
|
||||
getState: (): RoomState | undefined => state,
|
||||
} as unknown as EventTimeline;
|
||||
return {
|
||||
canInvite: jest.fn().mockReturnValue(false),
|
||||
@@ -701,6 +729,22 @@ export function mkStubRoom(
|
||||
} as unknown as Room;
|
||||
}
|
||||
|
||||
export function mkRoomState(
|
||||
roomId: string = "!1:example.org",
|
||||
stateEvents: MatrixEvent[] = [],
|
||||
members: RoomMember[] = [],
|
||||
): RoomState {
|
||||
const roomState = new RoomState(roomId);
|
||||
|
||||
roomState.setStateEvents(stateEvents);
|
||||
|
||||
for (const member of members) {
|
||||
roomState.members[member.userId] = member;
|
||||
}
|
||||
|
||||
return roomState;
|
||||
}
|
||||
|
||||
export function mkServerConfig(
|
||||
hsUrl: string,
|
||||
isUrl: string,
|
||||
|
||||
Reference in New Issue
Block a user