1- import type { Request , Response } from 'express' ;
1+ import type { NextFunction , Request , Response } from 'express' ;
22import jwt from 'jsonwebtoken' ;
33import { mock , mockDeep } from 'vitest-mock-extended' ;
44
@@ -11,49 +11,44 @@ import { AuthorizeTwitterService } from '../services/authorize-twitter-service';
1111import type { TwitterService } from '../services/twitter-service' ;
1212import { TwitterController } from './twitter-controller' ;
1313
14- const makeSut = ( ) => {
15- const mockLogger : Logger = mock < Logger > ( loggerMock ) ;
16- const twitterServiceMock = mock < TwitterService > ( {
17- getTwitterOAuthToken : vi . fn ( ) ,
18- getTwitterUser : vi . fn ( ) ,
19- } ) ;
20-
21- const authorizeTwitterService = mock < AuthorizeTwitterService > (
22- new AuthorizeTwitterService (
23- mockLogger ,
24- twitterServiceMock ,
25- accountRepositoryMock ,
26- tokenRepositoryMock
27- )
28- ) ;
29-
30- const authController = new TwitterController ( authorizeTwitterService ) ;
31-
32- const req = mockDeep < Request > ( ) ;
33- const res = {
34- json : vi . fn ( ) ,
35- send : vi . fn ( ) ,
36- status : vi . fn ( ) . mockReturnThis ( ) ,
37- } as unknown as Response ;
38- const next = vi . fn ( ) ;
39-
40- return {
41- authController,
42- authorizeTwitterService,
43- mockLogger,
44- next,
45- req,
46- res,
47- twitterServiceMock,
48- } ;
49- } ;
50-
5114describe ( '[Controller] Twitter' , ( ) => {
15+ let mockLogger : Logger ;
16+ let twitterServiceMock : TwitterService ;
17+ let authorizeTwitterService : AuthorizeTwitterService ;
18+ let authController : TwitterController ;
19+ let req : Request ;
20+ let res : Response ;
21+ let next : NextFunction ;
22+
23+ beforeEach ( ( ) => {
24+ mockLogger = mock < Logger > ( loggerMock ) ;
25+
26+ twitterServiceMock = mock < TwitterService > ( {
27+ getTwitterOAuthToken : vi . fn ( ) ,
28+ getTwitterUser : vi . fn ( ) ,
29+ } ) ;
30+
31+ authorizeTwitterService = mock < AuthorizeTwitterService > (
32+ new AuthorizeTwitterService (
33+ mockLogger ,
34+ twitterServiceMock ,
35+ accountRepositoryMock ,
36+ tokenRepositoryMock
37+ )
38+ ) ;
39+
40+ authController = new TwitterController ( authorizeTwitterService ) ;
41+
42+ req = mockDeep < Request > ( ) ;
43+ res = {
44+ json : vi . fn ( ) ,
45+ send : vi . fn ( ) ,
46+ status : vi . fn ( ) . mockReturnThis ( ) ,
47+ } as unknown as Response ;
48+ next = vi . fn ( ) as unknown as NextFunction ;
49+ } ) ;
5250 describe ( 'callback' , ( ) => {
5351 it ( 'returns code' , async ( ) => {
54- const { authController, authorizeTwitterService, next, req, res } =
55- makeSut ( ) ;
56-
5752 const spyAuthorizeTwitter = vi
5853 . spyOn ( authorizeTwitterService , 'execute' )
5954 . mockReturnThis ( ) ;
@@ -71,7 +66,6 @@ describe('[Controller] Twitter', () => {
7166
7267 describe ( 'login' , ( ) => {
7368 it ( 'return URLs when the token is valid' , async ( ) => {
74- const { authController, next, req, res } = makeSut ( ) ;
7569 const mockPayload = {
7670 name : 'John Doe' ,
7771 userId : '12345' ,
@@ -90,8 +84,6 @@ describe('[Controller] Twitter', () => {
9084 } ) ;
9185
9286 it ( 'returns 401 when token is invalid' , ( ) => {
93- const { authController, next, req, res } = makeSut ( ) ;
94-
9587 req . headers . authorization = undefined ;
9688
9789 authController . login ( req , res , next ) ;
0 commit comments