Handle empty inputs in Redis and database operations, improve safety seal validation, and enhance related tests

- Return empty arrays for empty inputs in Redis `mget`, `db_object_t`, and `users_o` operations.
- Refactor safety seal validation logic to handle numeric strings and improve clarity.
- Add unit and API tests to verify handling of empty inputs and numeric safety seal strings.
This commit is contained in:
Jeppe Bundgaard
2026-05-11 04:36:11 +02:00
parent 59a6297925
commit bea7e5697b
7 changed files with 112 additions and 10 deletions
+19 -10
View File
@@ -369,7 +369,7 @@ class orderBookingRoute
* Parameters
*/
$object = self::getTargetObject();
$safetySeal = self::getSafetySeal(false); // Int | Null
$safetySeal = self::getSafetySeal(false);
/**
* Authentication
*/
@@ -505,16 +505,25 @@ class orderBookingRoute
$error = 'Invalid safety seal';
if (!$required && !$this->isParametersSet([$parameter])) return null;
self::requireParameters([$parameter]);
if ($required) {
self::requireType(self::getParameter($parameter), self::type_int());
} else {
self::requireTypeIn(self::getParameter($parameter), [self::type_int(), self::type_null()]);
// Check if the value is null
if ($this->getParameter($parameter) === null) return null;
$rawValue = self::getParameter($parameter);
if (!$required && $rawValue === null) return null;
if (is_string($rawValue)) {
$rawValue = trim($rawValue);
if (!$required && $rawValue === '') return null;
if (!ctype_digit($rawValue)) $response->error($error, 400);
} elseif (!is_int($rawValue)) {
if ($required) {
self::requireType($rawValue, self::type_int());
} else {
self::requireTypeIn($rawValue, [self::type_int(), self::type_null()]);
}
}
self::requireMinLength($parameter, 1);
self::requireMaxLength($parameter, 9);
$value = (int)self::getParameter($parameter);
if ($required || $rawValue !== null) {
$valueLength = strlen((string)$rawValue);
if ($valueLength < 1) $response->error('Parameter ' . $parameter . ' must be at least 1 characters long', 400);
if ($valueLength > 9) $response->error('Parameter ' . $parameter . ' must be at most 9 characters long', 400);
}
$value = (int)$rawValue;
self::requireMinValue($value, 1);
self::requireMaxValue($value, 999999999);
return $value;