11import { Request as MockRequest } from 'jest-express/lib/request' ;
22import { Response as MockResponse } from 'jest-express/lib/response' ;
33import { NextFunction as MockNext } from 'jest-express/lib/next' ;
4+ import { Request , Response } from 'express' ;
45import { User } from '../../../../models/user' ;
56import {
67 resetPasswordInitiate ,
@@ -11,7 +12,10 @@ import { generateToken } from '../../helpers';
1112import { createMockUser } from '../../__testUtils__' ;
1213
1314import { mailerService } from '../../../../utils/mail' ;
14- import { UserDocument } from '../../../../types' ;
15+ import {
16+ ResetOrUpdatePasswordRequestParams ,
17+ UserDocument
18+ } from '../../../../types' ;
1519
1620jest . mock ( '../../../../models/user' ) ;
1721jest . mock ( '../../../../utils/mail' ) ;
@@ -21,8 +25,8 @@ jest.mock('../../helpers', () => ({
2125} ) ) ;
2226
2327describe ( 'user.controller > auth management > password management' , ( ) => {
24- let request : any ;
25- let response : any ;
28+ let request : MockRequest ;
29+ let response : MockResponse ;
2630 let next : MockNext ;
2731 let mockToken : string ;
2832 let mockUser : Partial < UserDocument > ;
@@ -52,7 +56,11 @@ describe('user.controller > auth management > password management', () => {
5256 it ( 'calls User.findByEmail with the correct email' , async ( ) => {
5357 User . findByEmail = jest . fn ( ) . mockResolvedValue ( { } ) ;
5458 request . body = { email :
'[email protected] ' } ; 55- await resetPasswordInitiate ( request , response , next ) ;
59+ await resetPasswordInitiate (
60+ ( request as unknown ) as Request ,
61+ ( response as unknown ) as Response ,
62+ next
63+ ) ;
5664
5765 expect ( User . findByEmail ) . toHaveBeenCalledWith ( '[email protected] ' ) ; 5866 } ) ;
@@ -71,7 +79,11 @@ describe('user.controller > auth management > password management', () => {
7179 request . body = { email :
'[email protected] ' } ; 7280 request . headers . host = 'localhost:3000' ;
7381
74- await resetPasswordInitiate ( request , response , next ) ;
82+ await resetPasswordInitiate (
83+ ( request as unknown ) as Request ,
84+ ( response as unknown ) as Response ,
85+ next
86+ ) ;
7587 } ) ;
7688 it ( 'sets a resetPasswordToken with an expiry of 1h to the user' , ( ) => {
7789 expect ( mockUser . resetPasswordToken ) . toBe ( mockToken ) ;
@@ -107,12 +119,20 @@ describe('user.controller > auth management > password management', () => {
107119 request . headers . host = 'localhost:3000' ;
108120 } ) ;
109121 it ( 'does not send the reset password email' , async ( ) => {
110- await resetPasswordInitiate ( request , response , next ) ;
122+ await resetPasswordInitiate (
123+ ( request as unknown ) as Request ,
124+ ( response as unknown ) as Response ,
125+ next
126+ ) ;
111127
112128 expect ( mailerService . send ) . not . toHaveBeenCalledWith ( ) ;
113129 } ) ;
114130 it ( 'returns a success message that does not indicate if the user exists, for security purposes' , async ( ) => {
115- await resetPasswordInitiate ( request , response , next ) ;
131+ await resetPasswordInitiate (
132+ ( request as unknown ) as Request ,
133+ ( response as unknown ) as Response ,
134+ next
135+ ) ;
116136
117137 expect ( response . json ) . toHaveBeenCalledWith ( {
118138 success : true ,
@@ -136,7 +156,11 @@ describe('user.controller > auth management > password management', () => {
136156 request . body = { email :
'[email protected] ' } ; 137157 request . headers . host = 'localhost:3000' ;
138158
139- await resetPasswordInitiate ( request , response , next ) ;
159+ await resetPasswordInitiate (
160+ ( request as unknown ) as Request ,
161+ ( response as unknown ) as Response ,
162+ next
163+ ) ;
140164
141165 expect ( response . json ) . toHaveBeenCalledWith ( {
142166 success : false
@@ -155,7 +179,11 @@ describe('user.controller > auth management > password management', () => {
155179
156180 request . params = { token : 'some-token' } ;
157181
158- await validateResetPasswordToken ( request , response , next ) ;
182+ await validateResetPasswordToken (
183+ ( request as unknown ) as Request < ResetOrUpdatePasswordRequestParams > ,
184+ ( response as unknown ) as Response ,
185+ next
186+ ) ;
159187
160188 expect ( User . findOne ) . toHaveBeenCalledWith ( {
161189 resetPasswordToken : 'some-token' ,
@@ -171,7 +199,11 @@ describe('user.controller > auth management > password management', () => {
171199
172200 request . params = { token : 'invalid-token' } ;
173201
174- await validateResetPasswordToken ( request , response , next ) ;
202+ await validateResetPasswordToken (
203+ ( request as unknown ) as Request < ResetOrUpdatePasswordRequestParams > ,
204+ ( response as unknown ) as Response ,
205+ next
206+ ) ;
175207 } ) ;
176208 it ( 'returns a 401' , ( ) => {
177209 expect ( response . status ) . toHaveBeenCalledWith ( 401 ) ;
@@ -198,7 +230,11 @@ describe('user.controller > auth management > password management', () => {
198230
199231 request . params = { token : 'valid-token' } ;
200232
201- await validateResetPasswordToken ( request , response , next ) ;
233+ await validateResetPasswordToken (
234+ ( request as unknown ) as Request < ResetOrUpdatePasswordRequestParams > ,
235+ ( response as unknown ) as Response ,
236+ next
237+ ) ;
202238 } ) ;
203239 it ( 'returns a success response' , ( ) => {
204240 expect ( response . json ) . toHaveBeenCalledWith ( { success : true } ) ;
@@ -217,7 +253,11 @@ describe('user.controller > auth management > password management', () => {
217253
218254 request . params = { token : 'some-token' } ;
219255
220- await updatePassword ( request , response , next ) ;
256+ await updatePassword (
257+ ( request as unknown ) as Request < ResetOrUpdatePasswordRequestParams > ,
258+ ( response as unknown ) as Response ,
259+ next
260+ ) ;
221261
222262 expect ( User . findOne ) . toHaveBeenCalledWith ( {
223263 resetPasswordToken : 'some-token' ,
@@ -233,7 +273,11 @@ describe('user.controller > auth management > password management', () => {
233273
234274 request . params = { token : 'invalid-token' } ;
235275
236- await updatePassword ( request , response , next ) ;
276+ await updatePassword (
277+ ( request as unknown ) as Request < ResetOrUpdatePasswordRequestParams > ,
278+ ( response as unknown ) as Response ,
279+ next
280+ ) ;
237281 } ) ;
238282 it ( 'returns a 401' , ( ) => {
239283 expect ( response . status ) . toHaveBeenCalledWith ( 401 ) ;
@@ -272,7 +316,11 @@ describe('user.controller > auth management > password management', () => {
272316 cb ( null ) ;
273317 } ) ;
274318
275- await updatePassword ( request , response , next ) ;
319+ await updatePassword (
320+ ( request as unknown ) as Request < ResetOrUpdatePasswordRequestParams > ,
321+ ( response as unknown ) as Response ,
322+ next
323+ ) ;
276324 } ) ;
277325 it ( 'calls user.save with the updated password and removes the reset password token' , ( ) => {
278326 expect ( mockUser . password ) . toBe ( 'newpassword' ) ;
0 commit comments