<?php
declare(strict_types=1);
use Machweis\Backend\Auth\AuthenticationException;
use Machweis\Backend\Auth\TokenService;
use Machweis\Backend\Config;
use Machweis\Backend\Kernel;
use Machweis\Backend\Logger;
use Machweis\Backend\Request;
require dirname(__DIR__) . '/src/autoload.php';
$config = new Config('test', false, '127.0.0.1', 1, 'unavailable', 'unavailable', 'unavailable', [], false, str_repeat('x', 32), 60, 3600);
$tokens = new TokenService($config);
$kernel = new Kernel($config, new Logger('test'));
foreach (['', 'Bearer invalid-token'] as $authorization) {
$headers = $authorization === '' ? [] : ['authorization' => $authorization];
$response = $kernel->handle(new Request('GET', '/api/v1/sync/pull', $headers));
assert($response->status === 401);
assert($response->body['error']['code'] === 'authentication_failed');
}
$access = $tokens->issueAccess(['sub' => 'user-id', 'tid' => 'tenant-id', 'role' => 'owner']);
$serverFailure = $kernel->handle(new Request('GET', '/api/v1/sync/pull', ['authorization' => 'Bearer ' . $access]));
assert($serverFailure->status === 503);
assert($serverFailure->body['error']['code'] === 'service_unavailable');
try {
$tokens->verifyAccess('invalid-token');
assert(false);
} catch (AuthenticationException) {
}
fwrite(STDOUT, "authentication_status_contract: OK\n");
