@@ -773,7 +773,7 @@ describe("MatrixRTCSession", () => {
773
773
expect ( client . cancelPendingEvent ) . toHaveBeenCalledWith ( eventSentinel ) ;
774
774
} ) ;
775
775
776
- it ( "rotates key if a new member joins" , async ( ) => {
776
+ it ( "Re-sends key if a new member joins" , async ( ) => {
777
777
jest . useFakeTimers ( ) ;
778
778
try {
779
779
const mockRoom = makeMockRoom ( [ membershipTemplate ] ) ;
@@ -784,9 +784,7 @@ describe("MatrixRTCSession", () => {
784
784
} ) ;
785
785
786
786
sess . joinRoomSession ( [ mockFocus ] , mockFocus , { manageMediaKeys : true } ) ;
787
- const firstKeysPayload = await keysSentPromise1 ;
788
- expect ( firstKeysPayload . keys ) . toHaveLength ( 1 ) ;
789
- expect ( firstKeysPayload . keys [ 0 ] . index ) . toEqual ( 0 ) ;
787
+ await keysSentPromise1 ;
790
788
expect ( sess ! . statistics . counters . roomEventEncryptionKeysSent ) . toEqual ( 1 ) ;
791
789
792
790
sendEventMock . mockClear ( ) ;
@@ -808,14 +806,9 @@ describe("MatrixRTCSession", () => {
808
806
. mockReturnValue ( makeMockRoomState ( [ membershipTemplate , member2 ] , mockRoom . roomId ) ) ;
809
807
sess . onMembershipUpdate ( ) ;
810
808
811
- jest . advanceTimersByTime ( 10000 ) ;
812
-
813
- const secondKeysPayload = await keysSentPromise2 ;
809
+ await keysSentPromise2 ;
814
810
815
811
expect ( sendEventMock ) . toHaveBeenCalled ( ) ;
816
- expect ( secondKeysPayload . keys ) . toHaveLength ( 1 ) ;
817
- expect ( secondKeysPayload . keys [ 0 ] . index ) . toEqual ( 1 ) ;
818
- expect ( secondKeysPayload . keys [ 0 ] . key ) . not . toEqual ( firstKeysPayload . keys [ 0 ] . key ) ;
819
812
expect ( sess ! . statistics . counters . roomEventEncryptionKeysSent ) . toEqual ( 2 ) ;
820
813
} finally {
821
814
jest . useRealTimers ( ) ;
@@ -1103,8 +1096,8 @@ describe("MatrixRTCSession", () => {
1103
1096
}
1104
1097
jest . useFakeTimers ( ) ;
1105
1098
try {
1106
- // start with a single member
1107
- const mockRoom = makeMockRoom ( members . slice ( 0 , 1 ) ) ;
1099
+ // start with all members
1100
+ const mockRoom = makeMockRoom ( members ) ;
1108
1101
1109
1102
for ( let i = 0 ; i < membersToTest ; i ++ ) {
1110
1103
const keysSentPromise = new Promise < EncryptionKeysEventContent > ( ( resolve ) => {
@@ -1116,10 +1109,12 @@ describe("MatrixRTCSession", () => {
1116
1109
sess = MatrixRTCSession . roomSessionForRoom ( client , mockRoom ) ;
1117
1110
sess . joinRoomSession ( [ mockFocus ] , mockFocus , { manageMediaKeys : true } ) ;
1118
1111
} else {
1119
- // otherwise update the state
1112
+ // otherwise update the state reducing the membership each time in order to trigger key rotation
1120
1113
mockRoom . getLiveTimeline ( ) . getState = jest
1121
1114
. fn ( )
1122
- . mockReturnValue ( makeMockRoomState ( members . slice ( 0 , i + 1 ) , mockRoom . roomId ) ) ;
1115
+ . mockReturnValue (
1116
+ makeMockRoomState ( members . slice ( 0 , membersToTest - i ) , mockRoom . roomId ) ,
1117
+ ) ;
1123
1118
}
1124
1119
1125
1120
sess ! . onMembershipUpdate ( ) ;
0 commit comments