diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 73bd0f5..fc8d4e0 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -8,7 +8,8 @@ spring.datasource.url=jdbc:mysql://122.152.201.90:9912/workflow?\ rewriteBatchedStatements=true&cachePrepStmts=true&\ prepStmtCacheSize=250&prepStmtCacheSqlLimit=2048&\ useServerPrepStmts=true&connectionTimeout=3000&\ - socketTimeout=60000&serverTimezone=GMT%2B8 + socketTimeout=60000&serverTimezone=GMT%2B8&\ + allowPublicKeyRetrieval=true&useSSL=false spring.datasource.username=root spring.datasource.password=ENC(lLJgIEE5YJuSKnOpFBC4NFL+iqZZK97573fvgC7hZ8u3S6o/TlK15WfjnKTPOrQO) spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver diff --git a/src/main/resources/email/test.html b/src/main/resources/templates/email/test.html similarity index 100% rename from src/main/resources/email/test.html rename to src/main/resources/templates/email/test.html diff --git a/src/main/resources/templates/welcome.html b/src/main/resources/templates/email/welcome.html similarity index 100% rename from src/main/resources/templates/welcome.html rename to src/main/resources/templates/email/welcome.html diff --git a/src/test/java/asia/yulinling/workflow/mapper/UserMapperTest.java b/src/test/java/asia/yulinling/workflow/mapper/UserMapperTest.java index 263403d..5474c87 100644 --- a/src/test/java/asia/yulinling/workflow/mapper/UserMapperTest.java +++ b/src/test/java/asia/yulinling/workflow/mapper/UserMapperTest.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateTime; import cn.hutool.core.util.IdUtil; import cn.hutool.crypto.SecureUtil; import com.baomidou.mybatisplus.test.autoconfigure.MybatisPlusTest; +import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -32,6 +33,7 @@ import static org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTest @ExtendWith(SpringExtension.class) @AutoConfigureTestDatabase(replace = NONE) @Slf4j +@EnableEncryptableProperties public class UserMapperTest { @Autowired private UserMapper userMapper; @@ -43,13 +45,13 @@ public class UserMapperTest { log.info("users={}", users); } - @Test - public void selectUserById() { -// User user = userMapper.selectUserById(1L); - User user = userMapper.selectById(1); - Assertions.assertNotNull(user); - log.info("user={}", user); - } +// @Test +// public void selectUserById() { +//// User user = userMapper.selectUserById(1L); +// User user = userMapper.selectById(1); +// Assertions.assertNotNull(user); +// log.info("user={}", user); +// } @Test @Transactional @@ -72,12 +74,12 @@ public class UserMapperTest { Assertions.assertEquals(1, i); } - @Test - @Transactional - @Rollback - public void deleteById() { -// int i = userMapper.deleteById(1L); - int i = userMapper.deleteById(1); - Assertions.assertEquals(1, i); - } +// @Test +// @Transactional +// @Rollback +// public void deleteById() { +//// int i = userMapper.deleteById(1L); +// int i = userMapper.deleteById(1); +// Assertions.assertEquals(1, i); +// } } diff --git a/src/test/java/asia/yulinling/workflow/service/EmailServiceTest.java b/src/test/java/asia/yulinling/workflow/service/EmailServiceTest.java index 3ce75b8..2086989 100644 --- a/src/test/java/asia/yulinling/workflow/service/EmailServiceTest.java +++ b/src/test/java/asia/yulinling/workflow/service/EmailServiceTest.java @@ -3,12 +3,16 @@ package asia.yulinling.workflow.service; import asia.yulinling.workflow.WorkFlowMainTests; import cn.hutool.core.io.resource.ResourceUtil; import jakarta.mail.MessagingException; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; +import org.thymeleaf.spring6.SpringTemplateEngine; import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; +import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; import java.net.URL; @@ -28,6 +32,21 @@ public class EmailServiceTest extends WorkFlowMainTests { @Autowired private ApplicationContext applicationContext; + @BeforeEach + void setUp() { + SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); + resolver.setApplicationContext(applicationContext); + resolver.setCacheable(false); + resolver.setPrefix("classpath:/templates/email/"); + resolver.setSuffix(".html"); + + // 每个测试用例使用新的engine实例 + this.templateEngine = new SpringTemplateEngine(); + this.templateEngine.setTemplateResolver(new ClassLoaderTemplateResolver()); + this.templateEngine.setTemplateResolver(resolver); + } + + /** * 测试简单邮件 */ @@ -60,15 +79,6 @@ public class EmailServiceTest extends WorkFlowMainTests { */ @Test public void sendHtmlMail2() throws MessagingException { - - SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); - resolver.setApplicationContext(applicationContext); - resolver.setCacheable(false); - resolver.setPrefix("classpath:/email/"); - resolver.setSuffix(".html"); - - templateEngine.setTemplateResolver(resolver); - Context context = new Context(); context.setVariable("project", "mail test"); context.setVariable("author", "yulinlng"); diff --git a/src/test/java/asia/yulinling/workflow/utils/RedisTest.java b/src/test/java/asia/yulinling/workflow/utils/RedisTest.java index ab85128..0187574 100644 --- a/src/test/java/asia/yulinling/workflow/utils/RedisTest.java +++ b/src/test/java/asia/yulinling/workflow/utils/RedisTest.java @@ -1,16 +1,17 @@ package asia.yulinling.workflow.utils; import asia.yulinling.workflow.WorkFlowMainTests; +import asia.yulinling.workflow.model.vo.user.UserPrincipal; +import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.core.Authentication; -import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UserDetails; import java.io.Serializable; import java.util.Objects; @@ -31,6 +32,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; * @since 2025/6/18 */ @Slf4j +@EnableEncryptableProperties public class RedisTest extends WorkFlowMainTests { @Autowired private RedisTemplate redisTemplate; @@ -40,6 +42,8 @@ public class RedisTest extends WorkFlowMainTests { private JwtUtil jwtUtil; @Autowired private RedisUtil redisUtil; + @Autowired + private AuthenticationManager authenticationManager; @Test public void testRedisTemplate() throws InterruptedException { @@ -66,15 +70,17 @@ public class RedisTest extends WorkFlowMainTests { @Test public void testRedis() { - UserDetails user = User.withUsername("test") - .password("test") - .roles("USER") - .build(); - Authentication authentication = new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities()); + UserPrincipal userPrincipal = new UserPrincipal(); + userPrincipal.setId(1L); + userPrincipal.setUsername("admin"); + userPrincipal.setPassword("test"); + Authentication authentication = new UsernamePasswordAuthenticationToken(userPrincipal, "admin"); String token = jwtUtil.generateToken(authentication, false); assertNotNull(token); Claims claims = jwtUtil.parseToken(token); - assertEquals("test", claims.getSubject()); + log.info("claims: {}", claims); + assertEquals("admin", claims.getSubject()); + assertEquals(1, claims.get("userId")); } }