You've already forked Php-Template
chore: add deployment configurations and tests for logger and dispatcher
All checks were successful
🧪✨ Tests Workflow / 🛡️ 🔒 License Check (push) Successful in 4m18s
🧪✨ Tests Workflow / 🛡️ 🔒 Library Audit (push) Successful in 4m30s
🧪✨ Tests Workflow / 📝 ✨ Code Lint (push) Successful in 4m21s
🧪✨ Tests Workflow / 🧪 ✨ Database Migrations (push) Successful in 4m35s
🧪✨ Tests Workflow / 🐙 🔍 Code Sniffer (push) Successful in 4m21s
🧪✨ Tests Workflow / 🧪 ✅ Unit Tests (push) Successful in 3m13s
All checks were successful
🧪✨ Tests Workflow / 🛡️ 🔒 License Check (push) Successful in 4m18s
🧪✨ Tests Workflow / 🛡️ 🔒 Library Audit (push) Successful in 4m30s
🧪✨ Tests Workflow / 📝 ✨ Code Lint (push) Successful in 4m21s
🧪✨ Tests Workflow / 🧪 ✨ Database Migrations (push) Successful in 4m35s
🧪✨ Tests Workflow / 🐙 🔍 Code Sniffer (push) Successful in 4m21s
🧪✨ Tests Workflow / 🧪 ✅ Unit Tests (push) Successful in 3m13s
This commit is contained in:
@@ -4,7 +4,7 @@ declare(ticks=1);
|
|||||||
|
|
||||||
namespace Siteworxpro\App\Async;
|
namespace Siteworxpro\App\Async;
|
||||||
|
|
||||||
use Siteworxpro\App\Annotations\Async\HandlesMessage;
|
use Siteworxpro\App\Attributes\Async\HandlesMessage;
|
||||||
use Siteworxpro\App\Async\Messages\Message;
|
use Siteworxpro\App\Async\Messages\Message;
|
||||||
use Siteworxpro\App\Async\Queues\Queue;
|
use Siteworxpro\App\Async\Queues\Queue;
|
||||||
use Siteworxpro\App\Services\Facades\Broker;
|
use Siteworxpro\App\Services\Facades\Broker;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Siteworxpro\App\Async\Handlers;
|
namespace Siteworxpro\App\Async\Handlers;
|
||||||
|
|
||||||
use Siteworxpro\App\Annotations\Async\HandlesMessage;
|
use Siteworxpro\App\Attributes\Async\HandlesMessage;
|
||||||
use Siteworxpro\App\Async\Messages\Message;
|
use Siteworxpro\App\Async\Messages\Message;
|
||||||
use Siteworxpro\App\Async\Messages\SayHelloMessage;
|
use Siteworxpro\App\Async\Messages\SayHelloMessage;
|
||||||
use Siteworxpro\App\Services\Facades\Logger;
|
use Siteworxpro\App\Services\Facades\Logger;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Siteworxpro\App\Annotations\Async;
|
namespace Siteworxpro\App\Attributes\Async;
|
||||||
|
|
||||||
use Attribute;
|
use Attribute;
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Siteworxpro\App\Annotations\Events;
|
namespace Siteworxpro\App\Attributes\Events;
|
||||||
|
|
||||||
use Attribute;
|
use Attribute;
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Siteworxpro\App\Annotations\Guards;
|
namespace Siteworxpro\App\Attributes\Guards;
|
||||||
|
|
||||||
use Attribute;
|
use Attribute;
|
||||||
use Siteworxpro\App\Services\Facades\Config;
|
use Siteworxpro\App\Services\Facades\Config;
|
||||||
@@ -32,16 +32,6 @@ readonly class Jwt
|
|||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the required audience from configuration, ignoring any local override.
|
|
||||||
*
|
|
||||||
* @return string The globally configured audience or an empty string if not set.
|
|
||||||
*/
|
|
||||||
public function getRequiredAudience(): string
|
|
||||||
{
|
|
||||||
return Config::get('jwt.audience') ?? '';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the expected audience for validation.
|
* Get the expected audience for validation.
|
||||||
*
|
*
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace Siteworxpro\App\Annotations\Guards;
|
namespace Siteworxpro\App\Attributes\Guards;
|
||||||
|
|
||||||
use Attribute;
|
use Attribute;
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@ namespace Siteworxpro\App\Controllers;
|
|||||||
|
|
||||||
use Nyholm\Psr7\ServerRequest;
|
use Nyholm\Psr7\ServerRequest;
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use Siteworxpro\App\Annotations\Guards;
|
use Siteworxpro\App\Attributes\Guards;
|
||||||
use Siteworxpro\App\Http\JsonResponseFactory;
|
use Siteworxpro\App\Http\JsonResponseFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace Siteworxpro\App\Events;
|
|||||||
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
|
use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
|
||||||
use Illuminate\Contracts\Support\Arrayable;
|
use Illuminate\Contracts\Support\Arrayable;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Siteworxpro\App\Annotations\Events\ListensFor;
|
use Siteworxpro\App\Attributes\Events\ListensFor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Dispatcher
|
* Class Dispatcher
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Siteworxpro\App\Events\Listeners\Database;
|
|||||||
|
|
||||||
use Illuminate\Database\Events\ConnectionEstablished;
|
use Illuminate\Database\Events\ConnectionEstablished;
|
||||||
use Illuminate\Database\Events\ConnectionEvent;
|
use Illuminate\Database\Events\ConnectionEvent;
|
||||||
use Siteworxpro\App\Annotations\Events\ListensFor;
|
use Siteworxpro\App\Attributes\Events\ListensFor;
|
||||||
use Siteworxpro\App\Events\Listeners\Listener;
|
use Siteworxpro\App\Events\Listeners\Listener;
|
||||||
use Siteworxpro\App\Services\Facades\Logger;
|
use Siteworxpro\App\Services\Facades\Logger;
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ use League\Route\Dispatcher;
|
|||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
use Psr\Http\Server\RequestHandlerInterface;
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
use Siteworxpro\App\Annotations\Guards\Jwt;
|
use Siteworxpro\App\Attributes\Guards\Jwt;
|
||||||
use Siteworxpro\App\Controllers\Controller;
|
use Siteworxpro\App\Controllers\Controller;
|
||||||
use Siteworxpro\App\Http\JsonResponseFactory;
|
use Siteworxpro\App\Http\JsonResponseFactory;
|
||||||
use Siteworxpro\App\Services\Facades\Config;
|
use Siteworxpro\App\Services\Facades\Config;
|
||||||
@@ -103,7 +103,7 @@ class JwtMiddleware extends Middleware
|
|||||||
/** @var Jwt $jwtInstance */
|
/** @var Jwt $jwtInstance */
|
||||||
$jwtInstance = $attribute->newInstance();
|
$jwtInstance = $attribute->newInstance();
|
||||||
|
|
||||||
if ($jwtInstance->getRequiredAudience() !== '') {
|
if ($jwtInstance->getAudience() !== '') {
|
||||||
$requiredAudience = $jwtInstance->getAudience();
|
$requiredAudience = $jwtInstance->getAudience();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use League\Route\Dispatcher;
|
|||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use Psr\Http\Message\ServerRequestInterface;
|
use Psr\Http\Message\ServerRequestInterface;
|
||||||
use Psr\Http\Server\RequestHandlerInterface;
|
use Psr\Http\Server\RequestHandlerInterface;
|
||||||
use Siteworxpro\App\Annotations\Guards\Scope;
|
use Siteworxpro\App\Attributes\Guards\Scope;
|
||||||
use Siteworxpro\App\Controllers\Controller;
|
use Siteworxpro\App\Controllers\Controller;
|
||||||
use Siteworxpro\App\Http\JsonResponseFactory;
|
use Siteworxpro\App\Http\JsonResponseFactory;
|
||||||
use Siteworxpro\HttpStatus\CodesEnum;
|
use Siteworxpro\HttpStatus\CodesEnum;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ use Siteworxpro\App\Services\Facade;
|
|||||||
* It extends the Facade class from the Illuminate\Support\Facades namespace.
|
* It extends the Facade class from the Illuminate\Support\Facades namespace.
|
||||||
*
|
*
|
||||||
* @method static array | bool | string | int | null get(string $key) Retrieve the configuration value for the given key. // @codingStandardsIgnoreStart
|
* @method static array | bool | string | int | null get(string $key) Retrieve the configuration value for the given key. // @codingStandardsIgnoreStart
|
||||||
|
* @method static void set(string $key, mixed $value) Set the configuration value for the given key. // @codingStandardsIgnoreEnd
|
||||||
*
|
*
|
||||||
* @package Siteworx\App\Facades
|
* @package Siteworx\App\Facades
|
||||||
*/
|
*/
|
||||||
|
|||||||
49
tests/Attributes/Guards/JwtTest.php
Normal file
49
tests/Attributes/Guards/JwtTest.php
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Siteworxpro\Tests\Attributes\Guards;
|
||||||
|
|
||||||
|
use Siteworxpro\App\Attributes\Guards\Jwt;
|
||||||
|
use Siteworxpro\App\Services\Facades\Config;
|
||||||
|
use Siteworxpro\Tests\Unit;
|
||||||
|
|
||||||
|
class JwtTest extends Unit
|
||||||
|
{
|
||||||
|
public function testGetsClassFromConfig(): void
|
||||||
|
{
|
||||||
|
Config::set('jwt.issuer', 'default-issuer');
|
||||||
|
Config::set('jwt.audience', 'default-audience');
|
||||||
|
|
||||||
|
$reflection = new \ReflectionClass(TestClass::class);
|
||||||
|
$attributes = $reflection->getAttributes(Jwt::class);
|
||||||
|
$this->assertCount(1, $attributes);
|
||||||
|
|
||||||
|
/** @var Jwt $instance */
|
||||||
|
$instance = $attributes[0]->newInstance();
|
||||||
|
$this->assertEquals('default-audience', $instance->getAudience());
|
||||||
|
$this->assertEquals('default-issuer', $instance->getIssuer());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetsClassFromCustom(): void
|
||||||
|
{
|
||||||
|
$reflection = new \ReflectionClass(TestClassSpecific::class);
|
||||||
|
$attributes = $reflection->getAttributes(Jwt::class);
|
||||||
|
$this->assertCount(1, $attributes);
|
||||||
|
|
||||||
|
/** @var Jwt $instance */
|
||||||
|
$instance = $attributes[0]->newInstance();
|
||||||
|
$this->assertEquals('custom-audience', $instance->getAudience());
|
||||||
|
$this->assertEquals('custom-issuer', $instance->getIssuer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Jwt]
|
||||||
|
class TestClass // @codingStandardsIgnoreLine
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Jwt('custom-issuer', 'custom-audience')]
|
||||||
|
class TestClassSpecific // @codingStandardsIgnoreLine
|
||||||
|
{
|
||||||
|
}
|
||||||
43
tests/Attributes/Guards/ScopeTest.php
Normal file
43
tests/Attributes/Guards/ScopeTest.php
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Siteworxpro\Tests\Attributes\Guards;
|
||||||
|
|
||||||
|
use Siteworxpro\App\Attributes\Guards\Scope;
|
||||||
|
use Siteworxpro\Tests\Unit;
|
||||||
|
|
||||||
|
class ScopeTest extends Unit
|
||||||
|
{
|
||||||
|
public function testGetsClassSingle(): void
|
||||||
|
{
|
||||||
|
$reflection = new \ReflectionClass(TestClassSingle::class);
|
||||||
|
$attributes = $reflection->getAttributes(Scope::class);
|
||||||
|
$this->assertCount(1, $attributes);
|
||||||
|
|
||||||
|
/** @var Scope $instance */
|
||||||
|
$instance = $attributes[0]->newInstance();
|
||||||
|
$this->assertEquals(['read:users'], $instance->getScopes());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetsClassFromCustom(): void
|
||||||
|
{
|
||||||
|
$reflection = new \ReflectionClass(TestClassMultiple::class);
|
||||||
|
$attributes = $reflection->getAttributes(Scope::class);
|
||||||
|
$this->assertCount(1, $attributes);
|
||||||
|
|
||||||
|
/** @var Scope $instance */
|
||||||
|
$instance = $attributes[0]->newInstance();
|
||||||
|
$this->assertEquals(['read:users', 'write:users'], $instance->getScopes());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Scope(['read:users', 'write:users'])]
|
||||||
|
class TestClassMultiple // @codingStandardsIgnoreLine
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#[Scope(['read:users'])]
|
||||||
|
class TestClassSingle // @codingStandardsIgnoreLine
|
||||||
|
{
|
||||||
|
}
|
||||||
27
tests/Attributes/HandlesMessageTest.php
Normal file
27
tests/Attributes/HandlesMessageTest.php
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Siteworxpro\Tests\Attributes;
|
||||||
|
|
||||||
|
use Siteworxpro\App\Attributes\Async\HandlesMessage;
|
||||||
|
use Siteworxpro\Tests\Unit;
|
||||||
|
|
||||||
|
class HandlesMessageTest extends Unit
|
||||||
|
{
|
||||||
|
public function testGetsClass(): void
|
||||||
|
{
|
||||||
|
$reflection = new \ReflectionClass(TestClass::class);
|
||||||
|
$attributes = $reflection->getAttributes(HandlesMessage::class);
|
||||||
|
$this->assertCount(1, $attributes);
|
||||||
|
|
||||||
|
/** @var HandlesMessage $instance */
|
||||||
|
$instance = $attributes[0]->newInstance();
|
||||||
|
$this->assertEquals('Siteworxpro\Tests\Attributes\TestClass', $instance->getMessageClass());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[HandlesMessage('Siteworxpro\Tests\Attributes\TestClass')]
|
||||||
|
class TestClass // @codingStandardsIgnoreLine
|
||||||
|
{
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user