1
- import type { Request , Response } from 'express' ;
1
+ import type { NextFunction , Request , Response } from 'express' ;
2
2
import jwt from 'jsonwebtoken' ;
3
3
import { mock , mockDeep } from 'vitest-mock-extended' ;
4
4
@@ -11,49 +11,44 @@ import { AuthorizeTwitterService } from '../services/authorize-twitter-service';
11
11
import type { TwitterService } from '../services/twitter-service' ;
12
12
import { TwitterController } from './twitter-controller' ;
13
13
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
-
51
14
describe ( '[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
+ } ) ;
52
50
describe ( 'callback' , ( ) => {
53
51
it ( 'returns code' , async ( ) => {
54
- const { authController, authorizeTwitterService, next, req, res } =
55
- makeSut ( ) ;
56
-
57
52
const spyAuthorizeTwitter = vi
58
53
. spyOn ( authorizeTwitterService , 'execute' )
59
54
. mockReturnThis ( ) ;
@@ -71,7 +66,6 @@ describe('[Controller] Twitter', () => {
71
66
72
67
describe ( 'login' , ( ) => {
73
68
it ( 'return URLs when the token is valid' , async ( ) => {
74
- const { authController, next, req, res } = makeSut ( ) ;
75
69
const mockPayload = {
76
70
name : 'John Doe' ,
77
71
userId : '12345' ,
@@ -90,8 +84,6 @@ describe('[Controller] Twitter', () => {
90
84
} ) ;
91
85
92
86
it ( 'returns 401 when token is invalid' , ( ) => {
93
- const { authController, next, req, res } = makeSut ( ) ;
94
-
95
87
req . headers . authorization = undefined ;
96
88
97
89
authController . login ( req , res , next ) ;
0 commit comments