@@ -72,6 +72,74 @@ import { SynapseClient } from '../helper/synapse-client';
7272 } ) ;
7373
7474 describe ( 'Rooms' , ( ) => {
75+ describe ( 'Create a room on RC as private, explicitly not federated, with federated users in creation modal' , ( ) => {
76+ describe ( 'Add 1 federated user in the creation modal' , ( ) => {
77+ it ( 'It should not allow the creation of the room' , async ( ) => {
78+ const channelName = `non-federated-channel-single-fed-${ Date . now ( ) } ` ;
79+
80+ // RC view: Attempt to create a non-federated private room with 1 federated user
81+ const response = await createRoom ( {
82+ type : 'p' ,
83+ name : channelName ,
84+ members : [ federationConfig . hs1 . adminMatrixUserId ] ,
85+ extraData : {
86+ federated : false ,
87+ } ,
88+ config : rc1AdminRequestConfig ,
89+ } ) ;
90+
91+ // RC view: Verify the room creation failed
92+ expect ( response . status ) . toBe ( 400 ) ;
93+ expect ( response . body ) . toHaveProperty ( 'success' , false ) ;
94+ expect ( response . body ) . toHaveProperty ( 'errorType' , 'error-federated-users-in-non-federated-rooms' ) ;
95+ } ) ;
96+ } ) ;
97+
98+ describe ( 'Add 2 federated users in the creation modal' , ( ) => {
99+ it ( 'It should not allow the creation of the room' , async ( ) => {
100+ const channelName = `non-federated-channel-multi-fed-${ Date . now ( ) } ` ;
101+
102+ // RC view: Attempt to create a non-federated private room with 2 federated users
103+ const response = await createRoom ( {
104+ type : 'p' ,
105+ name : channelName ,
106+ members : [ federationConfig . hs1 . adminMatrixUserId , federationConfig . hs1 . additionalUser1 . matrixUserId ] ,
107+ extraData : {
108+ federated : false ,
109+ } ,
110+ config : rc1AdminRequestConfig ,
111+ } ) ;
112+
113+ // RC view: Verify the room creation failed
114+ expect ( response . status ) . toBe ( 400 ) ;
115+ expect ( response . body ) . toHaveProperty ( 'success' , false ) ;
116+ expect ( response . body ) . toHaveProperty ( 'errorType' , 'error-federated-users-in-non-federated-rooms' ) ;
117+ } ) ;
118+ } ) ;
119+
120+ describe ( 'Add 1 federated user and 1 local user in the creation modal' , ( ) => {
121+ it ( 'It should not allow the creation of the room' , async ( ) => {
122+ const channelName = `non-federated-channel-mixed-${ Date . now ( ) } ` ;
123+
124+ // RC view: Attempt to create a non-federated private room with 1 federated user and 1 local user
125+ const response = await createRoom ( {
126+ type : 'p' ,
127+ name : channelName ,
128+ members : [ federationConfig . hs1 . adminMatrixUserId , federationConfig . rc1 . additionalUser1 . username ] ,
129+ extraData : {
130+ federated : false ,
131+ } ,
132+ config : rc1AdminRequestConfig ,
133+ } ) ;
134+
135+ // RC view: Verify the room creation failed
136+ expect ( response . status ) . toBe ( 400 ) ;
137+ expect ( response . body ) . toHaveProperty ( 'success' , false ) ;
138+ expect ( response . body ) . toHaveProperty ( 'errorType' , 'error-federated-users-in-non-federated-rooms' ) ;
139+ } ) ;
140+ } ) ;
141+ } ) ;
142+
75143 describe ( 'Create a room on RC as private, do not mark as federated and' , ( ) => {
76144 let nonFederatedChannel : { _id : string ; name : string ; t : string ; federated ?: boolean } ;
77145
0 commit comments