@@ -18,7 +18,7 @@ import { type Mocked } from "jest-mock";
18
18
19
19
import { makeKey , makeMockEvent , makeMockRoom , membershipTemplate , mockCallMembership } from "./mocks" ;
20
20
import { EventType , type IRoomTimelineData , type Room , RoomEvent , type MatrixClient } from "../../../src" ;
21
- import type { ToDeviceKeyTransport } from "../../../src/matrixrtc/ToDeviceKeyTransport.ts" ;
21
+ import { ToDeviceKeyTransport } from "../../../src/matrixrtc/ToDeviceKeyTransport.ts" ;
22
22
import {
23
23
getMockClientWithEventEmitter ,
24
24
mockClientMethodsEvents ,
@@ -28,7 +28,7 @@ import { type Statistics } from "../../../src/matrixrtc";
28
28
import { KeyTransportEvents } from "../../../src/matrixrtc/IKeyTransport.ts" ;
29
29
import { type Logger } from "../../../src/logger.ts" ;
30
30
import { RoomAndToDeviceEvents , RoomAndToDeviceTransport } from "../../../src/matrixrtc/RoomAndToDeviceKeyTransport.ts" ;
31
- import type { RoomKeyTransport } from "../../../src/matrixrtc/RoomKeyTransport.ts" ;
31
+ import { RoomKeyTransport } from "../../../src/matrixrtc/RoomKeyTransport.ts" ;
32
32
33
33
describe ( "RoomAndToDeviceTransport" , ( ) => {
34
34
const roomId = "!room:id" ;
@@ -39,12 +39,10 @@ describe("RoomAndToDeviceTransport", () => {
39
39
let transport : RoomAndToDeviceTransport ;
40
40
let mockRoom : Room ;
41
41
let sendEventMock : jest . Mock ;
42
- function getToDeviceTransport ( transport : RoomAndToDeviceTransport ) : ToDeviceKeyTransport {
43
- return ( transport as unknown as any ) . toDeviceTransport as ToDeviceKeyTransport ;
44
- }
45
- function getRoomTransport ( transport : RoomAndToDeviceTransport ) {
46
- return ( transport as unknown as any ) . roomKeyTransport as RoomKeyTransport ;
47
- }
42
+ let roomKeyTransport : RoomKeyTransport ;
43
+ let toDeviceKeyTransport : ToDeviceKeyTransport ;
44
+ let toDeviceSendKeySpy : jest . SpyInstance ;
45
+ let roomSendKeySpy : jest . SpyInstance ;
48
46
beforeEach ( ( ) => {
49
47
sendEventMock = jest . fn ( ) ;
50
48
mockClient = getMockClientWithEventEmitter ( {
@@ -70,14 +68,17 @@ describe("RoomAndToDeviceTransport", () => {
70
68
roomEventEncryptionKeysReceivedTotalAge : 0 ,
71
69
} ,
72
70
} ;
73
- transport = new RoomAndToDeviceTransport (
71
+ roomKeyTransport = new RoomKeyTransport ( mockRoom , mockClient , statistics ) ;
72
+ toDeviceKeyTransport = new ToDeviceKeyTransport (
74
73
"@alice:example.org" ,
75
74
"MYDEVICE" ,
76
- mockRoom ,
75
+ mockRoom . roomId ,
77
76
mockClient ,
78
77
statistics ,
79
- mockLogger ,
80
78
) ;
79
+ transport = new RoomAndToDeviceTransport ( toDeviceKeyTransport , roomKeyTransport , mockLogger ) ;
80
+ toDeviceSendKeySpy = jest . spyOn ( toDeviceKeyTransport , "sendKey" ) ;
81
+ roomSendKeySpy = jest . spyOn ( roomKeyTransport , "sendKey" ) ;
81
82
} ) ;
82
83
83
84
it ( "should enable to device transport when starting" , ( ) => {
@@ -87,19 +88,15 @@ describe("RoomAndToDeviceTransport", () => {
87
88
} ) ;
88
89
it ( "only sends to device keys when sending a key" , async ( ) => {
89
90
transport . start ( ) ;
90
- const toDeviceSpy = jest . spyOn ( getToDeviceTransport ( transport ) , "sendKey" ) ;
91
- const roomSpy = jest . spyOn ( getRoomTransport ( transport ) , "sendKey" ) ;
92
91
await transport . sendKey ( "1235" , 0 , [ mockCallMembership ( membershipTemplate , roomId , "@alice:example.org" ) ] ) ;
93
- expect ( toDeviceSpy ) . toHaveBeenCalledTimes ( 1 ) ;
94
- expect ( roomSpy ) . toHaveBeenCalledTimes ( 0 ) ;
92
+ expect ( toDeviceSendKeySpy ) . toHaveBeenCalledTimes ( 1 ) ;
93
+ expect ( roomSendKeySpy ) . toHaveBeenCalledTimes ( 0 ) ;
95
94
expect ( transport . enabled . room ) . toBeFalsy ( ) ;
96
95
expect ( transport . enabled . toDevice ) . toBeTruthy ( ) ;
97
96
} ) ;
98
97
99
98
it ( "enables room transport and disables to device transport when receiving a room key" , async ( ) => {
100
99
transport . start ( ) ;
101
- const roomSpy = jest . spyOn ( getRoomTransport ( transport ) , "sendKey" ) ;
102
- const toDeviceSpy = jest . spyOn ( getToDeviceTransport ( transport ) , "sendKey" ) ;
103
100
const onNewKeyFromTransport = jest . fn ( ) ;
104
101
const onTransportEnabled = jest . fn ( ) ;
105
102
transport . on ( KeyTransportEvents . ReceivedKeys , onNewKeyFromTransport ) ;
@@ -123,8 +120,8 @@ describe("RoomAndToDeviceTransport", () => {
123
120
124
121
await transport . sendKey ( "1235" , 0 , [ mockCallMembership ( membershipTemplate , roomId , "@alice:example.org" ) ] ) ;
125
122
expect ( sendEventMock ) . toHaveBeenCalledTimes ( 1 ) ;
126
- expect ( roomSpy ) . toHaveBeenCalledTimes ( 1 ) ;
127
- expect ( toDeviceSpy ) . toHaveBeenCalledTimes ( 0 ) ;
123
+ expect ( roomSendKeySpy ) . toHaveBeenCalledTimes ( 1 ) ;
124
+ expect ( toDeviceSendKeySpy ) . toHaveBeenCalledTimes ( 0 ) ;
128
125
expect ( onTransportEnabled ) . toHaveBeenCalledWith ( { toDevice : false , room : true } ) ;
129
126
} ) ;
130
127
it ( "does log that it did nothing when disabled" , ( ) => {
@@ -136,15 +133,8 @@ describe("RoomAndToDeviceTransport", () => {
136
133
137
134
transport . setEnabled ( { toDevice : false , room : false } ) ;
138
135
const dateNow = Date . now ( ) ;
139
- getRoomTransport ( transport ) . emit ( KeyTransportEvents . ReceivedKeys , "user" , "device" , "roomKey" , 0 , dateNow ) ;
140
- getToDeviceTransport ( transport ) . emit (
141
- KeyTransportEvents . ReceivedKeys ,
142
- "user" ,
143
- "device" ,
144
- "toDeviceKey" ,
145
- 0 ,
146
- Date . now ( ) ,
147
- ) ;
136
+ roomKeyTransport . emit ( KeyTransportEvents . ReceivedKeys , "user" , "device" , "roomKey" , 0 , dateNow ) ;
137
+ toDeviceKeyTransport . emit ( KeyTransportEvents . ReceivedKeys , "user" , "device" , "toDeviceKey" , 0 , Date . now ( ) ) ;
148
138
149
139
expect ( mockLogger . debug ) . toHaveBeenCalledWith ( "To Device transport is disabled, ignoring received keys" ) ;
150
140
// for room key transport we will never get a disabled message because its will always just turn on
0 commit comments