diff --git a/app/app/Jobs/Supplier/RefreshSupplierSessionJob.php b/app/app/Jobs/Supplier/RefreshSupplierSessionJob.php index 87435b93..c6140b4c 100644 --- a/app/app/Jobs/Supplier/RefreshSupplierSessionJob.php +++ b/app/app/Jobs/Supplier/RefreshSupplierSessionJob.php @@ -42,10 +42,13 @@ class RefreshSupplierSessionJob implements ShouldQueue public function handle(PlaywrightBridge $bridge): void { + // Lock TTL must exceed PlaywrightBridge::TIMEOUT_SECONDS (75s) to prevent + // auto-expiry while real chromium boot+login still в процессе → concurrent + // refresh race. Block timeout slightly higher. Final review I-2 fix. /** @var LockProvider $lockStore */ $lockStore = Cache::store('redis'); - $lockStore->lock('supplier:session:refresh', 30) - ->block(35, function () use ($bridge) { + $lockStore->lock('supplier:session:refresh', 90) + ->block(95, function () use ($bridge) { $session = $bridge->refreshSession( login: (string) config('services.supplier.login'), password: (string) config('services.supplier.password'), diff --git a/app/phpstan-baseline.neon b/app/phpstan-baseline.neon index c8c830a1..2e10381e 100644 --- a/app/phpstan-baseline.neon +++ b/app/phpstan-baseline.neon @@ -955,20 +955,8 @@ parameters: path: tests/Unit/ExampleTest.php - - message: '#^Call to method shouldReceive\(\) on an unknown class ProcessFactory\.$#' - identifier: class.notFound - count: 1 - path: tests/Unit/Supplier/PlaywrightBridgeTest.php - - - - message: '#^Class TestCase not found\.$#' - identifier: class.notFound - count: 1 - path: tests/Unit/Supplier/PlaywrightBridgeTest.php - - - - message: '#^PHPDoc tag @var for variable \$factoryMock contains unknown class ProcessFactory\.$#' - identifier: class.notFound + message: '#^Call to an undefined method App\\Services\\Supplier\\ProcessFactory\:\:shouldReceive\(\)\.$#' + identifier: method.notFound count: 1 path: tests/Unit/Supplier/PlaywrightBridgeTest.php @@ -979,32 +967,8 @@ parameters: path: tests/Unit/Supplier/PlaywrightBridgeTest.php - - message: '#^Parameter \#1 \$processFactory of class App\\Services\\Supplier\\PlaywrightBridge constructor expects App\\Services\\Supplier\\ProcessFactory, ProcessFactory given\.$#' - identifier: argument.type - count: 1 - path: tests/Unit/Supplier/PlaywrightBridgeTest.php - - - - message: '#^Call to method shouldReceive\(\) on an unknown class PlaywrightBridge\.$#' - identifier: class.notFound - count: 2 - path: tests/Unit/Supplier/RefreshSupplierSessionJobTest.php - - - - message: '#^Class TestCase not found\.$#' - identifier: class.notFound - count: 1 - path: tests/Unit/Supplier/RefreshSupplierSessionJobTest.php - - - - message: '#^PHPDoc tag @var for variable \$bridge contains unknown class PlaywrightBridge\.$#' - identifier: class.notFound - count: 2 - path: tests/Unit/Supplier/RefreshSupplierSessionJobTest.php - - - - message: '#^Parameter \#1 \$bridge of method App\\Jobs\\Supplier\\RefreshSupplierSessionJob\:\:handle\(\) expects App\\Services\\Supplier\\PlaywrightBridge, PlaywrightBridge given\.$#' - identifier: argument.type + message: '#^Call to an undefined method App\\Services\\Supplier\\PlaywrightBridge\:\:shouldReceive\(\)\.$#' + identifier: method.notFound count: 2 path: tests/Unit/Supplier/RefreshSupplierSessionJobTest.php diff --git a/app/tests/Unit/Supplier/PlaywrightBridgeTest.php b/app/tests/Unit/Supplier/PlaywrightBridgeTest.php index 16ca394d..166025f1 100644 --- a/app/tests/Unit/Supplier/PlaywrightBridgeTest.php +++ b/app/tests/Unit/Supplier/PlaywrightBridgeTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -uses(TestCase::class); - use App\Exceptions\Supplier\SupplierAuthException; use App\Services\Supplier\PlaywrightBridge; use App\Services\Supplier\ProcessFactory; use Tests\TestCase; use Tests\Unit\Supplier\Stubs\StubPlaywrightProcessHandle; +uses(TestCase::class); + test('PlaywrightBridge passes credentials via stdin not argv', function () { $stubHandle = new StubPlaywrightProcessHandle( successful: true, diff --git a/app/tests/Unit/Supplier/RefreshSupplierSessionJobTest.php b/app/tests/Unit/Supplier/RefreshSupplierSessionJobTest.php index ab2250aa..67088f0d 100644 --- a/app/tests/Unit/Supplier/RefreshSupplierSessionJobTest.php +++ b/app/tests/Unit/Supplier/RefreshSupplierSessionJobTest.php @@ -2,14 +2,14 @@ declare(strict_types=1); -uses(TestCase::class); - use App\Exceptions\Supplier\SupplierAuthException; use App\Jobs\Supplier\RefreshSupplierSessionJob; use App\Services\Supplier\PlaywrightBridge; use Illuminate\Support\Facades\Cache; use Tests\TestCase; +uses(TestCase::class); + beforeEach(function () { config([ 'services.supplier.login' => 'test_login',