feat: 添加E2E测试环境配置支持
Some checks failed
lotterLaravel CI / test (push) Has been cancelled

添加LOTTERY_E2E环境变量来控制E2E测试相关功能,
包括绕过验证码、登录限制和钱包API URL验证,
同时更新composer.json以包含E2E专用的提供者和服务。
This commit is contained in:
2026-06-18 14:42:22 +08:00
parent 6b2ea39ea1
commit 6ec9634704
45 changed files with 3702 additions and 6 deletions

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Http\Controllers\Api\V1\E2E;
use App\Services\AdminCaptchaService;
use App\Support\ApiResponse;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
/**
* E2E 辅助peek captcha bypass 码。
*
* digest HMAC(app.key) 单向,存进 cache 的就是 digest无法反查明文。
* 改用 e2e 约定captcha_code == "LOTTERY_E2E_BYPASS" LOTTERY_E2E=true 时视为通过。
* 本端点不返回任何"答案",仅返回约定码提示。
*/
final class E2ECaptchaPeekController extends \App\Http\Controllers\Controller
{
public function player(Request $request): JsonResponse
{
$key = (string) $request->input('captcha_key', '');
if ($key === '') {
return ApiResponse::error('captcha_key required', 'e2e_invalid_input', null, 422);
}
return $this->peek($key, AdminCaptchaService::SCOPE_PLAYER);
}
public function admin(Request $request): JsonResponse
{
$key = (string) $request->input('captcha_key', '');
if ($key === '') {
return ApiResponse::error('captcha_key required', 'e2e_invalid_input', null, 422);
}
return $this->peek($key, AdminCaptchaService::SCOPE_ADMIN);
}
private function peek(string $key, string $scope): JsonResponse
{
return ApiResponse::success([
'bypass_code' => 'LOTTERY_E2E_BYPASS',
'scope' => $scope,
'key' => $key,
'hint' => 'POST captcha_code=LOTTERY_E2E_BYPASS to login when LOTTERY_E2E=true',
]);
}
}