make(Illuminate\Contracts\Http\Kernel::class); function testApi($kernel, $method, $uri, $data = [], $token = null) { $server = ['HTTP_ACCEPT' => 'application/json']; if ($token) { $server['HTTP_AUTHORIZATION'] = 'Bearer ' . $token; } $request = Illuminate\Http\Request::create($uri, $method, $data, [], [], $server); $response = $kernel->handle($request); $status = $response->getStatusCode(); $content = json_decode($response->getContent(), true); if ($status >= 400 && $status !== 422) { // 422 is expected for some negative tests echo "FAIL: [$method] $uri returned $status\n"; echo "Response: " . $response->getContent() . "\n\n"; } else { echo "PASS: [$method] $uri returned $status\n"; } return ['status' => $status, 'data' => $content]; } echo "--- STARTING API TESTS ---\n"; // 1. LOGIN PEGawai $res = testApi($kernel, 'POST', '/api/login', ['username' => 'hari_disnaker', 'password' => 'password123']); $userToken = $res['data']['data']['token'] ?? null; // 2. LOGIN ADMIN $res = testApi($kernel, 'POST', '/api/login', ['username' => 'welprida_admin', 'password' => 'password123']); $adminToken = $res['data']['data']['token'] ?? null; // 3. LOGIN SUPERADMIN $res = testApi($kernel, 'POST', '/api/login', ['username' => 'sutowo_superadmin', 'password' => 'password123']); $superToken = $res['data']['data']['token'] ?? null; if (!$userToken || !$adminToken || !$superToken) { die("Tokens missing, cannot proceed.\n"); } // --- PEGAWAI TESTS --- echo "\n--- ROLE: PEGAWAI ---\n"; testApi($kernel, 'GET', '/api/dashboard', [], $userToken); testApi($kernel, 'GET', '/api/penugasan', [], $userToken); $createTask = testApi($kernel, 'POST', '/api/penugasan', [ 'kegiatan' => 'Tugas Testing', 'tanggal_mulai' => '2026-06-01', 'pegawai_ids' => [4] // hari_disnaker ID is likely 4 ], $userToken); $taskId = $createTask['data']['data']['id'] ?? null; if ($taskId) { testApi($kernel, 'GET', '/api/penugasan/' . $taskId, [], $userToken); testApi($kernel, 'PUT', '/api/penugasan/' . $taskId, [ 'kegiatan' => 'Tugas Testing Updated', 'tanggal_mulai' => '2026-06-01', 'pegawai_ids' => [4] ], $userToken); testApi($kernel, 'POST', '/api/penugasan/' . $taskId . '/update-status', ['status' => 'selesai'], $userToken); } // --- ADMIN TESTS --- echo "\n--- ROLE: ADMIN ---\n"; testApi($kernel, 'GET', '/api/dashboard', [], $adminToken); testApi($kernel, 'GET', '/api/users', [], $adminToken); testApi($kernel, 'GET', '/api/pegawai', [], $adminToken); // Create User $createUser = testApi($kernel, 'POST', '/api/register', [ 'name' => 'User Test', 'username' => 'usertest_'.time(), 'email' => 'usertest'.time().'@mail.com', 'password' => 'password123', 'role' => 'user' ], $adminToken); $newUserId = $createUser['data']['user']['id'] ?? null; if ($newUserId) { testApi($kernel, 'PUT', '/api/users/' . $newUserId, ['name' => 'User Test Updated', 'role' => 'user'], $adminToken); testApi($kernel, 'DELETE', '/api/users/' . $newUserId, [], $adminToken); } // --- SUPER ADMIN TESTS --- echo "\n--- ROLE: SUPER ADMIN ---\n"; testApi($kernel, 'GET', '/api/dashboard', [], $superToken); if ($taskId) { testApi($kernel, 'POST', '/api/penugasan/' . $taskId . '/update-status', ['status' => 'telah_ditinjau'], $superToken); testApi($kernel, 'POST', '/api/penugasan/' . $taskId . '/delete', ['alasan' => 'Dibatalkan karena testing selesai'], $superToken); } testApi($kernel, 'GET', '/api/export-penugasan', [], $superToken); echo "\n--- TESTS COMPLETED ---\n";