withoutVite(); $identity = DB::selectOne('SELECT current_database() AS database,inet_server_port() AS port'); $this->assertStringEndsWith('_test', $identity->database); $this->assertSame(55441, (int) $identity->port); Http::fake(); $investor = User::factory()->create(); $manager = User::factory()->create(); $reviewer = User::factory()->create(); $reviewer->forceFill(['two_factor_secret' => Crypt::encryptString('QA-SYNTHETIC'), 'two_factor_confirmed_at' => now()])->save(); config(['portal.managers' => [$manager->email, $reviewer->email], 'suitecrm.enabled' => false, 'investmoz_ai.enabled' => false, 'education.enabled' => true]); foreach (['existing-business' => ['reviewers', 'triagers', 'approvers_l1', 'approvers_l2', 'publishers'], 'investment-zones' => ['legal_reviewers', 'gis_reviewers', 'territory_reviewers', 'publishers'], 'territorial' => ['editors', 'reviewers', 'publishers'], 'simulation-tax-governance' => ['editors', 'reviewers', 'publishers']] as $module => $roles) { foreach ($roles as $role) { config([$module.'.'.$role => [$reviewer->email]]); } } $results = []; $failures = []; foreach (['public' => null, 'investor' => $investor, 'manager' => $manager, 'designated_mfa_qa' => $reviewer] as $profile => $actor) { if ($actor) { $this->actingAs($actor); } else { $this->app['auth']->forgetGuards(); } foreach (Route::getRoutes() as $route) { $uri = $route->uri(); if (! in_array('GET', $route->methods(), true) || str_contains($uri, '{') || ! str_contains($route->getActionName(), 'App\\Http\\Controllers\\') || str_contains($uri, 'export')) { continue; } $url = '/'.ltrim($uri, '/'); if (str_ends_with($url, '/territory-options')) { $url .= '?type=province&q=Maputo'; } $response = $this->get($url); $results[] = ['profile' => $profile, 'route' => $url, 'status' => $response->status(), 'coverage' => 'HTTP GET, schema migrated and empty QA; not visual acceptance']; if ($response->status() >= 500) { $failures[] = $profile.' '.$url.' HTTP '.$response->status(); } } } $dir = storage_path('app/private/investmoz-v2/portal-audit'); if (! is_dir($dir)) { mkdir($dir, 0700, true); } file_put_contents($dir.'/ensaios-rotas.json', json_encode(['captured_at' => gmdate('c'), 'qa' => $identity, 'results' => $results, 'failures' => $failures, 'active_writes' => 0], JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR)); Http::assertNothingSent(); $this->assertSame([], $failures); } }