@@ -246,6 +246,130 @@ describe('http.ServerRequest', function() {
246246 } ) ;
247247 } ) ;
248248
249+ describe ( 'establishing a session and not keeping previous session data' , function ( ) {
250+ var passport = new Passport ( ) ;
251+ passport . serializeUser ( function ( user , done ) {
252+ done ( null , user . id ) ;
253+ } ) ;
254+
255+ var req = new Object ( ) ;
256+ req . login = request . login ;
257+ req . isAuthenticated = request . isAuthenticated ;
258+ req . isUnauthenticated = request . isUnauthenticated ;
259+ req . _passport = { } ;
260+ req . _passport . instance = passport ;
261+ req . _sessionManager = passport . _sm ;
262+ req . session = { cart : [ '1' , '2' , ] } ;
263+ Object . defineProperty ( req . session , 'id' , { value : '1' } ) ;
264+ req . session . regenerate = function ( cb ) {
265+ req . session = { id : '2' } ;
266+ req . session . save = function ( cb ) {
267+ process . nextTick ( cb ) ;
268+ } ;
269+ process . nextTick ( cb ) ;
270+ } ;
271+
272+ var error ;
273+
274+ before ( function ( done ) {
275+ var user = { id : '1' , username : 'root' } ;
276+
277+ req . login ( user , function ( err ) {
278+ error = err ;
279+ done ( ) ;
280+ } ) ;
281+ } ) ;
282+
283+ it ( 'should not error' , function ( ) {
284+ expect ( error ) . to . be . undefined ;
285+ } ) ;
286+
287+ it ( 'should be authenticated' , function ( ) {
288+ expect ( req . isAuthenticated ( ) ) . to . be . true ;
289+ expect ( req . isUnauthenticated ( ) ) . to . be . false ;
290+ } ) ;
291+
292+ it ( 'should regenerate session' , function ( ) {
293+ expect ( req . session . id ) . to . equal ( '2' ) ;
294+ } ) ;
295+
296+ it ( 'should keep session data' , function ( ) {
297+ expect ( req . session . cart ) . to . be . undefined ;
298+ } ) ;
299+
300+ it ( 'should set user' , function ( ) {
301+ expect ( req . user ) . to . be . an ( 'object' ) ;
302+ expect ( req . user . id ) . to . equal ( '1' ) ;
303+ expect ( req . user . username ) . to . equal ( 'root' ) ;
304+ } ) ;
305+
306+ it ( 'should serialize user' , function ( ) {
307+ expect ( req . session [ 'passport' ] . user ) . to . equal ( '1' ) ;
308+ } ) ;
309+ } ) ;
310+
311+ describe ( 'establishing a session and keeping previous session data' , function ( ) {
312+ var passport = new Passport ( ) ;
313+ passport . serializeUser ( function ( user , done ) {
314+ done ( null , user . id ) ;
315+ } ) ;
316+
317+ var req = new Object ( ) ;
318+ req . login = request . login ;
319+ req . isAuthenticated = request . isAuthenticated ;
320+ req . isUnauthenticated = request . isUnauthenticated ;
321+ req . _passport = { } ;
322+ req . _passport . instance = passport ;
323+ req . _sessionManager = passport . _sm ;
324+ req . session = { cart : [ '1' , '2' , ] } ;
325+ Object . defineProperty ( req . session , 'id' , { value : '1' } ) ;
326+ req . session . regenerate = function ( cb ) {
327+ req . session = { id : '2' } ;
328+ req . session . save = function ( cb ) {
329+ process . nextTick ( cb ) ;
330+ } ;
331+ process . nextTick ( cb ) ;
332+ } ;
333+
334+ var error ;
335+
336+ before ( function ( done ) {
337+ var user = { id : '1' , username : 'root' } ;
338+
339+ req . login ( user , { keepSessionData : true } , function ( err ) {
340+ error = err ;
341+ done ( ) ;
342+ } ) ;
343+ } ) ;
344+
345+ it ( 'should not error' , function ( ) {
346+ expect ( error ) . to . be . undefined ;
347+ } ) ;
348+
349+ it ( 'should be authenticated' , function ( ) {
350+ expect ( req . isAuthenticated ( ) ) . to . be . true ;
351+ expect ( req . isUnauthenticated ( ) ) . to . be . false ;
352+ } ) ;
353+
354+ it ( 'should regenerate session' , function ( ) {
355+ expect ( req . session . id ) . to . equal ( '2' ) ;
356+ } ) ;
357+
358+ it ( 'should keep session data' , function ( ) {
359+ expect ( req . session . cart ) . to . deep . equal ( [ '1' , '2' ] ) ;
360+ } ) ;
361+
362+ it ( 'should set user' , function ( ) {
363+ expect ( req . user ) . to . be . an ( 'object' ) ;
364+ expect ( req . user . id ) . to . equal ( '1' ) ;
365+ expect ( req . user . username ) . to . equal ( 'root' ) ;
366+ } ) ;
367+
368+ it ( 'should serialize user' , function ( ) {
369+ expect ( req . session [ 'passport' ] . user ) . to . equal ( '1' ) ;
370+ } ) ;
371+ } ) ;
372+
249373 describe ( 'establishing a session and setting custom user property' , function ( ) {
250374 var passport = new Passport ( ) ;
251375 passport . serializeUser ( function ( user , done ) {
0 commit comments