@@ -100,6 +100,54 @@ describe('users - integration', function() {
100100 done ( ) ;
101101 } ) ;
102102 } ) ;
103+
104+ it ( 'invalidates current session when options are not injected' , function ( done ) {
105+ // "injectOptionsFromRemoteContext" is disabled by default,
106+ // therefore the code invalidating sessions cannot tell what
107+ // is the current session, and thus invalidates all sessions
108+ var url = '/api/users/' + userId ;
109+ var self = this ;
110+ this . request . patch ( url )
111+ . send ( { email :
'[email protected] ' } ) 112+ . set ( 'Authorization' , accessToken )
113+ . expect ( 200 , function ( err ) {
114+ if ( err ) return done ( err ) ;
115+ self . get ( url )
116+ . set ( 'Authorization' , accessToken )
117+ . expect ( 401 , done ) ;
118+ } ) ;
119+ } ) ;
120+
121+ it ( 'should preserve current session when invalidating tokens' , function ( done ) {
122+ var UserWithContext = app . registry . createModel ( {
123+ name : 'UserWithContext' ,
124+ plural : 'ctx-users' ,
125+ base : 'User' ,
126+ injectOptionsFromRemoteContext : true
127+ } ) ;
128+ app . model ( UserWithContext , { dataSource : 'db' } ) ;
129+
130+ var self = this ;
131+ var CREDENTIALS = { email :
'[email protected] ' , password :
'pass' } ; 132+ UserWithContext . create ( CREDENTIALS , function ( err , user ) {
133+ if ( err ) return done ( err ) ;
134+
135+ UserWithContext . login ( CREDENTIALS , function ( err , token ) {
136+ if ( err ) return done ( err ) ;
137+
138+ var url = '/api/ctx-users/' + user . id ;
139+ self . request . patch ( url )
140+ . send ( { email :
'[email protected] ' } ) 141+ . set ( 'Authorization' , token . id )
142+ . expect ( 200 , function ( err ) {
143+ if ( err ) return done ( err ) ;
144+ self . get ( url )
145+ . set ( 'Authorization' , token . id )
146+ . expect ( 200 , done ) ;
147+ } ) ;
148+ } ) ;
149+ } ) ;
150+ } ) ;
103151 } ) ;
104152
105153 describe ( 'sub-user' , function ( ) {
0 commit comments