@@ -34,6 +34,7 @@ import { OAuthProvidersEnum } from '../../users/enums/oauth-providers.enum';
3434import { UsersModule } from '../../users/users.module' ;
3535import { UsersService } from '../../users/users.service' ;
3636import { Oauth2Service } from '../oauth2.service' ;
37+ import { isJWT } from 'class-validator' ;
3738
3839describe ( 'Oauth2Service' , ( ) => {
3940 let module : TestingModule ,
@@ -121,14 +122,19 @@ describe('Oauth2Service', () => {
121122 it ( 'should create a new user' , async ( ) => {
122123 const email = faker . internet . email ( ) ;
123124 const name = faker . person . fullName ( ) ;
124- const code = await oauth2Service . callback (
125+ const result = await oauth2Service . callback (
125126 OAuthProvidersEnum . GOOGLE ,
126127 email ,
127128 name ,
128129 ) ;
129130
130- expect ( code ) . toBeDefined ( ) ;
131- expect ( code . length ) . toBe ( 22 ) ;
131+ expect ( result ) . toMatchObject ( {
132+ accessToken : expect . any ( String ) ,
133+ code : expect . any ( String ) ,
134+ expiresIn : expect . any ( Number ) ,
135+ } ) ;
136+ expect ( isJWT ( result . accessToken ) ) . toBe ( true ) ;
137+ expect ( result . code ) . toHaveLength ( 22 ) ;
132138
133139 const user = await usersService . findOneByEmail ( email ) ;
134140 expect ( user ) . toBeDefined ( ) ;
@@ -144,14 +150,19 @@ describe('Oauth2Service', () => {
144150 const email = faker . internet . email ( ) ;
145151 const name = faker . person . fullName ( ) ;
146152 await usersService . create ( OAuthProvidersEnum . GOOGLE , email , name ) ;
147- const code = await oauth2Service . callback (
153+ const result = await oauth2Service . callback (
148154 OAuthProvidersEnum . MICROSOFT ,
149155 email ,
150156 name ,
151157 ) ;
152158
153- expect ( code ) . toBeDefined ( ) ;
154- expect ( code . length ) . toBe ( 22 ) ;
159+ expect ( result ) . toMatchObject ( {
160+ accessToken : expect . any ( String ) ,
161+ code : expect . any ( String ) ,
162+ expiresIn : expect . any ( Number ) ,
163+ } ) ;
164+ expect ( isJWT ( result . accessToken ) ) . toBe ( true ) ;
165+ expect ( result . code ) . toHaveLength ( 22 ) ;
155166
156167 const user = await usersService . findOneByEmail ( email ) ;
157168 expect ( user ) . toBeDefined ( ) ;
@@ -166,15 +177,16 @@ describe('Oauth2Service', () => {
166177
167178 describe ( 'token' , ( ) => {
168179 it ( 'should return access and refresh tokens from callback code' , async ( ) => {
169- const email = faker . internet . email ( ) ;
180+ const email = faker . internet . email ( ) . toLowerCase ( ) ;
170181 const name = faker . person . fullName ( ) ;
171- const code = await oauth2Service . callback (
172- OAuthProvidersEnum . MICROSOFT ,
182+ const { code } = await oauth2Service . callback (
183+ OAuthProvidersEnum . GOOGLE ,
173184 email ,
174185 name ,
175186 ) ;
187+ const user = await usersService . findOneByEmail ( email ) ;
176188
177- const result = await oauth2Service . token ( code ) ;
189+ const result = await oauth2Service . token ( code , user . id ) ;
178190
179191 expect ( result ) . toMatchObject ( {
180192 user : expect . any ( UserEntity ) ,
@@ -184,11 +196,14 @@ describe('Oauth2Service', () => {
184196 } ) ;
185197
186198 it ( 'should throw an unauthorized exception for invalid callback code' , async ( ) => {
187- const code = '7IHq0AGB7FOL25kt8WejRz' ;
199+ const email = faker . internet . email ( ) . toLowerCase ( ) ;
200+ const name = faker . person . fullName ( ) ;
201+ await oauth2Service . callback ( OAuthProvidersEnum . MICROSOFT , email , name ) ;
202+ const user = await usersService . findOneByEmail ( email ) ;
188203
189- await expect ( oauth2Service . token ( code ) ) . rejects . toThrow (
190- new UnauthorizedException ( 'Code is invalid or expired' ) ,
191- ) ;
204+ await expect (
205+ oauth2Service . token ( '7IHq0AGB7FOL25kt8WejRz' , user . id ) ,
206+ ) . rejects . toThrow ( new UnauthorizedException ( ) ) ;
192207 } ) ;
193208 } ) ;
194209
0 commit comments