package cn.iocoder.yudao.module.ums.service.member;
|
|
import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest;
|
import cn.iocoder.yudao.module.system.service.auth.WxcpPasswordSetupGrant;
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
import cn.iocoder.yudao.module.ums.dal.dataobject.member.UmsMemberDO;
|
import cn.iocoder.yudao.module.ums.dal.mysql.member.UmsMemberMapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
import org.junit.jupiter.api.Test;
|
import org.mockito.InjectMocks;
|
import org.mockito.Mock;
|
import static org.junit.jupiter.api.Assertions.*;
|
import static org.mockito.ArgumentMatchers.*;
|
import static org.mockito.Mockito.*;
|
|
class WxcpInitialPasswordServiceTest extends BaseMockitoUnitTest {
|
@InjectMocks private WxcpInitialPasswordService service;
|
@Mock private UmsMemberMapper memberMapper;
|
@Mock private AdminUserService userService;
|
@Mock private WxcpPasswordSetupGrant grant;
|
|
@Test void rejectsSessionWithoutWxcpGrant() {
|
when(grant.valid("token", 1L)).thenReturn(false);
|
assertThrows(RuntimeException.class, () -> service.setPassword(1L, "token", "password1"));
|
verifyNoInteractions(memberMapper, userService);
|
}
|
|
@Test void rejectsAccountWithoutPendingSetup() {
|
when(grant.valid("token", 1L)).thenReturn(true);
|
when(memberMapper.selectByUserId(1L)).thenReturn(new UmsMemberDO().setPasswordSetupRequired(false));
|
assertThrows(RuntimeException.class, () -> service.setPassword(1L, "token", "password1"));
|
verifyNoInteractions(userService);
|
}
|
|
@Test void setsPasswordOnceAndReturnsOwnUsername() {
|
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), UmsMemberDO.class);
|
when(grant.valid("token", 1L)).thenReturn(true);
|
when(memberMapper.selectByUserId(1L)).thenReturn(new UmsMemberDO().setId(2L).setPasswordSetupRequired(true));
|
when(memberMapper.update(isNull(), any(Wrapper.class))).thenReturn(1);
|
when(userService.getUser(1L)).thenReturn(new AdminUserDO().setUsername("wx_example"));
|
assertEquals("wx_example", service.setPassword(1L, "token", "password1"));
|
verify(userService).updateUserPassword(1L, "password1");
|
verify(grant).revoke("token");
|
}
|
}
|