@@ -2,7 +2,8 @@ import { addHeaders } from '../../../auth/authentication/mock';
2
2
3
3
// the mock for this class should be below all other mock imports
4
4
import {
5
- mockKeystoreCreate , mockUserFindByEmail , USER_EMAIL , USER_PASSWORD
5
+ mockKeystoreCreate , mockUserFindByEmail , createTokensSpy ,
6
+ USER_EMAIL , USER_PASSWORD
6
7
} from './mock' ;
7
8
8
9
import supertest from 'supertest' ;
@@ -13,14 +14,18 @@ describe('Login Route', () => {
13
14
const endpoint = '/v1/login/basic' ;
14
15
const request = supertest ( app ) ;
15
16
16
- beforeAll ( ( ) => {
17
+ beforeEach ( ( ) => {
17
18
mockKeystoreCreate . mockClear ( ) ;
18
19
mockUserFindByEmail . mockClear ( ) ;
20
+ createTokensSpy . mockClear ( ) ;
19
21
} ) ;
20
22
21
23
it ( 'Should throw error when empty body is sent' , async ( ) => {
22
24
const response = await addHeaders ( request . post ( endpoint ) ) ;
23
25
expect ( response . status ) . toBe ( 400 ) ;
26
+ expect ( mockUserFindByEmail ) . toBeCalledTimes ( 0 ) ;
27
+ expect ( mockKeystoreCreate ) . toBeCalledTimes ( 0 ) ;
28
+ expect ( createTokensSpy ) . toBeCalledTimes ( 0 ) ;
24
29
} ) ;
25
30
26
31
it ( 'Should throw error when email is only sent' , async ( ) => {
@@ -29,6 +34,9 @@ describe('Login Route', () => {
29
34
) ;
30
35
expect ( response . status ) . toBe ( 400 ) ;
31
36
expect ( response . body . message ) . toMatch ( / p a s s w o r d / ) ;
37
+ expect ( mockUserFindByEmail ) . toBeCalledTimes ( 0 ) ;
38
+ expect ( mockKeystoreCreate ) . toBeCalledTimes ( 0 ) ;
39
+ expect ( createTokensSpy ) . toBeCalledTimes ( 0 ) ;
32
40
} ) ;
33
41
34
42
it ( 'Should throw error when password is only sent' , async ( ) => {
@@ -37,6 +45,9 @@ describe('Login Route', () => {
37
45
) ;
38
46
expect ( response . status ) . toBe ( 400 ) ;
39
47
expect ( response . body . message ) . toMatch ( / e m a i l / ) ;
48
+ expect ( mockUserFindByEmail ) . toBeCalledTimes ( 0 ) ;
49
+ expect ( mockKeystoreCreate ) . toBeCalledTimes ( 0 ) ;
50
+ expect ( createTokensSpy ) . toBeCalledTimes ( 0 ) ;
40
51
} ) ;
41
52
42
53
it ( 'Should throw error when email is not valid format' , async ( ) => {
@@ -45,6 +56,9 @@ describe('Login Route', () => {
45
56
) ;
46
57
expect ( response . status ) . toBe ( 400 ) ;
47
58
expect ( response . body . message ) . toMatch ( / v a l i d e m a i l / ) ;
59
+ expect ( mockUserFindByEmail ) . toBeCalledTimes ( 0 ) ;
60
+ expect ( mockKeystoreCreate ) . toBeCalledTimes ( 0 ) ;
61
+ expect ( createTokensSpy ) . toBeCalledTimes ( 0 ) ;
48
62
} ) ;
49
63
50
64
it ( 'Should throw error when password is not valid format' , async ( ) => {
@@ -56,6 +70,9 @@ describe('Login Route', () => {
56
70
expect ( response . status ) . toBe ( 400 ) ;
57
71
expect ( response . body . message ) . toMatch ( / p a s s w o r d l e n g t h / ) ;
58
72
expect ( response . body . message ) . toMatch ( / 6 c h a r / ) ;
73
+ expect ( mockUserFindByEmail ) . toBeCalledTimes ( 0 ) ;
74
+ expect ( mockKeystoreCreate ) . toBeCalledTimes ( 0 ) ;
75
+ expect ( createTokensSpy ) . toBeCalledTimes ( 0 ) ;
59
76
} ) ;
60
77
61
78
it ( 'Should throw error when user not registered for email' , async ( ) => {
@@ -66,6 +83,9 @@ describe('Login Route', () => {
66
83
} ) ) ;
67
84
expect ( response . status ) . toBe ( 400 ) ;
68
85
expect ( response . body . message ) . toMatch ( / n o t r e g i s t e r e d / ) ;
86
+ expect ( mockUserFindByEmail ) . toBeCalledTimes ( 1 ) ;
87
+ expect ( mockKeystoreCreate ) . toBeCalledTimes ( 0 ) ;
88
+ expect ( createTokensSpy ) . toBeCalledTimes ( 0 ) ;
69
89
} ) ;
70
90
71
91
it ( 'Should throw error for wrong password' , async ( ) => {
@@ -76,6 +96,9 @@ describe('Login Route', () => {
76
96
} ) ) ;
77
97
expect ( response . status ) . toBe ( 401 ) ;
78
98
expect ( response . body . message ) . toMatch ( / a u t h e n t i c a t i o n f a i l u r e / i) ;
99
+ expect ( mockUserFindByEmail ) . toBeCalledTimes ( 1 ) ;
100
+ expect ( mockKeystoreCreate ) . toBeCalledTimes ( 0 ) ;
101
+ expect ( createTokensSpy ) . toBeCalledTimes ( 0 ) ;
79
102
} ) ;
80
103
81
104
it ( 'Should send success response for correct credentials' , async ( ) => {
@@ -96,5 +119,9 @@ describe('Login Route', () => {
96
119
expect ( response . body . data . tokens ) . toBeDefined ( ) ;
97
120
expect ( response . body . data . tokens ) . toHaveProperty ( 'accessToken' ) ;
98
121
expect ( response . body . data . tokens ) . toHaveProperty ( 'refreshToken' ) ;
122
+
123
+ expect ( mockUserFindByEmail ) . toBeCalledTimes ( 1 ) ;
124
+ expect ( mockKeystoreCreate ) . toBeCalledTimes ( 1 ) ;
125
+ expect ( createTokensSpy ) . toBeCalledTimes ( 1 ) ;
99
126
} ) ;
100
127
} ) ;
0 commit comments