#!/usr/bin/env php $httpCode, 'body' => $response, 'contentType' => $contentType ]; } function assertTrue($condition, $message) { if (!$condition) { throw new Exception("Assertion failed: $message"); } } function assertFalse($condition, $message) { if ($condition) { throw new Exception("Assertion failed: $message"); } } function assertEquals($expected, $actual, $message) { if ($expected !== $actual) { throw new Exception("Assertion failed: $message. Expected: $expected, Got: $actual"); } } function assertContains($needle, $haystack, $message) { if (strpos($haystack, $needle) === false) { throw new Exception("Assertion failed: $message. Needle: $needle, Haystack: " . substr($haystack, 0, 200) . "..."); } } function runTest($name, $callback) { global $tests; echo "Running test: $name... "; try { $callback(); echo "āœ“ PASSED\n"; $tests[] = ['name' => $name, 'status' => 'PASSED']; } catch (Exception $e) { echo "āœ— FAILED: " . $e->getMessage() . "\n"; $tests[] = ['name' => $name, 'status' => 'FAILED', 'error' => $e->getMessage()]; } } // Test cases runTest('Homepage loads successfully', function() use ($baseUrl) { $response = makeRequest($baseUrl . '/'); assertEquals(200, $response['statusCode'], 'Expected HTTP 200 status code'); assertContains(' 'test@example.com', 'password' => 'password123' ]); // Even if authentication fails, the endpoint should respond properly assertTrue(in_array($response['statusCode'], [200, 400, 401]), 'Expected valid HTTP status code'); assertContains('application/json', $response['contentType'], 'Expected JSON response'); }); runTest('Job creation endpoint handles requests', function() use ($baseUrl) { $response = makeRequest($baseUrl . '/positions', 'POST', [ 'title' => 'Test Position', 'description' => 'Test description' ]); // Should handle the request properly even if authentication is required assertTrue(in_array($response['statusCode'], [200, 400, 401, 403]), 'Expected valid HTTP status code'); assertContains('application/json', $response['contentType'], 'Expected JSON response'); }); // Summary echo "\n=== Test Summary ===\n"; $passed = 0; $failed = 0; foreach ($tests as $test) { if ($test['status'] === 'PASSED') { $passed++; } else { $failed++; } } echo "Passed: $passed\n"; echo "Failed: $failed\n"; echo "Total: " . count($tests) . "\n"; if ($failed > 0) { echo "\nFailed tests:\n"; foreach ($tests as $test) { if ($test['status'] === 'FAILED') { echo "- {$test['name']}: {$test['error']}\n"; } } exit(1); } else { echo "\nāœ“ All tests passed!\n"; exit(0); }