69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
		
		
			
		
	
	
			69 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
|  | <?php | ||
|  | 
 | ||
|  | require_once __DIR__ . '/vendor/autoload.php'; | ||
|  | 
 | ||
|  | class TestCase extends PHPUnit\Framework\TestCase | ||
|  | { | ||
|  |     protected function setUp(): void | ||
|  |     { | ||
|  |         parent::setUp(); | ||
|  | 
 | ||
|  |         // Set up test environment
 | ||
|  |         $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; | ||
|  |         $_SERVER['HTTP_USER_AGENT'] = 'PHPUnit Test Browser'; | ||
|  | 
 | ||
|  |         // Include common app files
 | ||
|  |         require_once dirname(__DIR__, 2) . '/app/includes/config.php'; | ||
|  |         require_once dirname(__DIR__, 2) . '/app/includes/functions.php'; | ||
|  | 
 | ||
|  |         // Clean up any existing session
 | ||
|  |         if (session_status() === PHP_SESSION_ACTIVE) { | ||
|  |             session_destroy(); | ||
|  |         } | ||
|  | 
 | ||
|  |         // Reset session data
 | ||
|  |         $_SESSION = []; | ||
|  | 
 | ||
|  |         // Only start session if headers haven't been sent
 | ||
|  |         if (!headers_sent() && session_status() === PHP_SESSION_NONE) { | ||
|  |             session_start(); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     protected function tearDown(): void | ||
|  |     { | ||
|  |         // Clean up session after each test
 | ||
|  |         if (session_status() === PHP_SESSION_ACTIVE) { | ||
|  |             $_SESSION = []; | ||
|  |             session_destroy(); | ||
|  |         } | ||
|  | 
 | ||
|  |         parent::tearDown(); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * Helper method to start a new session if needed | ||
|  |      */ | ||
|  |     protected function ensureSession(): void | ||
|  |     { | ||
|  |         if (session_status() === PHP_SESSION_NONE && !headers_sent()) { | ||
|  |             session_start(); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     protected function captureHeaders(): array | ||
|  |     { | ||
|  |         $headers = []; | ||
|  |         $callback = function($header) use (&$headers) { | ||
|  |             $headers[] = $header; | ||
|  |         }; | ||
|  | 
 | ||
|  |         // Mock header function
 | ||
|  |         if (!function_exists('header')) { | ||
|  |             eval('function header($header) use ($callback) { $callback($header); }'); | ||
|  |         } | ||
|  | 
 | ||
|  |         return $headers; | ||
|  |     } | ||
|  | } |