mirror of
https://github.com/FOSSBilling/FOSSBilling.git
synced 2026-11-03 18:46:55 +09:00
Fix TypeError in Server_Manager::getPasswordLength() _config['passwordLength'] is untyped, and stored server configs have been observed carrying a numeric string rather than an int, which violates this method's declared int return type. Cast defensively at the boundary. Confirmed live via Sentry (FOSSBILLING-MZA): ~7,800 occurrences since June, still ongoing, always fatal to the whole cron run because the error propagates out of order activation uncaught.
24 lines
784 B
PHP
24 lines
784 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
test('getPasswordLength returns the default when not configured', function (): void {
|
|
$manager = new Server_Manager_Custom([]);
|
|
|
|
expect($manager->getPasswordLength())->toBe(10);
|
|
});
|
|
|
|
test('getPasswordLength returns an int when configured with an int', function (): void {
|
|
$manager = new Server_Manager_Custom(['passwordLength' => 16]);
|
|
|
|
expect($manager->getPasswordLength())->toBe(16);
|
|
});
|
|
|
|
test('getPasswordLength coerces a numeric string to int', function (): void {
|
|
// Guards against FOSSBILLING-MZA: a numeric string stored in the server
|
|
// configuration must not violate the `int` return type.
|
|
$manager = new Server_Manager_Custom(['passwordLength' => '12']);
|
|
|
|
expect($manager->getPasswordLength())->toBe(12);
|
|
});
|