package com.rongyichuang.auth;
|
|
import com.rongyichuang.auth.api.AuthGraphqlApi;
|
import com.rongyichuang.auth.dto.WxLoginRequest;
|
import com.rongyichuang.auth.dto.WxLoginResponse;
|
import com.rongyichuang.auth.entity.WxLoginRecord;
|
import com.rongyichuang.auth.repository.WxLoginRecordRepository;
|
import com.rongyichuang.user.entity.User;
|
import com.rongyichuang.user.repository.UserRepository;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Optional;
|
|
@SpringBootTest
|
@Transactional
|
public class WxLoginTest {
|
|
@Autowired
|
private AuthGraphqlApi authGraphqlApi;
|
|
@Autowired
|
private UserRepository userRepository;
|
|
@Autowired
|
private WxLoginRecordRepository wxLoginRecordRepository;
|
|
@Test
|
public void testWxLoginNewUser() {
|
try {
|
System.out.println("=== 测试微信登录(新用户) ===");
|
|
WxLoginRequest request = new WxLoginRequest();
|
request.setWxOpenid("test_openid_001");
|
request.setWxUnionid("test_unionid_001");
|
request.setLoginIp("192.168.1.100");
|
request.setDeviceInfo("iPhone 13");
|
request.setSessionKey("test_session_key");
|
request.setPhoneAuthorized(false);
|
|
System.out.println("微信登录请求: openid=" + request.getWxOpenid() + ", unionid=" + request.getWxUnionid());
|
|
WxLoginResponse response = authGraphqlApi.wxLogin(request);
|
|
System.out.println("微信登录成功!");
|
System.out.println("Token: " + response.getToken());
|
System.out.println("用户ID: " + response.getUserInfo().getUserId());
|
System.out.println("用户名: " + response.getUserInfo().getName());
|
System.out.println("用户类型: " + response.getUserInfo().getUserType());
|
System.out.println("是否新用户: " + response.getIsNewUser());
|
System.out.println("登录记录ID: " + response.getLoginRecordId());
|
|
// 验证用户是否创建
|
Optional<User> userOpt = userRepository.findByWxOpenid(request.getWxOpenid());
|
if (userOpt.isPresent()) {
|
System.out.println("用户创建成功,ID: " + userOpt.get().getId());
|
}
|
|
// 验证登录记录是否创建
|
Optional<WxLoginRecord> recordOpt = wxLoginRecordRepository.findById(response.getLoginRecordId());
|
if (recordOpt.isPresent()) {
|
WxLoginRecord record = recordOpt.get();
|
System.out.println("登录记录创建成功,openid: " + record.getWxOpenid() + ", 登录时间: " + record.getLoginTime());
|
}
|
|
} catch (Exception e) {
|
System.err.println("微信登录失败: " + e.getMessage());
|
e.printStackTrace();
|
}
|
}
|
|
@Test
|
public void testWxLoginExistingUser() {
|
try {
|
System.out.println("=== 测试微信登录(已存在用户) ===");
|
|
// 先创建一个用户
|
User existingUser = new User();
|
existingUser.setWxOpenid("existing_openid_001");
|
existingUser.setWxUnionid("existing_unionid_001");
|
existingUser.setName("已存在的微信用户");
|
existingUser = userRepository.save(existingUser);
|
System.out.println("预先创建用户,ID: " + existingUser.getId());
|
|
WxLoginRequest request = new WxLoginRequest();
|
request.setWxOpenid("existing_openid_001");
|
request.setWxUnionid("existing_unionid_001");
|
request.setLoginIp("192.168.1.101");
|
request.setDeviceInfo("Android Phone");
|
request.setSessionKey("test_session_key_2");
|
request.setPhoneAuthorized(true);
|
request.setPhone("13800000001");
|
|
System.out.println("微信登录请求: openid=" + request.getWxOpenid());
|
|
WxLoginResponse response = authGraphqlApi.wxLogin(request);
|
|
System.out.println("微信登录成功!");
|
System.out.println("用户ID: " + response.getUserInfo().getUserId());
|
System.out.println("用户名: " + response.getUserInfo().getName());
|
System.out.println("是否新用户: " + response.getIsNewUser());
|
System.out.println("登录记录ID: " + response.getLoginRecordId());
|
|
// 验证登录记录
|
Optional<WxLoginRecord> recordOpt = wxLoginRecordRepository.findById(response.getLoginRecordId());
|
if (recordOpt.isPresent()) {
|
WxLoginRecord record = recordOpt.get();
|
System.out.println("登录记录: 手机号授权=" + record.getPhoneAuthorized() + ", 授权时间=" + record.getPhoneAuthTime());
|
}
|
|
} catch (Exception e) {
|
System.err.println("微信登录失败: " + e.getMessage());
|
e.printStackTrace();
|
}
|
}
|
}
|