From 8b81df3a7638e768b640b7935d9da52b77cd7649 Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期五, 24 四月 2026 20:22:47 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/tcm-training
---
tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppSmsCodeServiceTest.java | 42 ++++++++++++++++++++++++++++++++++++++++++
1 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppSmsCodeServiceTest.java b/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppSmsCodeServiceTest.java
index 1a035ef..e489563 100644
--- a/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppSmsCodeServiceTest.java
+++ b/tcm-training-admin-backend/src/test/java/com/tcm/training/admin/app/auth/service/AppSmsCodeServiceTest.java
@@ -84,6 +84,48 @@
}
/**
+ * 验证码校验成功后不应删除缓存,保证 5 分钟有效期内可重复提交。
+ */
+ @Test
+ void validateLoginCodeShouldKeepCachedCodeAfterSuccess() {
+ when(stringRedisTemplate.opsForValue()).thenReturn(valueOperations);
+ when(valueOperations.get("app:sms:login:13800138000")).thenReturn("123456");
+
+ assertDoesNotThrow(() -> appSmsCodeService.validateLoginCode("13800138000", "123456"));
+
+ verify(stringRedisTemplate, never()).delete(anyString());
+ }
+
+ /**
+ * 同一验证码在缓存 TTL 内多次提交都应校验通过。
+ */
+ @Test
+ void validateLoginCodeShouldAllowRepeatedSubmissionsWithinTtl() {
+ when(stringRedisTemplate.opsForValue()).thenReturn(valueOperations);
+ when(valueOperations.get("app:sms:login:13800138000")).thenReturn("123456");
+
+ assertDoesNotThrow(() -> appSmsCodeService.validateLoginCode("13800138000", "123456"));
+ assertDoesNotThrow(() -> appSmsCodeService.validateLoginCode("13800138000", "123456"));
+
+ verify(stringRedisTemplate, never()).delete(anyString());
+ }
+
+ /**
+ * 缓存中存在验证码但输入不一致时仍应提示验证码错误。
+ */
+ @Test
+ void validateLoginCodeShouldRejectMismatchedCode() {
+ when(stringRedisTemplate.opsForValue()).thenReturn(valueOperations);
+ when(valueOperations.get("app:sms:login:13800138000")).thenReturn("123456");
+
+ IllegalArgumentException exception = assertThrows(IllegalArgumentException.class,
+ () -> appSmsCodeService.validateLoginCode("13800138000", "654321"));
+
+ assertEquals("验证码错误", exception.getMessage());
+ verify(stringRedisTemplate, never()).delete(anyString());
+ }
+
+ /**
* 短信发送成功后才应写入验证码缓存。
*/
@Test
--
Gitblit v1.7.1