@@ -2,7 +2,7 @@ import fs from 'fs';
2
2
import path from 'path' ;
3
3
4
4
import type { Credentials } from '@rocket.chat/api-client' ;
5
- import type { IMessage , IRoom , ITeam , IUpload , IUser , ImageAttachmentProps , SettingValue } from '@rocket.chat/core-typings' ;
5
+ import type { IMessage , IRole , IRoom , ITeam , IUpload , IUser , ImageAttachmentProps , SettingValue } from '@rocket.chat/core-typings' ;
6
6
import { TEAM_TYPE } from '@rocket.chat/core-typings' ;
7
7
import { Random } from '@rocket.chat/random' ;
8
8
import { assert , expect } from 'chai' ;
@@ -13,6 +13,7 @@ import { getCredentials, api, request, credentials } from '../../data/api-data';
13
13
import { sendSimpleMessage , deleteMessage } from '../../data/chat.helper' ;
14
14
import { imgURL } from '../../data/interactions' ;
15
15
import { getSettingValueById , updateEEPermission , updatePermission , updateSetting } from '../../data/permissions.helper' ;
16
+ import { assignRoleToUser , createCustomRole , deleteCustomRole } from '../../data/roles.helper' ;
16
17
import { createRoom , deleteRoom } from '../../data/rooms.helper' ;
17
18
import { createTeam , deleteTeam } from '../../data/teams.helper' ;
18
19
import { password } from '../../data/user' ;
@@ -3637,11 +3638,14 @@ describe('[Rooms]', () => {
3637
3638
} ) ;
3638
3639
3639
3640
describe ( '[/rooms.membersOrderedByRole]' , ( ) => {
3641
+ const isEnterprise = Boolean ( process . env . IS_EE ) ;
3642
+
3640
3643
let testChannel : IRoom ;
3641
3644
let ownerUser : IUser ;
3642
3645
let moderatorUser : IUser ;
3643
3646
let memberUser1 : IUser ;
3644
3647
let memberUser2 : IUser ;
3648
+ let customRole : IRole ;
3645
3649
3646
3650
let ownerCredentials : { 'X-Auth-Token' : string ; 'X-User-Id' : string } ;
3647
3651
@@ -3655,6 +3659,12 @@ describe('[Rooms]', () => {
3655
3659
3656
3660
ownerCredentials = await login ( ownerUser . username , password ) ;
3657
3661
3662
+ customRole = await createCustomRole ( {
3663
+ name : `customRole.${ Random . id ( ) } ` ,
3664
+ scope : 'Subscriptions' ,
3665
+ description : 'Custom Role' ,
3666
+ } ) ;
3667
+
3658
3668
// Create a public channel
3659
3669
const roomCreationResponse = await createRoom ( {
3660
3670
type : 'c' ,
@@ -3689,6 +3699,7 @@ describe('[Rooms]', () => {
3689
3699
after ( async ( ) => {
3690
3700
await deleteRoom ( { type : 'c' , roomId : testChannel . _id } ) ;
3691
3701
await Promise . all ( [ ownerUser , moderatorUser , memberUser1 , memberUser2 ] . map ( ( user ) => deleteUser ( user ) ) ) ;
3702
+ await deleteCustomRole ( { roleId : customRole . _id } ) ;
3692
3703
} ) ;
3693
3704
3694
3705
it ( 'should return a list of members ordered by owner, moderator, then members by default' , async ( ) => {
@@ -3808,6 +3819,33 @@ describe('[Rooms]', () => {
3808
3819
expect ( usernames ) . to . deep . equal ( expected ) ;
3809
3820
} ) ;
3810
3821
3822
+ it ( 'should not be affected by custom roles when sorting' , async ( ) => {
3823
+ if ( ! isEnterprise ) {
3824
+ return ;
3825
+ }
3826
+ await Promise . all ( [
3827
+ assignRoleToUser ( { username : moderatorUser . username as string , roleId : customRole . _id } ) ,
3828
+ assignRoleToUser ( { username : memberUser2 . username as string , roleId : customRole . _id } ) ,
3829
+ ] ) ;
3830
+
3831
+ const response = await request
3832
+ . get ( api ( 'rooms.membersOrderedByRole' ) )
3833
+ . set ( credentials )
3834
+ . query ( {
3835
+ roomId : testChannel . _id ,
3836
+ } )
3837
+ . expect ( 'Content-Type' , 'application/json' )
3838
+ . expect ( 200 ) ;
3839
+
3840
+ expect ( response . body ) . to . have . property ( 'success' , true ) ;
3841
+ const [ first , second , third , fourth ] = response . body . members ;
3842
+
3843
+ expect ( first . username ) . to . equal ( ownerUser . username ) ;
3844
+ expect ( second . username ) . to . equal ( moderatorUser . username ) ;
3845
+ expect ( third . username ) . to . equal ( memberUser1 . username ) ;
3846
+ expect ( fourth . username ) . to . equal ( memberUser2 . username ) ;
3847
+ } ) ;
3848
+
3811
3849
describe ( 'Additional Visibility Tests' , ( ) => {
3812
3850
let outsiderUser : IUser ;
3813
3851
let insideUser : IUser ;
0 commit comments