jilo-web/tests/TestCase.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;
}
}