blob: f04fbc5aa0a26ae766b1880b25351c730128dd45 [file] [log] [blame]
223010718e412ad2025-04-24 22:24:51 +08001package com.example.g8backend.service;
2
3import com.example.g8backend.entity.User;
4import com.example.g8backend.mapper.UserMapper;
5import com.example.g8backend.service.impl.UserSecurityServiceImpl;
6import org.junit.jupiter.api.BeforeEach;
7import org.junit.jupiter.api.Test;
8import org.mockito.InjectMocks;
9import org.mockito.Mock;
10import org.mockito.MockitoAnnotations;
11import org.springframework.security.crypto.password.PasswordEncoder;
12
13import static org.junit.jupiter.api.Assertions.*;
14import static org.mockito.Mockito.*;
15
16public class UserSecurityServiceImplTest {
17
18 @Mock
19 private UserMapper userMapper;
20 @Mock
21 private PasswordEncoder passwordEncoder;
22
23 @InjectMocks
24 private UserSecurityServiceImpl userSecurityService;
25
26 private User user;
27
28 @BeforeEach
29 void setUp() {
30 MockitoAnnotations.openMocks(this);
31 user = new User();
32 user.setUserId(1L);
33 user.setPassword("encodedOld");
34 }
35
36 @Test
37 void changePassword_Success() {
38 when(userMapper.selectById(1L)).thenReturn(user);
39 when(passwordEncoder.matches("old", "encodedOld")).thenReturn(true);
40 when(passwordEncoder.encode("new")).thenReturn("encodedNew");
41 when(userMapper.updateById(any(User.class))).thenReturn(1);
42
43 boolean result = userSecurityService.changePassword(1L, "old", "new");
44 assertTrue(result);
45 verify(userMapper).updateById(any(User.class));
46 }
47
48 @Test
49 void changePassword_WrongOldPassword() {
50 when(userMapper.selectById(1L)).thenReturn(user);
51 when(passwordEncoder.matches("wrong", "encodedOld")).thenReturn(false);
52
53 assertThrows(RuntimeException.class, () -> userSecurityService.changePassword(1L, "wrong", "new"));
54 }
55}