feat(apitest): 新增 API 测试环境与安全配置

- 新增 apitest 专用 MySQL 配置与 Docker 编排(docker/apitest-mysql.yml、docker/apitest-mysql/)

- 增加 ApiTestSecurityConfig / ApiTestSecurityProperties 与 ApiTestAuthenticationFilter

- 新增 application-apitest.yml 与相关测试目录(play-admin/src/test/java/com/starry/admin/api/)

- 调整根 pom 与 play-admin/pom 依赖,优化 SpringSecurityConfig 以兼容 apitest
This commit is contained in:
irving
2025-10-31 20:40:21 -04:00
parent fb2bd510b1
commit f3480b6ba0
14 changed files with 751 additions and 1 deletions

27
docker/apitest-mysql.yml Normal file
View File

@@ -0,0 +1,27 @@
version: "3.9"
services:
mysql-apitest:
image: mysql:8.0.32
container_name: peipei-mysql-apitest
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: peipei_apitest
MYSQL_USER: apitest
MYSQL_PASSWORD: apitest
ports:
- "33306:3306"
volumes:
- ./apitest-mysql/init:/docker-entrypoint-initdb.d:ro
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-proot"]
interval: 10s
timeout: 5s
retries: 10
command:
- "--default-authentication-plugin=mysql_native_password"
- "--lower_case_table_names=1"
- "--explicit_defaults_for_timestamp=1"
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"

View File

@@ -0,0 +1,2 @@
GRANT SELECT ON performance_schema.* TO 'apitest'@'%';
FLUSH PRIVILEGES;

View File

@@ -0,0 +1,10 @@
# API Test MySQL Seed Files
将初始化 schema 和种子数据的 SQL 文件放在此目录下,文件会在 `mysql-apitest` 容器启动时自动执行。
推荐约定:
- `000-schema.sql`:创建数据库/表结构(可复用 Flyway 生成的整库脚本)。
- `100-seed-*.sql`:插入基础租户、用户、商品、优惠券等测试数据。
- `900-cleanup.sql`:可选的清理脚本,用于重置状态。
容器销毁(`docker-compose down -v`)后数据会一起删除,保证每次测试环境一致。