| | |
| | | import com.tourguide.modules.order.mapper.TourOrderMapper; |
| | | import com.tourguide.modules.user.domain.ClientType; |
| | | import com.tourguide.modules.user.entity.GuideUser; |
| | | import com.tourguide.modules.user.mapper.GuideApplicationMapper; |
| | | import com.tourguide.modules.user.mapper.GuideUserMapper; |
| | | import com.tourguide.security.JwtTokenService; |
| | | import com.tourguide.security.TokenPayload; |
| | | import com.tourguide.security.TokenSessionService; |
| | | import org.junit.jupiter.api.BeforeEach; |
| | | import org.junit.jupiter.api.Test; |
| | | import org.mockito.ArgumentCaptor; |
| | | |
| | | import static org.assertj.core.api.Assertions.assertThat; |
| | | import static org.assertj.core.api.Assertions.assertThatThrownBy; |
| | | import static org.mockito.ArgumentMatchers.any; |
| | | import static org.mockito.ArgumentMatchers.eq; |
| | | import static org.mockito.Mockito.mock; |
| | | import static org.mockito.Mockito.never; |
| | | import static org.mockito.Mockito.verify; |
| | |
| | | |
| | | class GuideAccountServiceTest { |
| | | private GuideUserMapper guideUserMapper; |
| | | private GuideApplicationMapper guideApplicationMapper; |
| | | private TourOrderMapper tourOrderMapper; |
| | | private TokenSessionService tokenSessionService; |
| | | private GuideAccountService accountService; |
| | |
| | | @BeforeEach |
| | | void setUp() { |
| | | guideUserMapper = mock(GuideUserMapper.class); |
| | | guideApplicationMapper = mock(GuideApplicationMapper.class); |
| | | tourOrderMapper = mock(TourOrderMapper.class); |
| | | JwtTokenService jwtTokenService = mock(JwtTokenService.class); |
| | | tokenSessionService = mock(TokenSessionService.class); |
| | | accountService = new GuideAccountService( |
| | | guideUserMapper, tourOrderMapper, jwtTokenService, tokenSessionService); |
| | | guideUserMapper, guideApplicationMapper, tourOrderMapper, jwtTokenService, tokenSessionService); |
| | | payload = new TokenPayload(8L, "guide_user", "GUIDE_USER", ClientType.GUIDE, "token-id"); |
| | | when(jwtTokenService.parse("guide-token")).thenReturn(payload); |
| | | } |
| | |
| | | .isInstanceOf(BusinessException.class) |
| | | .hasMessage("存在未完成订单,暂时无法注销账号"); |
| | | |
| | | verify(guideUserMapper, never()).updateById(any()); |
| | | verify(guideUserMapper, never()).cancelAccount(any(), any()); |
| | | verify(tokenSessionService, never()).remove(payload); |
| | | } |
| | | |
| | |
| | | void shouldMarkGuideCancelledAndRemoveCurrentSession() { |
| | | GuideUser user = new GuideUser(); |
| | | user.setId(8L); |
| | | user.setUsername("13800138000"); |
| | | user.setMobile("13800138000"); |
| | | user.setCertificateNo("CERT-8"); |
| | | user.setIdCardNo("11010519491231002X"); |
| | | user.setIdCardFrontUrl("/id-card-front.jpg"); |
| | | user.setIdCardBackUrl("/id-card-back.jpg"); |
| | | user.setStatus(GuideUserService.STATUS_ENABLED); |
| | | user.setAutoDisableWhitelisted(1); |
| | | when(tourOrderMapper.selectCount(any())).thenReturn(0L); |
| | |
| | | |
| | | accountService.cancel(8L, "guide-token"); |
| | | |
| | | ArgumentCaptor<GuideUser> userCaptor = ArgumentCaptor.forClass(GuideUser.class); |
| | | verify(guideUserMapper).updateById(userCaptor.capture()); |
| | | assertThat(userCaptor.getValue().getStatus()).isEqualTo(GuideUserService.STATUS_CANCELLED); |
| | | assertThat(userCaptor.getValue().getAutoDisableWhitelisted()).isZero(); |
| | | verify(guideUserMapper).cancelAccount(eq(8L), org.mockito.ArgumentMatchers.argThat( |
| | | username -> username.startsWith("deleted_") && username.length() == 32)); |
| | | verify(guideApplicationMapper).clearIdentityByIdCard("11010519491231002X"); |
| | | verify(tokenSessionService).remove(payload); |
| | | } |
| | | } |