95 lines
3.3 KiB
PHP
95 lines
3.3 KiB
PHP
<?php
|
|
// test_signed_pricing.php
|
|
// Mock parameters and verify price token generation and booking verification.
|
|
|
|
define('TESTING_BYPASS_AUTH', true);
|
|
|
|
// Set mock POST parameters for pricing estimation
|
|
$_POST['distance'] = "10.5";
|
|
$_POST['durationToRide'] = "1200"; // 20 minutes
|
|
$_POST['passenger_id'] = "12345";
|
|
$_POST['country'] = "Syria";
|
|
$_POST['passengerLat'] = "33.5138";
|
|
$_POST['passengerLng'] = "36.2765";
|
|
$_POST['destLat'] = "33.5200";
|
|
$_POST['destLng'] = "36.2800";
|
|
$_POST['startNameAddress'] = "Malki, Damascus";
|
|
$_POST['endNameAddress'] = "Abu Rummaneh, Damascus";
|
|
$_POST['carType'] = "Speed";
|
|
|
|
echo "=== MOCKING PRICING ESTIMATION (get.php) ===\n";
|
|
|
|
ob_start();
|
|
include __DIR__ . '/ride/pricing/get.php';
|
|
$responseJson = ob_get_clean();
|
|
|
|
echo "Response received:\n" . $responseJson . "\n\n";
|
|
|
|
$response = json_decode($responseJson, true);
|
|
if (!$response || $response['status'] !== 'success' || empty($response['price_token'])) {
|
|
echo "❌ FAILED: Pricing token was not generated successfully.\n";
|
|
exit(1);
|
|
}
|
|
|
|
$priceToken = $response['price_token'];
|
|
$estimatedPrices = $response['data'];
|
|
echo "✅ SUCCESS: Generated price_token successfully!\n";
|
|
echo "Estimated Speed price: " . $estimatedPrices['totalPassengerSpeed'] . "\n\n";
|
|
|
|
// Test 1: Valid Booking with Token
|
|
echo "=== TEST 1: Booking with authentic token and coordinates ===\n";
|
|
$_POST['start_location'] = "33.5138, 36.2765";
|
|
$_POST['end_location'] = "33.5200, 36.2800";
|
|
$_POST['price'] = "99999.00"; // Client attempts to send garbage price, server must override it!
|
|
$_POST['price_token'] = $priceToken;
|
|
$_POST['passenger_id'] = "12345";
|
|
$_POST['carType'] = "Speed";
|
|
$_POST['status'] = "waiting";
|
|
|
|
// Mock other fields for add_ride.php to prevent errors
|
|
$_POST['passenger_name'] = "Hamza";
|
|
$_POST['passenger_phone'] = "+963999999999";
|
|
$_POST['passenger_token'] = "mock_fcm_token";
|
|
$_POST['passenger_email'] = "hamza@siromove.com";
|
|
$_POST['passenger_wallet'] = "0";
|
|
$_POST['passenger_rating'] = "5.0";
|
|
$_POST['start_name'] = "Malki";
|
|
$_POST['end_name'] = "Abu Rummaneh";
|
|
$_POST['duration_text'] = "20 min";
|
|
$_POST['distance_text'] = "10.5 km";
|
|
$_POST['is_wallet'] = "false";
|
|
$_POST['has_steps'] = "false";
|
|
|
|
ob_start();
|
|
include __DIR__ . '/ride/rides/add_ride.php';
|
|
$bookingJson = ob_get_clean();
|
|
|
|
echo "Booking response:\n" . $bookingJson . "\n\n";
|
|
$bookingRes = json_decode($bookingJson, true);
|
|
|
|
if ($bookingRes && $bookingRes['status'] === 'success') {
|
|
echo "✅ TEST 1 PASSED: Booking succeeded and overrode client fare!\n";
|
|
} else {
|
|
echo "❌ TEST 1 FAILED: Booking rejected valid token.\n";
|
|
}
|
|
|
|
// Test 2: Booking with Tampered Coordinates
|
|
echo "=== TEST 2: Booking with mismatched start location coordinates ===\n";
|
|
$_POST['start_location'] = "34.5000, 36.2000"; // Changed start location
|
|
$_POST['price'] = "99999.00";
|
|
$_POST['price_token'] = $priceToken;
|
|
|
|
ob_start();
|
|
include __DIR__ . '/ride/rides/add_ride.php';
|
|
$tamperedJson = ob_get_clean();
|
|
|
|
echo "Tampered response:\n" . $tamperedJson . "\n\n";
|
|
$tamperedRes = json_decode($tamperedJson, true);
|
|
|
|
if ($tamperedRes && $tamperedRes['status'] === 'failure' && strpos($tamperedRes['message'], 'route mismatch') !== false) {
|
|
echo "✅ TEST 2 PASSED: Successfully detected coordinates mismatch and rejected booking!\n";
|
|
} else {
|
|
echo "❌ TEST 2 FAILED: Did not correctly reject mismatched coordinates.\n";
|
|
}
|
|
?>
|