@@ -777,6 +777,10 @@ describe('[Users]', function () {
777
777
let deactivatedUser ;
778
778
let user2 ;
779
779
let user2Credentials ;
780
+ let user3 ;
781
+ let user3Credentials ;
782
+ let group ;
783
+ let inviteToken ;
780
784
781
785
before ( async ( ) => {
782
786
const username = `deactivated_${ Date . now ( ) } ${ apiUsername } ` ;
@@ -833,14 +837,44 @@ describe('[Users]', function () {
833
837
before ( async ( ) => {
834
838
user2 = await createUser ( { joinDefaultChannels : false } ) ;
835
839
user2Credentials = await login ( user2 . username , password ) ;
840
+ user3 = await createUser ( { joinDefaultChannels : false } ) ;
841
+ user3Credentials = await login ( user3 . username , password ) ;
836
842
} ) ;
837
843
844
+ before ( 'Create a group' , async ( ) => {
845
+ group = (
846
+ await createRoom ( {
847
+ type : 'p' ,
848
+ name : `group.test.${ Date . now ( ) } -${ Math . random ( ) } ` ,
849
+ } )
850
+ ) . body . group ;
851
+ } ) ;
852
+
853
+ before ( 'Create invite link' , async ( ) => {
854
+ inviteToken = (
855
+ await request . post ( api ( 'findOrCreateInvite' ) ) . set ( credentials ) . send ( {
856
+ rid : group . _id ,
857
+ days : 0 ,
858
+ maxUses : 0 ,
859
+ } )
860
+ ) . body . _id ;
861
+ } ) ;
862
+
863
+ after ( 'Remove invite link' , async ( ) =>
864
+ request
865
+ . delete ( api ( `removeInvite/${ inviteToken } ` ) )
866
+ . set ( credentials )
867
+ . send ( ) ,
868
+ ) ;
869
+
838
870
after ( ( ) =>
839
871
Promise . all ( [
840
872
clearCustomFields ( ) ,
841
873
deleteUser ( deactivatedUser ) ,
842
874
deleteUser ( user ) ,
843
875
deleteUser ( user2 ) ,
876
+ deleteUser ( user3 ) ,
877
+ deleteRoom ( { type : 'p' , roomId : group . _id } ) ,
844
878
updatePermission ( 'view-outside-room' , [ 'admin' , 'owner' , 'moderator' , 'user' ] ) ,
845
879
updateSetting ( 'API_Apply_permission_view-outside-room_on_users-list' , false ) ,
846
880
] ) ,
@@ -963,6 +997,70 @@ describe('[Users]', function () {
963
997
964
998
await request . get ( api ( 'users.list' ) ) . set ( user2Credentials ) . expect ( 'Content-Type' , 'application/json' ) . expect ( 403 ) ;
965
999
} ) ;
1000
+
1001
+ it ( 'should exclude inviteToken in the user item for privileged users even when fields={inviteToken:1} is specified' , async ( ) => {
1002
+ await request
1003
+ . post ( api ( 'useInviteToken' ) )
1004
+ . set ( user2Credentials )
1005
+ . send ( { token : inviteToken } )
1006
+ . expect ( 200 )
1007
+ . expect ( 'Content-Type' , 'application/json' )
1008
+ . expect ( ( res ) => {
1009
+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
1010
+ expect ( res . body ) . to . have . property ( 'room' ) ;
1011
+ expect ( res . body . room ) . to . have . property ( 'rid' , group . _id ) ;
1012
+ } ) ;
1013
+
1014
+ await request
1015
+ . get ( api ( 'users.list' ) )
1016
+ . set ( credentials )
1017
+ . expect ( 'Content-Type' , 'application/json' )
1018
+ . query ( {
1019
+ fields : JSON . stringify ( { inviteToken : 1 } ) ,
1020
+ sort : JSON . stringify ( { inviteToken : - 1 } ) ,
1021
+ count : 100 ,
1022
+ } )
1023
+ . expect ( 200 )
1024
+ . expect ( ( res ) => {
1025
+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
1026
+ expect ( res . body ) . to . have . property ( 'users' ) ;
1027
+ res . body . users . forEach ( ( user ) => {
1028
+ expect ( user ) . to . not . have . property ( 'inviteToken' ) ;
1029
+ } ) ;
1030
+ } ) ;
1031
+ } ) ;
1032
+
1033
+ it ( 'should exclude inviteToken in the user item for normal users even when fields={inviteToken:1} is specified' , async ( ) => {
1034
+ await updateSetting ( 'API_Apply_permission_view-outside-room_on_users-list' , false ) ;
1035
+ await request
1036
+ . post ( api ( 'useInviteToken' ) )
1037
+ . set ( user3Credentials )
1038
+ . send ( { token : inviteToken } )
1039
+ . expect ( 200 )
1040
+ . expect ( ( res ) => {
1041
+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
1042
+ expect ( res . body ) . to . have . property ( 'room' ) ;
1043
+ expect ( res . body . room ) . to . have . property ( 'rid' , group . _id ) ;
1044
+ } ) ;
1045
+
1046
+ await request
1047
+ . get ( api ( 'users.list' ) )
1048
+ . set ( user3Credentials )
1049
+ . expect ( 'Content-Type' , 'application/json' )
1050
+ . query ( {
1051
+ fields : JSON . stringify ( { inviteToken : 1 } ) ,
1052
+ sort : JSON . stringify ( { inviteToken : - 1 } ) ,
1053
+ count : 100 ,
1054
+ } )
1055
+ . expect ( 200 )
1056
+ . expect ( ( res ) => {
1057
+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
1058
+ expect ( res . body ) . to . have . property ( 'users' ) ;
1059
+ res . body . users . forEach ( ( user ) => {
1060
+ expect ( user ) . to . not . have . property ( 'inviteToken' ) ;
1061
+ } ) ;
1062
+ } ) ;
1063
+ } ) ;
966
1064
} ) ;
967
1065
968
1066
describe ( 'Avatars' , ( ) => {
0 commit comments