Files
api-wipay/test_api.php

660 lines
18 KiB
PHP

<?php
/**
* Complete API Testing Script - Test All Endpoints
* Usage: php test_api.php
*/
$baseUrl = 'http://localhost:8000';
$username = 'eksan';
$password = 'dodolgarut';
$no_sl = '059912';
echo "==========================================\n";
echo " Timo Wipay API - Complete Testing\n";
echo "==========================================\n";
echo "Data yang digunakan:\n";
echo " - Username: $username\n";
echo " - Password: $password\n";
echo " - Nomor SL: $no_sl\n";
echo "==========================================\n\n";
// Function to make HTTP request
function makeRequest($url, $method = 'GET', $data = null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
if ($data !== null) {
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
}
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
return [
'code' => $httpCode,
'body' => $response,
'error' => $curlError
];
}
// Function to check response format
function checkResponse($result, $endpointName)
{
if (!empty($result['error'])) {
echo "$endpointName: CURL Error - {$result['error']}\n";
return false;
}
$responseData = json_decode($result['body'], true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo "$endpointName: Invalid JSON - " . json_last_error_msg() . "\n";
echo " Response: " . substr($result['body'], 0, 100) . "...\n";
return false;
}
if (isset($responseData['status'])) {
echo "$endpointName: OK (Status: {$responseData['status']})\n";
return true;
} else {
echo "$endpointName: Missing 'status' field\n";
return false;
}
}
$token = null;
$testCount = 0;
$passCount = 0;
$failCount = 0;
// ============================================
// AUTHENTICATION
// ============================================
echo "=== AUTHENTICATION ===\n\n";
// 1. Daftar
$testCount++;
echo "$testCount. Testing daftar...\n";
$result = makeRequest("$baseUrl/timo/daftar", 'POST', [
'nama' => 'Test User',
'username' => 'testuser' . time(),
'email' => 'test' . time() . '@test.com',
'no_hp' => '081234567890',
'password' => 'test123'
]);
if (checkResponse($result, 'Daftar')) $passCount++;
else $failCount++;
echo "\n";
// 2. Login
$testCount++;
echo "$testCount. Testing login...\n";
$result = makeRequest("$baseUrl/timo/login", 'POST', [
'username' => $username,
'password' => $password
]);
$responseData = json_decode($result['body'], true);
if (checkResponse($result, 'Login')) {
$passCount++;
if (isset($responseData['user']['id_pengguna_timo'])) {
$token = $responseData['user']['id_pengguna_timo'];
echo " Token: $token\n";
}
} else {
$failCount++;
}
echo "\n";
if (empty($token)) {
echo "⚠ WARNING: Login gagal, beberapa test akan di-skip\n\n";
}
// 3. Login Token
$testCount++;
echo "$testCount. Testing login_token...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/login_token", 'POST', [
'token' => $token,
'password' => md5($password)
]);
if (checkResponse($result, 'Login Token')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 4. Update Akun
$testCount++;
echo "$testCount. Testing update_akun...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/update_akun", 'POST', [
'token' => $token,
'nama' => 'Eksan Updated',
'email' => 'eksan@test.com',
'hp' => '081234567890'
]);
if (checkResponse($result, 'Update Akun')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 5. Update Password
$testCount++;
echo "$testCount. Testing update_password...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/update_password", 'POST', [
'token' => $token,
'passlama' => $password,
'passbaru' => $password
]);
if (checkResponse($result, 'Update Password')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// ============================================
// SL MANAGEMENT
// ============================================
echo "=== SL MANAGEMENT ===\n\n";
// 6. Cek SL
$testCount++;
echo "$testCount. Testing cek_sl...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/cek_sl", 'POST', [
'token' => $token,
'no_sl' => $no_sl
]);
if (checkResponse($result, 'Cek SL')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 7. Confirm SL
$testCount++;
echo "$testCount. Testing confirm_sl...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/confirm_sl", 'POST', [
'token' => $token,
'no_sl' => $no_sl
]);
if (checkResponse($result, 'Confirm SL')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 8. Hapus SL
$testCount++;
echo "$testCount. Testing hapus_sl...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/hapus_sl", 'POST', [
'token' => $token,
'no_sl' => $no_sl
]);
if (checkResponse($result, 'Hapus SL')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// ============================================
// TAGIHAN
// ============================================
echo "=== TAGIHAN ===\n\n";
// 9. History Tagihan
$testCount++;
echo "$testCount. Testing history tagihan...\n";
$result = makeRequest("$baseUrl/timo/history/$no_sl/202401");
if (checkResponse($result, 'History Tagihan')) $passCount++;
else $failCount++;
echo "\n";
// 10. Tagihan
$testCount++;
echo "$testCount. Testing tagihan...\n";
$result = makeRequest("$baseUrl/timo/tagihan/$no_sl");
if (checkResponse($result, 'Tagihan')) $passCount++;
else $failCount++;
echo "\n";
// ============================================
// PEMBAYARAN
// ============================================
echo "=== PEMBAYARAN ===\n\n";
// 11. Request Pembayaran
$testCount++;
echo "$testCount. Testing request_pembayaran...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/request_pembayaran", 'POST', [
'token' => $token,
'no_sl' => $no_sl,
'nama_bank' => 'BCA',
'no_rek' => '1234567890'
]);
if (checkResponse($result, 'Request Pembayaran')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 12. Cek Pembayaran
$testCount++;
echo "$testCount. Testing cek_pembayaran...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/cek_pembayaran", 'POST', [
'token' => $token,
'no_sl' => $no_sl
]);
if (checkResponse($result, 'Cek Pembayaran')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 13. Cek Transfer
$testCount++;
echo "$testCount. Testing cek_transfer...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/cek_transfer", 'POST', [
'token' => $token,
'no_rek' => '#TIMO123'
]);
if (checkResponse($result, 'Cek Transfer')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 14. Batal Pembayaran
$testCount++;
echo "$testCount. Testing batal_pembayaran...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/batal_pembayaran", 'POST', [
'token' => $token,
'no_rek' => '#TIMO123'
]);
if (checkResponse($result, 'Batal Pembayaran')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 15. Confirm Pembayaran
$testCount++;
echo "$testCount. Testing confirm_pembayaran...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/confirm_pembayaran", 'POST', [
'token' => $token,
'no_rek' => '#TIMO123'
]);
if (checkResponse($result, 'Confirm Pembayaran')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 16. History Bayar
$testCount++;
echo "$testCount. Testing history_bayar...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/history_bayar", 'POST', [
'token' => $token
]);
if (checkResponse($result, 'History Bayar')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// ============================================
// LAPORAN
// ============================================
echo "=== LAPORAN ===\n\n";
// 17. Jenis Laporan
$testCount++;
echo "$testCount. Testing jenis_laporan...\n";
$result = makeRequest("$baseUrl/timo/jenis_laporan", 'POST', []);
if (checkResponse($result, 'Jenis Laporan')) $passCount++;
else $failCount++;
echo "\n";
// 18. History Gangguan
$testCount++;
echo "$testCount. Testing history_gangguan...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/history_gangguan", 'POST', [
'token' => $token
]);
if (checkResponse($result, 'History Gangguan')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// ============================================
// WIPAY
// ============================================
echo "=== WIPAY ===\n\n";
// 19. Cek WIPAY
$testCount++;
echo "$testCount. Testing cek_wipay...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/cek_wipay", 'POST', [
'token' => $token
]);
if (checkResponse($result, 'Cek WIPAY')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// ============================================
// RESET PASSWORD
// ============================================
echo "=== RESET PASSWORD ===\n\n";
// 20. Buat Kode Reset
$testCount++;
echo "$testCount. Testing buat_kode (reset password)...\n";
$result = makeRequest("$baseUrl/timo/buat_kode", 'POST', [
'email' => 'eksan@test.com'
]);
if (checkResponse($result, 'Buat Kode Reset')) $passCount++;
else $failCount++;
echo "\n";
// 21. Cek Kode Reset
$testCount++;
echo "$testCount. Testing cek_kode (reset password)...\n";
$result = makeRequest("$baseUrl/timo/cek_kode", 'POST', [
'email' => 'eksan@test.com',
'kode' => '123456'
]);
if (checkResponse($result, 'Cek Kode Reset')) $passCount++;
else $failCount++;
echo "\n";
// 22. Reset Password
$testCount++;
echo "$testCount. Testing reset_kode (reset password)...\n";
$result = makeRequest("$baseUrl/timo/reset_kode", 'POST', [
'email' => 'eksan@test.com',
'kode' => '123456',
'password_baru' => 'newpass123'
]);
if (checkResponse($result, 'Reset Password')) $passCount++;
else $failCount++;
echo "\n";
// ============================================
// UPLOAD
// ============================================
echo "=== UPLOAD ===\n\n";
// 23. Upload Catat Meter
$testCount++;
echo "$testCount. Testing upload_catat_meter...\n";
if (!empty($token)) {
// Base64 dummy image
$dummyImage = base64_encode('dummy image data');
$result = makeRequest("$baseUrl/timo/upload_catat_meter", 'POST', [
'token' => $token,
'no_sl' => $no_sl,
'nama_photo' => 'test.jpg',
'photo' => $dummyImage,
'angka' => '12345'
]);
if (checkResponse($result, 'Upload Catat Meter')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 24. Upload PP
$testCount++;
echo "$testCount. Testing upload_pp...\n";
if (!empty($token)) {
$dummyImage = base64_encode('dummy image data');
$result = makeRequest("$baseUrl/timo/upload_pp", 'POST', [
'token' => $token,
'nama_photo' => 'profile.jpg',
'photo' => $dummyImage
]);
if (checkResponse($result, 'Upload PP')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 25. Hapus PP
$testCount++;
echo "$testCount. Testing hapus_pp...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/hapus_pp", 'POST', [
'token' => $token
]);
if (checkResponse($result, 'Hapus PP')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 26. Upload Gangguan
$testCount++;
echo "$testCount. Testing upload_gangguan...\n";
if (!empty($token)) {
$dummyImage = base64_encode('dummy image data');
$result = makeRequest("$baseUrl/timo/upload_gangguan", 'POST', [
'token' => $token,
'gangguan' => '1',
'no_sl' => $no_sl,
'nama_photo' => 'gangguan.jpg',
'photo' => $dummyImage,
'feedback' => 'Test gangguan',
'lokasi' => 'Test location'
]);
if (checkResponse($result, 'Upload Gangguan')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 27. Upload Pasang Baru
$testCount++;
echo "$testCount. Testing upload_pasang_baru...\n";
if (!empty($token)) {
$dummyImage = base64_encode('dummy image data');
$result = makeRequest("$baseUrl/timo/upload_pasang_baru", 'POST', [
'token' => $token,
'nama' => 'Test User',
'no_hp' => '081234567890',
'alamat' => 'Test Address',
'nama_photo' => 'ktp.jpg',
'photo' => $dummyImage
]);
if (checkResponse($result, 'Upload Pasang Baru')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 28. Upload Bukti Transfer
$testCount++;
echo "$testCount. Testing upload_bukti_transfer...\n";
if (!empty($token)) {
$dummyImage = base64_encode('dummy image data');
$result = makeRequest("$baseUrl/timo/upload_bukti_transfer", 'POST', [
'token' => $token,
'id_pasang_baru' => '1',
'nama_photo' => 'bukti.jpg',
'photo' => $dummyImage
]);
if (checkResponse($result, 'Upload Bukti Transfer')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 29. Upload Baca Mandiri
$testCount++;
echo "$testCount. Testing upload_baca_mandiri...\n";
if (!empty($token)) {
$dummyImage = base64_encode('dummy image data');
$result = makeRequest("$baseUrl/timo/upload_baca_mandiri", 'POST', [
'token' => $token,
'no_sl' => $no_sl,
'nama_photo' => 'baca_mandiri.jpg',
'photo' => $dummyImage,
'angka' => '12345'
]);
if (checkResponse($result, 'Upload Baca Mandiri')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// ============================================
// LAINNYA
// ============================================
echo "=== LAINNYA ===\n\n";
// 30. Promo
$testCount++;
echo "$testCount. Testing promo...\n";
$result = makeRequest("$baseUrl/timo/promo", 'POST', []);
if (checkResponse($result, 'Promo')) $passCount++;
else $failCount++;
echo "\n";
// 31. Riwayat Pasang
$testCount++;
echo "$testCount. Testing riwayat_pasang...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/riwayat_pasang", 'POST', [
'token' => $token
]);
if (checkResponse($result, 'Riwayat Pasang')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 32. Jadwal Catat Meter
$testCount++;
echo "$testCount. Testing jadwal_catat_meter...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/jadwal_catat_meter", 'POST', [
'token' => $token
]);
if (checkResponse($result, 'Jadwal Catat Meter')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// 33. Request Order Baca Mandiri
$testCount++;
echo "$testCount. Testing request_order_baca_mandiri...\n";
if (!empty($token)) {
$result = makeRequest("$baseUrl/timo/request_order_baca_mandiri", 'POST', [
'token' => $token,
'no_sl' => $no_sl
]);
if (checkResponse($result, 'Request Order Baca Mandiri')) $passCount++;
else $failCount++;
} else {
echo " ⚠ Skip: Token tidak tersedia\n";
$failCount++;
}
echo "\n";
// ============================================
// SUMMARY
// ============================================
echo "==========================================\n";
echo " TEST SUMMARY\n";
echo "==========================================\n";
echo "Total Tests: $testCount\n";
echo "Passed: $passCount\n";
echo "Failed: $failCount\n";
echo "Success Rate: " . round(($passCount / $testCount) * 100, 2) . "%\n";
echo "==========================================\n\n";
if ($failCount > 0) {
echo "⚠ Beberapa test gagal. Periksa:\n";
echo " 1. Server API berjalan di $baseUrl\n";
echo " 2. Database connection berfungsi\n";
echo " 3. Data user '$username' ada di database\n";
echo " 4. Nomor SL '$no_sl' valid\n";
echo "\n";
}
echo "Note: Beberapa endpoint mungkin gagal karena:\n";
echo " - Data tidak tersedia di database\n";
echo " - Validasi data yang ketat\n";
echo " - External API tidak tersedia\n";
echo "\n";