diff --git a/passport/index.d.ts b/passport/index.d.ts index 9f6641c552..0a8f78fb77 100644 --- a/passport/index.d.ts +++ b/passport/index.d.ts @@ -55,8 +55,8 @@ declare module 'passport' { authenticate(strategy: string|string[], options: AuthenticateOptions, callback?: Function): express.Handler; authorize(strategy: string|string[], callback?: Function): express.Handler; authorize(strategy: string|string[], options: any, callback?: Function): express.Handler; - serializeUser(fn: (user: TUser, done: (err: any, id: TID) => void) => void): void; - deserializeUser(fn: (id: TID, done: (err: any, user: TUser) => void) => void): void; + serializeUser(fn: (user: TUser, done: (err: any, id?: TID) => void) => void): void; + deserializeUser(fn: (id: TID, done: (err: any, user?: TUser) => void) => void): void; transformAuthInfo(fn: (info: any, done: (err: any, info: any) => void) => void): void; } diff --git a/passport/passport-tests.ts b/passport/passport-tests.ts index 4c1778df7f..c461d45562 100644 --- a/passport/passport-tests.ts +++ b/passport/passport-tests.ts @@ -25,10 +25,32 @@ const newFramework:passport.Framework = { }; passport.use(new TestStrategy()); passport.framework(newFramework); -passport.serializeUser((user, done) => { }); -passport.serializeUser((user, done) => { }); -passport.deserializeUser((id, done) => { }); -passport.deserializeUser((id, done) => { }); + +interface TestUser { + id: number; +} +passport.serializeUser((user: TestUser, done: (err: any, id?: number) => void) => { + done(null, user.id); +}); +passport.serializeUser((user, done) => { + if (user.id > 0) { + done(null, user.id); + } else { + done(new Error('user ID is invalid')); + } +}); +passport.deserializeUser((id, done) => { + done(null, {id}); +}); +passport.deserializeUser((id, done) => { + const fetchUser = (id: number): Promise => { + return Promise.reject(new Error(`user not found: ${id}`)); + }; + + fetchUser(id) + .then((user) => done(null, user)) + .catch((err) => done(err)); +}); passport.use(new TestStrategy()) .unuse('test')