Skip to content

Commit ead0de3

Browse files
committed
feature : userService 테스트 파일 작성성
1 parent ff469ab commit ead0de3

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import pool from '@/configs/db.config';
2+
import { UserRepository } from '@/repositories/user.repository';
3+
import { UserService } from '@/services/user.service';
4+
import { UserWithTokenDto } from '@/types';
5+
import { mock } from 'node:test';
6+
import 'reflect-metadata';
7+
8+
describe('UserService 테스트', () => {
9+
let userService: UserService;
10+
let userRepository: UserRepository;
11+
12+
beforeEach(() => {
13+
// userRepository 모킹
14+
userRepository = new UserRepository(pool);
15+
userService = new UserService(userRepository);
16+
jest.spyOn(userService, 'findByVelogUUID').mockResolvedValue({
17+
id: 1,
18+
velog_uuid: '1',
19+
access_token: 'accessToken',
20+
refresh_token: 'refreshToken',
21+
group_id: 1,
22+
23+
is_active: true,
24+
created_at: new Date(),
25+
updated_at: new Date(),
26+
});
27+
jest
28+
.spyOn(userRepository, 'updateTokens')
29+
.mockImplementation((uuid: string, encryptedAccessToken: string, encryptedRefreshToken: string) => {
30+
return Promise.resolve({
31+
id: 1,
32+
velog_uuid: uuid,
33+
access_token: encryptedAccessToken,
34+
refresh_token: encryptedRefreshToken,
35+
group_id: 1,
36+
37+
is_active: true,
38+
created_at: new Date(),
39+
updated_at: new Date(),
40+
});
41+
});
42+
});
43+
44+
test('handleUserTokensByVelogUUID 메서드 테스트', async () => {
45+
const mockUserData: UserWithTokenDto = {
46+
id: '1',
47+
48+
accessToken: 'accessToken',
49+
refreshToken: 'refreshToken',
50+
};
51+
52+
const { id, email, accessToken, refreshToken } = mockUserData;
53+
54+
let user = await userService.findByVelogUUID(id);
55+
if (!user) {
56+
user = await userService.createUser(mockUserData);
57+
}
58+
59+
expect(user).toBeDefined();
60+
expect(user?.id).toBe(Number(id));
61+
expect(user?.email).toBe(email);
62+
expect(user?.access_token).toBe(accessToken);
63+
expect(user?.refresh_token).toBe(refreshToken);
64+
65+
const { encryptedAccessToken, encryptedRefreshToken } = (userService as any).encryptTokens(
66+
user.group_id,
67+
accessToken,
68+
refreshToken,
69+
);
70+
71+
const result = await userService.updateUserTokens({
72+
id,
73+
email,
74+
accessToken: encryptedAccessToken,
75+
refreshToken: encryptedRefreshToken,
76+
});
77+
78+
expect(result?.access_token).toBe(encryptedAccessToken);
79+
expect(result?.refresh_token).toBe(encryptedRefreshToken);
80+
});
81+
});

0 commit comments

Comments
 (0)