test: 添加邮件服务测试类
- 新增EmailServiceTest测试类 - 测试验证码发送功能 - 测试连续发送验证码覆盖逻辑 - 新增application-test.yml测试配置 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
package cn.meowrain.aioj.backend.userservice.service;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* 邮件服务测试类
|
||||
*/
|
||||
@Slf4j
|
||||
@SpringBootTest
|
||||
@ActiveProfiles("test")
|
||||
class EmailServiceTest {
|
||||
|
||||
@Autowired
|
||||
private EmailService emailService;
|
||||
|
||||
@Autowired
|
||||
private StringRedisTemplate redisTemplate;
|
||||
|
||||
/**
|
||||
* 测试发送验证码邮件
|
||||
* 注意:运行此测试前,请将下面的邮箱地址替换为你自己的邮箱
|
||||
*/
|
||||
@Test
|
||||
void testSendVerifyCode() {
|
||||
// TODO: 替换成你的真实邮箱地址
|
||||
String testEmail = "meowrain@126.com";
|
||||
|
||||
log.info("开始发送验证码到邮箱: {}", testEmail);
|
||||
|
||||
// 发送验证码
|
||||
assertDoesNotThrow(() -> emailService.sendVerifyCode(testEmail));
|
||||
|
||||
log.info("验证码邮件发送成功,请检查邮箱(含垃圾邮件文件夹)");
|
||||
|
||||
// 验证 Redis 中是否存储了验证码
|
||||
String redisKey = "email:code:" + testEmail;
|
||||
String code = redisTemplate.opsForValue().get(redisKey);
|
||||
|
||||
assertNotNull(code, "验证码应该存储在 Redis 中");
|
||||
log.info("Redis 中存储的验证码: {}", code);
|
||||
|
||||
// 提示用户
|
||||
log.info("===============================================");
|
||||
log.info("请登录邮箱查看验证码: {}", testEmail);
|
||||
log.info("验证码: {}", code);
|
||||
log.info("===============================================");
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试连续发送验证码(应该覆盖之前的验证码)
|
||||
*/
|
||||
@Test
|
||||
void testSendMultipleCodes() {
|
||||
String testEmail = "your-email@qq.com";
|
||||
|
||||
log.info("测试连续发送两次验证码");
|
||||
|
||||
// 第一次发送
|
||||
emailService.sendVerifyCode(testEmail);
|
||||
String firstCode = redisTemplate.opsForValue().get("email:code:" + testEmail);
|
||||
log.info("第一次验证码: {}", firstCode);
|
||||
|
||||
// 等待 1 秒
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
}
|
||||
catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// 第二次发送
|
||||
emailService.sendVerifyCode(testEmail);
|
||||
String secondCode = redisTemplate.opsForValue().get("email:code:" + testEmail);
|
||||
log.info("第二次验证码: {}", secondCode);
|
||||
|
||||
assertNotNull(secondCode, "第二次发送后应该有新的验证码");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
spring:
|
||||
mail:
|
||||
host: smtp.qq.com
|
||||
port: 465
|
||||
username: 2705356115@qq.com
|
||||
password: yohcndfrlxwcdfed
|
||||
default-encoding: UTF-8
|
||||
protocol: smtp
|
||||
properties:
|
||||
mail:
|
||||
smtp:
|
||||
ssl:
|
||||
enable: true
|
||||
auth: true
|
||||
starttls:
|
||||
enable: true
|
||||
data:
|
||||
redis:
|
||||
host: 10.0.0.10
|
||||
port: 6379
|
||||
password: 123456
|
||||
datasource:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://10.0.0.10/aioj_dev
|
||||
username: root
|
||||
password: root
|
||||
Reference in New Issue
Block a user