@@ -4433,6 +4433,69 @@ describe('[Users]', () => {
44334433 } )
44344434 . then ( tryAuthentication ) ;
44354435 } ) ;
4436+
4437+ it ( 'should remove only logged out session push tokens' , async ( ) => {
4438+ const credentials1 = await login ( user . username , password ) ;
4439+ const credentials2 = await login ( user . username , password ) ;
4440+
4441+ await request
4442+ . post ( api ( 'push.token' ) )
4443+ . set ( credentials1 )
4444+ . send ( {
4445+ type : 'gcm' ,
4446+ value : 'device-1-token' ,
4447+ appName : 'com.example.device1' ,
4448+ } )
4449+ . expect ( 200 )
4450+ . expect ( ( res ) => {
4451+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
4452+ } ) ;
4453+
4454+ await request
4455+ . post ( api ( 'push.token' ) )
4456+ . set ( credentials2 )
4457+ . send ( {
4458+ type : 'gcm' ,
4459+ value : 'device-2-token' ,
4460+ appName : 'com.example.device2' ,
4461+ } )
4462+ . expect ( 200 )
4463+ . expect ( ( res ) => {
4464+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
4465+ } ) ;
4466+
4467+ await request
4468+ . post ( api ( 'users.logoutOtherClients' ) )
4469+ . set ( credentials2 )
4470+ . expect ( 200 )
4471+ . expect ( ( res ) => {
4472+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
4473+ } ) ;
4474+
4475+ await new Promise ( ( resolve ) => setTimeout ( resolve , 1000 ) ) ;
4476+
4477+ await request
4478+ . delete ( api ( 'push.token' ) )
4479+ . set ( credentials2 )
4480+ . send ( {
4481+ token : 'device-1-token' ,
4482+ } )
4483+ . expect ( 404 )
4484+ . expect ( ( res ) => {
4485+ expect ( res . body ) . to . have . property ( 'success' , false ) ;
4486+ } ) ;
4487+
4488+ await request
4489+ . delete ( api ( 'push.token' ) )
4490+ . set ( credentials2 )
4491+ . send ( {
4492+ token : 'device-2-token' ,
4493+ } )
4494+ . expect ( 200 )
4495+ . expect ( ( res ) => {
4496+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
4497+ } ) ;
4498+ } ) ;
44364499 } ) ;
44374500
44384501 describe ( '[/users.autocomplete]' , ( ) => {
@@ -4962,6 +5025,49 @@ describe('[Users]', () => {
49625025 void request . post ( api ( 'users.logout' ) ) . set ( userCredentials ) . expect ( 'Content-Type' , 'application/json' ) . expect ( 200 ) . end ( done ) ;
49635026 } ) ;
49645027 } ) ;
5028+
5029+ it ( 'should remove all push tokens when user logs out' , async ( ) => {
5030+ const testCredentials = await login ( user . username , password ) ;
5031+
5032+ await request
5033+ . post ( api ( 'push.token' ) )
5034+ . set ( testCredentials )
5035+ . send ( {
5036+ type : 'gcm' ,
5037+ value : 'logout-test-token' ,
5038+ appName : 'com.example.logout.test' ,
5039+ } )
5040+ . expect ( 200 )
5041+ . expect ( ( res ) => {
5042+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
5043+ } ) ;
5044+
5045+ await request
5046+ . post ( api ( 'users.logout' ) )
5047+ . set ( testCredentials )
5048+ . send ( {
5049+ userId : user . _id ,
5050+ } )
5051+ . expect ( 200 )
5052+ . expect ( ( res ) => {
5053+ expect ( res . body ) . to . have . property ( 'success' , true ) ;
5054+ } ) ;
5055+
5056+ await new Promise ( ( resolve ) => setTimeout ( resolve , 1000 ) ) ;
5057+
5058+ const newCredentials = await login ( user . username , password ) ;
5059+
5060+ await request
5061+ . delete ( api ( 'push.token' ) )
5062+ . set ( newCredentials )
5063+ . send ( {
5064+ token : 'logout-test-token' ,
5065+ } )
5066+ . expect ( 404 )
5067+ . expect ( ( res ) => {
5068+ expect ( res . body ) . to . have . property ( 'success' , false ) ;
5069+ } ) ;
5070+ } ) ;
49655071 } ) ;
49665072
49675073 describe ( '[/users.listByStatus]' , ( ) => {
0 commit comments