@@ -12,6 +12,7 @@ import {
1212 targetUser ,
1313 log ,
1414 wait ,
15+ reservedWords ,
1516} from '../../data/api-data.js' ;
1617import { adminEmail , preferences , password , adminUsername } from '../../data/user.js' ;
1718import { imgURL } from '../../data/interactions.js' ;
@@ -156,6 +157,30 @@ describe('[Users]', function() {
156157 } ) ;
157158 } ) ;
158159
160+ function failCreateUser ( name ) {
161+ it ( `should not create a new user if username is the reserved word ${ name } ` , ( done ) => {
162+ request . post ( api ( 'users.create' ) )
163+ . set ( credentials )
164+ . send ( {
165+ email : `create_user_fail_${ apiEmail } ` ,
166+ name : `create_user_fail_${ apiUsername } ` ,
167+ username : name ,
168+ password,
169+ active : true ,
170+ roles : [ 'user' ] ,
171+ joinDefaultChannels : true ,
172+ verified : true ,
173+ } )
174+ . expect ( 'Content-Type' , 'application/json' )
175+ . expect ( 400 )
176+ . expect ( ( res ) => {
177+ expect ( res . body ) . to . have . property ( 'success' , false ) ;
178+ expect ( res . body ) . to . have . property ( 'error' , `${ name } is already in use :( [error-field-unavailable]` ) ;
179+ } )
180+ . end ( done ) ;
181+ } ) ;
182+ }
183+
159184 function failUserWithCustomField ( field ) {
160185 it ( `should not create a user if a custom field ${ field . reason } ` , ( done ) => {
161186 setCustomFields ( { customFieldText } , ( error ) => {
@@ -197,6 +222,10 @@ describe('[Users]', function() {
197222 ] . forEach ( ( field ) => {
198223 failUserWithCustomField ( field ) ;
199224 } ) ;
225+
226+ reservedWords . forEach ( ( name ) => {
227+ failCreateUser ( name ) ;
228+ } ) ;
200229 } ) ;
201230
202231 describe ( '[/users.register]' , ( ) => {
@@ -1073,6 +1102,30 @@ describe('[Users]', function() {
10731102 } ) ;
10741103 } ) ;
10751104 } ) ;
1105+
1106+ function failUpdateUser ( name ) {
1107+ it ( `should not update an user if the new username is the reserved word ${ name } ` , ( done ) => {
1108+ request . post ( api ( 'users.update' ) )
1109+ . set ( credentials )
1110+ . send ( {
1111+ userId : targetUser . _id ,
1112+ data : {
1113+ username : name ,
1114+ } ,
1115+ } )
1116+ . expect ( 'Content-Type' , 'application/json' )
1117+ . expect ( 400 )
1118+ . expect ( ( res ) => {
1119+ expect ( res . body ) . to . have . property ( 'success' , false ) ;
1120+ expect ( res . body ) . to . have . property ( 'error' , 'Could not save user identity [error-could-not-save-identity]' ) ;
1121+ } )
1122+ . end ( done ) ;
1123+ } ) ;
1124+ }
1125+
1126+ reservedWords . forEach ( ( name ) => {
1127+ failUpdateUser ( name ) ;
1128+ } ) ;
10761129 } ) ;
10771130
10781131 describe ( '[/users.updateOwnBasicInfo]' , ( ) => {
@@ -1238,6 +1291,29 @@ describe('[Users]', function() {
12381291 } )
12391292 . end ( done ) ;
12401293 } ) ;
1294+
1295+ function failUpdateUserOwnBasicInfo ( name ) {
1296+ it ( `should not update an user's basic info if the new username is the reserved word ${ name } ` , ( done ) => {
1297+ request . post ( api ( 'users.updateOwnBasicInfo' ) )
1298+ . set ( credentials )
1299+ . send ( {
1300+ data : {
1301+ username : name ,
1302+ } ,
1303+ } )
1304+ . expect ( 'Content-Type' , 'application/json' )
1305+ . expect ( 400 )
1306+ . expect ( ( res ) => {
1307+ expect ( res . body ) . to . have . property ( 'success' , false ) ;
1308+ expect ( res . body ) . to . have . property ( 'error' , 'Could not save user identity [error-could-not-save-identity]' ) ;
1309+ } )
1310+ . end ( done ) ;
1311+ } ) ;
1312+ }
1313+
1314+ reservedWords . forEach ( ( name ) => {
1315+ failUpdateUserOwnBasicInfo ( name ) ;
1316+ } ) ;
12411317 } ) ;
12421318
12431319 describe ( '[/users.setPreferences]' , ( ) => {
0 commit comments