fix: DockerSecretsResolver - don't normalize absolute paths like /var/www/html/...
Some checks failed
Deploy Application / deploy (push) Has been cancelled
Some checks failed
Deploy Application / deploy (push) Has been cancelled
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Framework\Attributes\Execution;
|
||||
|
||||
use App\Framework\Attributes\Execution\AttributeExecutionContext;
|
||||
use App\Framework\Attributes\Execution\CallbackExecutor;
|
||||
use App\Framework\Attributes\Execution\CallbackMetadata;
|
||||
use App\Framework\Attributes\Execution\CallbackType;
|
||||
use App\Framework\Attributes\Execution\Handlers\PermissionGuard;
|
||||
use App\Framework\Attributes\Execution\Policies\Policies;
|
||||
use App\Framework\Attributes\Execution\Policies\UserPolicies;
|
||||
use App\Framework\DI\Container;
|
||||
use App\Framework\DI\DefaultContainer;
|
||||
use App\Framework\DI\MethodInvoker;
|
||||
use App\Framework\Reflection\SimpleReflectionService;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class CallbackExecutorTest extends TestCase
|
||||
{
|
||||
private Container $container;
|
||||
private CallbackExecutor $executor;
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
$this->container = new DefaultContainer();
|
||||
$this->container->instance(MethodInvoker::class, new MethodInvoker(
|
||||
$this->container,
|
||||
new SimpleReflectionService()
|
||||
));
|
||||
$this->executor = new CallbackExecutor($this->container);
|
||||
}
|
||||
|
||||
public function testExecuteHandler(): void
|
||||
{
|
||||
$metadata = CallbackMetadata::fromHandler(PermissionGuard::class, [['edit_post']]);
|
||||
$context = AttributeExecutionContext::forClass(
|
||||
$this->container,
|
||||
\App\Framework\Core\ValueObjects\ClassName::create('TestClass')
|
||||
);
|
||||
|
||||
$result = $this->executor->execute($metadata, $context);
|
||||
|
||||
// PermissionGuard gibt true zurück (Placeholder-Implementierung)
|
||||
$this->assertIsBool($result);
|
||||
}
|
||||
|
||||
public function testExecuteStaticMethod(): void
|
||||
{
|
||||
$metadata = CallbackMetadata::fromCallable([UserPolicies::class, 'isAdmin']);
|
||||
$context = AttributeExecutionContext::forClass(
|
||||
$this->container,
|
||||
\App\Framework\Core\ValueObjects\ClassName::create('TestClass')
|
||||
);
|
||||
|
||||
$result = $this->executor->execute($metadata, $context);
|
||||
|
||||
// UserPolicies::isAdmin gibt bool zurück
|
||||
$this->assertIsBool($result);
|
||||
}
|
||||
|
||||
public function testExecuteFactory(): void
|
||||
{
|
||||
$metadata = CallbackMetadata::fromFactory(
|
||||
Policies::class,
|
||||
'requirePermission',
|
||||
['edit_post']
|
||||
);
|
||||
$context = AttributeExecutionContext::forClass(
|
||||
$this->container,
|
||||
\App\Framework\Core\ValueObjects\ClassName::create('TestClass')
|
||||
);
|
||||
|
||||
$closure = $this->executor->execute($metadata, $context);
|
||||
|
||||
$this->assertInstanceOf(\Closure::class, $closure);
|
||||
|
||||
// Führe Closure aus
|
||||
$result = $closure($context);
|
||||
$this->assertIsBool($result);
|
||||
}
|
||||
|
||||
public function testExecuteThrowsForClosure(): void
|
||||
{
|
||||
$metadata = new CallbackMetadata(CallbackType::CLOSURE, '');
|
||||
$context = AttributeExecutionContext::forClass(
|
||||
$this->container,
|
||||
\App\Framework\Core\ValueObjects\ClassName::create('TestClass')
|
||||
);
|
||||
|
||||
$this->expectException(\RuntimeException::class);
|
||||
$this->expectExceptionMessage('Closure execution not supported via metadata');
|
||||
|
||||
$this->executor->execute($metadata, $context);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user