Files
api/services/nginx/app/tests/Unit/Auth/CreateTokenTest.php
T
Jeppe Bundgaard 70080086da Add unit tests for Redis namespace safety, MotorAPI cache functionality, and configuration classes, alongside implementation of xlvask_automation_service
- Added tests to ensure Redis namespace safety for `db_object_t` and `users_o`.
- Implemented `MotorApiCachedResultTest` to validate metadata caching behavior.
- Introduced configuration classes for `xlvask_automatic_order_attachment_enabled` and `xlvask_automatic_order_creation_enabled`.
- Developed `xlvask_automation_service` with supporting features for usage log evaluation, suggestion building, and order automation.
2026-05-12 00:22:27 +02:00

90 lines
2.5 KiB
PHP

<?php
it('creates auth tokens and reports missing customer users clearly', function (): void {
$script = tempnam(sys_get_temp_dir(), 'truckwash-create-token-') . '.php';
$appRoot = addslashes(WD);
file_put_contents($script, str_replace('__APP_ROOT__', $appRoot, <<<'PHP'
<?php
namespace {
define('WD', '__APP_ROOT__');
}
namespace objects {
class users_o
{
public int $id;
public static array $existing = [];
public function getUserByCustomerNumber(int $customer_number): self
{
if (in_array($customer_number, self::$existing, true)) {
$this->id = 123;
}
return $this;
}
public function exists(): bool
{
return isset($this->id) && $this->id > 0;
}
}
class tokens_o
{
public static array $created = [];
public function create(int $user_id, string $token, string $type = 'AUTH_TOKEN'): void
{
self::$created[] = compact('user_id', 'token', 'type');
}
}
}
namespace {
require_once WD . '/interfaces/authentication_i.php';
require_once WD . '/classes/authentication.php';
$result = [
'success_token' => null,
'created' => [],
'missing_error' => null,
];
\objects\users_o::$existing = [111111];
\objects\tokens_o::$created = [];
$result['success_token'] = (new \classes\authentication())->create_token(111111);
$result['created'] = \objects\tokens_o::$created;
\objects\users_o::$existing = [];
try {
(new \classes\authentication())->create_token(222222);
} catch (\Throwable $exception) {
$result['missing_error'] = $exception->getMessage();
}
echo json_encode($result, JSON_THROW_ON_ERROR);
}
PHP));
try {
$output = [];
$exitCode = 0;
exec(PHP_BINARY . ' ' . escapeshellarg($script), $output, $exitCode);
expect($exitCode)->toBe(0);
$result = json_decode(implode("\n", $output), true, 512, JSON_THROW_ON_ERROR);
expect($result['success_token'])->toBeString()->toMatch('/^[a-f0-9]{64}$/')
->and($result['created'])->toHaveCount(1)
->and($result['created'][0]['user_id'])->toBe(123)
->and($result['created'][0]['type'])->toBe('AUTH_TOKEN')
->and($result['missing_error'])->toBe('User not found for customer number: 222222');
} finally {
if (is_file($script)) {
unlink($script);
}
}
});