readProjectFile('pages/auth/logout().php'); $this->assertStringContainsString("actionRequirePost('login')", $content); $this->assertStringContainsString("actionRequireCsrf('login', 'login', 'logout_csrf')", $content); } public function testTopbarLogoutUsesPostFormSubmitInsteadOfGetLink(): void { $content = $this->readProjectFile('templates/partials/app-topbar.phtml'); $this->assertStringNotContainsString('href="logout"', $content); $this->assertStringContainsString('type="submit"', $content); $this->assertStringContainsString('form=""', $content); } public function testLayoutAndSessionWarningUseLogoutFormContract(): void { $layoutContent = $this->readProjectFile('templates/default.phtml'); $sessionWarningJs = $this->readProjectFile('web/js/components/app-session-warning.js'); $this->assertStringContainsString('\'logoutFormId\' => $sessionLogoutFormId', $layoutContent); $this->assertStringContainsString('data-session-logout-form-id=""', $layoutContent); $this->assertStringContainsString('