config.php 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /**
  3. * api-test 配置:测试服务器切换 + 鉴权 token。
  4. *
  5. * 服务器切换的优先级(高 → 低):
  6. * 1. 命令行 `php run.php --server=<alias|完整 base URL>`
  7. * 2. 环境变量 `API_TEST_BASE`(完整 base URL,覆盖 alias)
  8. * 3. config.local.php 的 `default_server`
  9. *
  10. * alias 对齐 openapi/public/assets/protocol/main.yaml 里的 servers。
  11. * 第一个 `/api` 是同源地址,CLI 客户端用不到,故略。
  12. *
  13. * 本机的账号、默认服务器、种子数据覆盖写在 config.local.php(模板
  14. * config.local.example.php,已 gitignore)。config.local.php 两种写法都认:
  15. * - 新分组:顶层 `servers` 按 alias 分组,run.php 按实际 server 选对应那套(推荐)
  16. * - 旧扁平:顶层直接写 username / token / fixtures(一套,切环境要手动改)
  17. *
  18. * token(需登录的用例用)优先级(在 run.php 里按序套用):
  19. * 1. `php run.php --token=...`
  20. * 2. 环境变量 `API_TEST_TOKEN`
  21. * 3. 实际 server 对应的 `servers[alias].token`
  22. * 4. 都没有时,用 username/password 调 `POST /v3/sessions` 现换一个 token
  23. *
  24. * username/password 同理:--username/--password > API_TEST_USERNAME/PASSWORD > servers[alias]
  25. *
  26. * 写操作(POST/DELETE)在**所有服务器上都真实执行**,包括 prod——会产生垃圾数据,
  27. * 由测试账号定期清理。
  28. */
  29. $local = is_file(__DIR__ . '/config.local.php') ? require __DIR__ . '/config.local.php' : [];
  30. return [
  31. // alias => 完整 base URL(含 /api 前缀)
  32. 'servers' => [
  33. 'local' => 'http://127.0.0.1:8000/api',
  34. 'staging' => 'https://staging.wikipali.cc/api',
  35. 'next' => 'https://next.wikipali.org/api',
  36. 'prod' => 'https://www.wikipali.org/api',
  37. 'next-cn' => 'https://next.wikipali.cc/api',
  38. 'prod-cn' => 'https://www.wikipali.cc/api',
  39. ],
  40. 'default_server' => $local['default_server'] ?? 'local',
  41. // 旧扁平结构兜底(新分组的 config.local.php 顶层没有这些键,留空即可)
  42. 'token' => $local['token'] ?? null,
  43. 'username' => $local['username'] ?? null,
  44. 'password' => $local['password'] ?? null,
  45. 'fixtures' => $local['fixtures'] ?? [],
  46. // 新分组结构:per-server 配置块(username/password/token/fixtures),
  47. // run.php 解析出实际 server 后从这里选对应那套。
  48. 'local_servers' => $local['servers'] ?? null,
  49. 'timeout' => 20,
  50. ];