@@ -793,6 +793,10 @@ describe('[Users]', function () {
793
793
let deactivatedUser ;
794
794
let user2 ;
795
795
let user2Credentials ;
796
+ let user3 ;
797
+ let user3Credentials ;
798
+ let group ;
799
+ let inviteToken ;
796
800
797
801
before ( async ( ) => {
798
802
const username = `deactivated_${ Date . now ( ) } ${ apiUsername } ` ;
@@ -849,14 +853,44 @@ describe('[Users]', function () {
849
853
before ( async ( ) => {
850
854
user2 = await createUser ( { joinDefaultChannels : false } ) ;
851
855
user2Credentials = await login ( user2 . username , password ) ;
856
+ user3 = await createUser ( { joinDefaultChannels : false } ) ;
857
+ user3Credentials = await login ( user3 . username , password ) ;
852
858
} ) ;
853
859
860
+ before ( 'Create a group' , async ( ) => {
861
+ group = (
862
+ await createRoom ( {
863
+ type : 'p' ,
864
+ name : `group.test.${ Date . now ( ) } -${ Math . random ( ) } ` ,
865
+ } )
866
+ ) . body . group ;
867
+ } ) ;
868
+
869
+ before ( 'Create invite link' , async ( ) => {
870
+ inviteToken = (
871
+ await request . post ( api ( 'findOrCreateInvite' ) ) . set ( credentials ) . send ( {
872
+ rid : group . _id ,
873
+ days : 0 ,
874
+ maxUses : 0 ,
875
+ } )
876
+ ) . body . _id ;
877
+ } ) ;
878
+
879
+ after ( 'Remove invite link' , async ( ) =>
880
+ request
881
+ . delete ( api ( `removeInvite/${ inviteToken } ` ) )
882
+ . set ( credentials )
883
+ . send ( ) ,
884
+ ) ;
885
+
854
886
after ( ( ) =>
855
887
Promise . all ( [
856
888
clearCustomFields ( ) ,
857
889
deleteUser ( deactivatedUser ) ,
858
890
deleteUser ( user ) ,
859
891
deleteUser ( user2 ) ,
892
+ deleteUser ( user3 ) ,
893
+ deleteRoom ( { type : 'p' , roomId : group . _id } ) ,
860
894
updatePermission ( 'view-outside-room' , [ 'admin' , 'owner' , 'moderator' , 'user' ] ) ,
861
895
updateSetting ( 'API_Apply_permission_view-outside-room_on_users-list' , false ) ,
862
896
] ) ,
@@ -979,6 +1013,70 @@ describe('[Users]', function () {
979
1013
980
1014
await request . get ( api ( 'users.list' ) ) . set ( user2Credentials ) . expect ( 'Content-Type' , 'application/json' ) . expect ( 403 ) ;
981
1015
} ) ;
1016
+
1017
+ it ( 'should exclude inviteToken in the user item for privileged users even when fields={inviteToken:1} is specified' , async ( ) => {
1018
+ await request
1019
+ . post ( api ( 'useInviteToken' ) )
1020
+ . set ( user2Credentials )
1021
+ . send ( { token : inviteToken } )
1022
+ . expect ( 200 )
1023
+ . expect ( 'Content-Type' , 'application/json' )
1024
+ . expect ( ( res ) => {
1025
+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
1026
+ expect ( res . body ) . to . have . property ( 'room' ) ;
1027
+ expect ( res . body . room ) . to . have . property ( 'rid' , group . _id ) ;
1028
+ } ) ;
1029
+
1030
+ await request
1031
+ . get ( api ( 'users.list' ) )
1032
+ . set ( credentials )
1033
+ . expect ( 'Content-Type' , 'application/json' )
1034
+ . query ( {
1035
+ fields : JSON . stringify ( { inviteToken : 1 } ) ,
1036
+ sort : JSON . stringify ( { inviteToken : - 1 } ) ,
1037
+ count : 100 ,
1038
+ } )
1039
+ . expect ( 200 )
1040
+ . expect ( ( res ) => {
1041
+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
1042
+ expect ( res . body ) . to . have . property ( 'users' ) ;
1043
+ res . body . users . forEach ( ( user ) => {
1044
+ expect ( user ) . to . not . have . property ( 'inviteToken' ) ;
1045
+ } ) ;
1046
+ } ) ;
1047
+ } ) ;
1048
+
1049
+ it ( 'should exclude inviteToken in the user item for normal users even when fields={inviteToken:1} is specified' , async ( ) => {
1050
+ await updateSetting ( 'API_Apply_permission_view-outside-room_on_users-list' , false ) ;
1051
+ await request
1052
+ . post ( api ( 'useInviteToken' ) )
1053
+ . set ( user3Credentials )
1054
+ . send ( { token : inviteToken } )
1055
+ . expect ( 200 )
1056
+ . expect ( ( res ) => {
1057
+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
1058
+ expect ( res . body ) . to . have . property ( 'room' ) ;
1059
+ expect ( res . body . room ) . to . have . property ( 'rid' , group . _id ) ;
1060
+ } ) ;
1061
+
1062
+ await request
1063
+ . get ( api ( 'users.list' ) )
1064
+ . set ( user3Credentials )
1065
+ . expect ( 'Content-Type' , 'application/json' )
1066
+ . query ( {
1067
+ fields : JSON . stringify ( { inviteToken : 1 } ) ,
1068
+ sort : JSON . stringify ( { inviteToken : - 1 } ) ,
1069
+ count : 100 ,
1070
+ } )
1071
+ . expect ( 200 )
1072
+ . expect ( ( res ) => {
1073
+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
1074
+ expect ( res . body ) . to . have . property ( 'users' ) ;
1075
+ res . body . users . forEach ( ( user ) => {
1076
+ expect ( user ) . to . not . have . property ( 'inviteToken' ) ;
1077
+ } ) ;
1078
+ } ) ;
1079
+ } ) ;
982
1080
} ) ;
983
1081
984
1082
describe ( 'Avatars' , ( ) => {
0 commit comments