Skip to content

Commit efaf34b

Browse files
committed
modify : userService 테스트 파일 작성(임시)
1 parent ead0de3 commit efaf34b

File tree

1 file changed

+75
-28
lines changed

1 file changed

+75
-28
lines changed

src/__test__/services/user.service.test.ts

+75-28
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ describe('UserService 테스트', () => {
1010
let userRepository: UserRepository;
1111

1212
beforeEach(() => {
13-
// userRepository 모킹
1413
userRepository = new UserRepository(pool);
1514
userService = new UserService(userRepository);
15+
1616
jest.spyOn(userService, 'findByVelogUUID').mockResolvedValue({
1717
id: 1,
1818
velog_uuid: '1',
@@ -39,43 +39,90 @@ describe('UserService 테스트', () => {
3939
updated_at: new Date(),
4040
});
4141
});
42+
43+
jest.spyOn(userService as any, 'encryptTokens').mockReturnValue({
44+
encryptedAccessToken: 'encryptedAccessToken',
45+
encryptedRefreshToken: 'encryptedRefreshToken',
46+
});
47+
48+
// userRepository의 createUser모킹하기
49+
jest.spyOn(userRepository, 'createUser').mockImplementation(() => {});
50+
});
51+
52+
test('handleUserTokensByVelogUUID - 기존 사용자 토큰 업데이트', async () => {
53+
// 사용자가 존재하는 경우 테스트
54+
const mockUserData: UserWithTokenDto = {
55+
id: '1',
56+
57+
accessToken: 'accessToken',
58+
refreshToken: 'refreshToken',
59+
};
60+
61+
const result = await userService.handleUserTokensByVelogUUID(mockUserData);
62+
63+
expect(result).toBeDefined();
64+
expect(userService.findByVelogUUID).toHaveBeenCalledWith('1');
65+
expect((userService as any).encryptTokens).toHaveBeenCalled();
66+
expect(userRepository.updateTokens).toHaveBeenCalledWith('1', 'encryptedAccessToken', 'encryptedRefreshToken');
67+
});
68+
69+
test('handleUserTokensByVelogUUID - 새 사용자 생성', async () => {
70+
// findByVelogUUID가 null 반환하도록 재설정
71+
jest.spyOn(userService, 'findByVelogUUID').mockResolvedValueOnce(null);
72+
73+
const mockUserData: UserWithTokenDto = {
74+
id: '1',
75+
76+
accessToken: 'accessToken',
77+
refreshToken: 'refreshToken',
78+
};
79+
80+
const result = await userService.handleUserTokensByVelogUUID(mockUserData);
81+
82+
expect(result).toBeDefined();
83+
expect(userService.findByVelogUUID).toHaveBeenCalledWith('1');
84+
expect(userService.createUser).toHaveBeenCalledWith(mockUserData);
85+
expect((userService as any).encryptTokens).toHaveBeenCalled();
86+
expect(userRepository.updateTokens).toHaveBeenCalled();
4287
});
4388

44-
test('handleUserTokensByVelogUUID 메서드 테스트', async () => {
89+
test('handleUserTokensByVelogUUID - 에러 처리', async () => {
90+
jest.spyOn(userService, 'findByVelogUUID').mockRejectedValueOnce(new Error('DB 에러'));
91+
4592
const mockUserData: UserWithTokenDto = {
4693
id: '1',
4794
4895
accessToken: 'accessToken',
4996
refreshToken: 'refreshToken',
5097
};
5198

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,
99+
await expect(userService.handleUserTokensByVelogUUID(mockUserData)).rejects.toThrow();
100+
});
101+
102+
test('findSampleUser 메서드 테스트', async () => {
103+
jest.spyOn(userRepository, 'findSampleUser').mockResolvedValue({
104+
id: 1,
105+
velog_uuid: '1',
106+
access_token: 'encryptedAccessToken',
107+
refresh_token: 'encryptedRefreshToken',
108+
group_id: 1,
109+
110+
is_active: true,
111+
created_at: new Date(),
112+
updated_at: new Date(),
113+
});
114+
115+
jest.spyOn(userService as any, 'decryptTokens').mockReturnValue({
116+
decryptedAccessToken: 'decryptedAccessToken',
117+
decryptedRefreshToken: 'decryptedRefreshToken',
76118
});
77119

78-
expect(result?.access_token).toBe(encryptedAccessToken);
79-
expect(result?.refresh_token).toBe(encryptedRefreshToken);
120+
const result = await userService.findSampleUser();
121+
122+
expect(result).toBeDefined();
123+
expect(result.decryptedAccessToken).toBe('decryptedAccessToken');
124+
expect(result.decryptedRefreshToken).toBe('decryptedRefreshToken');
125+
expect(userRepository.findSampleUser).toHaveBeenCalled();
126+
expect((userService as any).decryptTokens).toHaveBeenCalled();
80127
});
81128
});

0 commit comments

Comments
 (0)