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;
|
|
}
|
|
}
|