test: 搭建审批流开发测试底座

This commit is contained in:
2026-10-30 17:50:20 +08:00
parent d83d178654
commit 9f5f38575a
10 changed files with 132 additions and 65 deletions
@@ -0,0 +1,28 @@
package com.gxwebsoft;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ActiveProfiles;
import javax.sql.DataSource;
import static org.assertj.core.api.Assertions.assertThat;
/**
* 集成测试底座冒烟:只验证测试 profile 能启动上下文并连上共享测试库,不涉及业务表。
*/
@SpringBootTest
@ActiveProfiles({"gxtyzx-test", "test"})
class ContextLoadsIT {
@Autowired
private DataSource dataSource;
@Test
void connectsToTestDatabase() {
Integer result = new JdbcTemplate(dataSource).queryForObject("select 1", Integer.class);
assertThat(result).isEqualTo(1);
}
}
-51
View File
@@ -1,51 +0,0 @@
package com.gxwebsoft;
import cn.hutool.core.util.NumberUtil;
import com.gxwebsoft.think.entity.ThinkOrder;
import com.gxwebsoft.think.service.ThinkOrderService;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.ParseException;
/**
* Created by WebSoft on 2020-03-23 23:37
*/
@SpringBootTest
public class TestMain {
/**
* 生成唯一的key用于jwt工具类
*/
@Test
public void testGenJwtKey() {
BigDecimal bigDecimal = new BigDecimal(NumberUtil.decimalFormat("0.00", 1 * 0.01));
System.out.println("实际付款金额 = " + bigDecimal);
// System.out.println(JwtUtil.encodeKey(JwtUtil.randomKey()));
// final String encrypt = CommonUtil.encrypt("123456");
// System.out.println("encrypt = " + encrypt);
//
// final String decrypt = CommonUtil.decrypt(encrypt);
// System.out.println("decrypt = " + decrypt);
}
private String fenToYuan(String amount){
NumberFormat format = NumberFormat.getInstance();
try{
Number number = format.parse(amount);
double temp = number.doubleValue() / 100.0;
format.setGroupingUsed(false);
// 设置返回的小数部分所允许的最大位数
format.setMaximumFractionDigits(2);
amount = format.format(temp);
} catch (ParseException e){
e.printStackTrace();
}
return amount;
}
}
@@ -1,13 +0,0 @@
package com.gxwebsoft;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class WebSoftApplicationTests {
@Test
public void contextLoads() {
}
}
@@ -0,0 +1,43 @@
package com.gxwebsoft.support;
import com.gxwebsoft.common.system.entity.Menu;
import com.gxwebsoft.common.system.entity.User;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 测试用登录态构造器:MockMvc 直接注入 Authentication,不触发 JwtAuthenticationFilter 的远程 core 调用。
*
* <p>租户与用户固定为测试库中已存在的 10150 / 3673(admin);权限串由调用方传入。</p>
*/
public final class TestAuthentication {
public static final int TENANT_ID = 10150;
public static final int USER_ID = 3673;
private TestAuthentication() {
}
public static Authentication admin(String... authorities) {
List<Menu> menus = Arrays.stream(authorities)
.map(authority -> {
Menu menu = new Menu();
menu.setAuthority(authority);
return menu;
})
.collect(Collectors.toList());
User user = new User();
user.setUserId(USER_ID);
user.setUsername("admin");
user.setTenantId(TENANT_ID);
user.setStatus(0);
user.setAuthorities(menus);
return new UsernamePasswordAuthenticationToken(user, null, menus);
}
}
@@ -0,0 +1,24 @@
package com.gxwebsoft.support;
import com.gxwebsoft.common.system.entity.User;
import org.junit.jupiter.api.Test;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import static org.assertj.core.api.Assertions.assertThat;
class TestAuthenticationTest {
@Test
void buildsAdminPrincipalWithAuthorities() {
Authentication authentication = TestAuthentication.admin("approval:instance:list");
assertThat(authentication.getPrincipal()).isInstanceOf(User.class);
User user = (User) authentication.getPrincipal();
assertThat(user.getUserId()).isEqualTo(TestAuthentication.USER_ID);
assertThat(user.getTenantId()).isEqualTo(TestAuthentication.TENANT_ID);
assertThat(authentication.getAuthorities())
.extracting(GrantedAuthority::getAuthority)
.containsExactly("approval:instance:list");
}
}
+14
View File
@@ -0,0 +1,14 @@
# 测试专用覆盖;必须与 @ActiveProfiles({"gxtyzx-test", "test"}) 一起使用。
# 数据源、Redis、远程 core 地址仍由 application-gxtyzx-test.yml 提供。
config:
upload-path: ${java.io.tmpdir}/gxtyzx-test-uploads/
local-upload-path: ${java.io.tmpdir}/gxtyzx-test-uploads/
logging:
level:
com.gxwebsoft: WARN
com.baomidou.mybatisplus: WARN
springfox:
documentation:
enabled: false