From f751905f220ae5c814114267b8d1e7680a8f81a0 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 23 Feb 2026 03:50:07 +0000 Subject: [PATCH] chore: fix pint code style and add test config Add phpunit.xml and tests/Pest.php for standalone test execution. Apply Laravel Pint formatting fixes across all source files. Co-Authored-By: Claude Opus 4.6 --- Console/AnalyzeCommand.php | 2 +- Console/CheckCommand.php | 2 +- Console/CheckUpdatesCommand.php | 2 +- Console/IssuesCommand.php | 2 +- Console/SendDigestsCommand.php | 2 +- Controllers/Api/WebhookController.php | 10 ++--- Jobs/CheckVendorUpdatesJob.php | 6 +-- Jobs/ProcessUptelligenceWebhook.php | 6 +-- Notifications/NewReleaseDetected.php | 2 +- Notifications/SendUptelligenceDigest.php | 2 +- Services/AIAnalyzerService.php | 8 ++-- Services/AssetTrackerService.php | 4 +- Services/DiffAnalyzerService.php | 8 ++-- Services/IssueGeneratorService.php | 6 +-- Services/UpstreamPlanGeneratorService.php | 2 +- Services/UptelligenceDigestService.php | 4 +- Services/VendorStorageService.php | 4 +- Services/VendorUpdateCheckerService.php | 4 +- Services/WebhookReceiverService.php | 2 +- View/Modal/Admin/AssetManager.php | 2 +- View/Modal/Admin/Dashboard.php | 8 ++-- View/Modal/Admin/DiffViewer.php | 6 +-- View/Modal/Admin/DigestPreferences.php | 6 +-- View/Modal/Admin/TodoList.php | 4 +- View/Modal/Admin/VendorManager.php | 4 +- View/Modal/Admin/WebhookManager.php | 6 +-- phpunit.xml | 39 +++++++++++++++++++ routes/admin.php | 2 +- routes/api.php | 2 +- tests/Pest.php | 7 ++++ tests/Unit/WebhookPayloadValidationTest.php | 4 +- .../Unit/WebhookSignatureVerificationTest.php | 24 ++++++------ 32 files changed, 118 insertions(+), 74 deletions(-) create mode 100644 phpunit.xml create mode 100644 tests/Pest.php diff --git a/Console/AnalyzeCommand.php b/Console/AnalyzeCommand.php index 496623e..d168ce9 100644 --- a/Console/AnalyzeCommand.php +++ b/Console/AnalyzeCommand.php @@ -4,11 +4,11 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Console; -use Illuminate\Console\Command; use Core\Mod\Uptelligence\Models\Vendor; use Core\Mod\Uptelligence\Models\VersionRelease; use Core\Mod\Uptelligence\Services\DiffAnalyzerService; use Core\Mod\Uptelligence\Services\VendorStorageService; +use Illuminate\Console\Command; class AnalyzeCommand extends Command { diff --git a/Console/CheckCommand.php b/Console/CheckCommand.php index 0b1093b..4de5f66 100644 --- a/Console/CheckCommand.php +++ b/Console/CheckCommand.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Console; -use Illuminate\Console\Command; use Core\Mod\Uptelligence\Models\Vendor; use Core\Mod\Uptelligence\Services\AssetTrackerService; use Core\Mod\Uptelligence\Services\VendorStorageService; +use Illuminate\Console\Command; class CheckCommand extends Command { diff --git a/Console/CheckUpdatesCommand.php b/Console/CheckUpdatesCommand.php index 1fd89a0..4c3af38 100644 --- a/Console/CheckUpdatesCommand.php +++ b/Console/CheckUpdatesCommand.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Console; -use Illuminate\Console\Command; use Core\Mod\Uptelligence\Models\Vendor; use Core\Mod\Uptelligence\Services\AssetTrackerService; use Core\Mod\Uptelligence\Services\VendorUpdateCheckerService; +use Illuminate\Console\Command; /** * Artisan command to check vendors and assets for upstream updates. diff --git a/Console/IssuesCommand.php b/Console/IssuesCommand.php index da7c4f9..d5b14fa 100644 --- a/Console/IssuesCommand.php +++ b/Console/IssuesCommand.php @@ -4,9 +4,9 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Console; -use Illuminate\Console\Command; use Core\Mod\Uptelligence\Models\UpstreamTodo; use Core\Mod\Uptelligence\Models\Vendor; +use Illuminate\Console\Command; class IssuesCommand extends Command { diff --git a/Console/SendDigestsCommand.php b/Console/SendDigestsCommand.php index c7905da..a54ca6b 100644 --- a/Console/SendDigestsCommand.php +++ b/Console/SendDigestsCommand.php @@ -4,9 +4,9 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Console; -use Illuminate\Console\Command; use Core\Mod\Uptelligence\Models\UptelligenceDigest; use Core\Mod\Uptelligence\Services\UptelligenceDigestService; +use Illuminate\Console\Command; /** * Send Uptelligence digest emails to subscribed users. diff --git a/Controllers/Api/WebhookController.php b/Controllers/Api/WebhookController.php index cb4901c..c148241 100644 --- a/Controllers/Api/WebhookController.php +++ b/Controllers/Api/WebhookController.php @@ -4,14 +4,14 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Controllers\Api; -use Illuminate\Http\Request; -use Illuminate\Http\Response; -use Illuminate\Routing\Controller; -use Illuminate\Support\Facades\Log; use Core\Mod\Uptelligence\Jobs\ProcessUptelligenceWebhook; use Core\Mod\Uptelligence\Models\UptelligenceWebhook; use Core\Mod\Uptelligence\Models\UptelligenceWebhookDelivery; use Core\Mod\Uptelligence\Services\WebhookReceiverService; +use Illuminate\Http\Request; +use Illuminate\Http\Response; +use Illuminate\Routing\Controller; +use Illuminate\Support\Facades\Log; /** * WebhookController - receives incoming vendor release webhooks. @@ -383,7 +383,7 @@ class WebhookController extends Controller 'error' => $validation, ]); - return response('Invalid payload structure: ' . $validation, 400); + return response('Invalid payload structure: '.$validation, 400); } return null; diff --git a/Jobs/CheckVendorUpdatesJob.php b/Jobs/CheckVendorUpdatesJob.php index f3d3b8e..4c7e28a 100644 --- a/Jobs/CheckVendorUpdatesJob.php +++ b/Jobs/CheckVendorUpdatesJob.php @@ -4,15 +4,15 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Jobs; +use Core\Mod\Uptelligence\Models\Vendor; +use Core\Mod\Uptelligence\Services\AssetTrackerService; +use Core\Mod\Uptelligence\Services\VendorUpdateCheckerService; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; -use Core\Mod\Uptelligence\Models\Vendor; -use Core\Mod\Uptelligence\Services\AssetTrackerService; -use Core\Mod\Uptelligence\Services\VendorUpdateCheckerService; /** * Job to check vendors and assets for upstream updates. diff --git a/Jobs/ProcessUptelligenceWebhook.php b/Jobs/ProcessUptelligenceWebhook.php index b47efa2..55c23fc 100644 --- a/Jobs/ProcessUptelligenceWebhook.php +++ b/Jobs/ProcessUptelligenceWebhook.php @@ -4,15 +4,15 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Jobs; +use Core\Mod\Uptelligence\Models\UptelligenceWebhookDelivery; +use Core\Mod\Uptelligence\Notifications\NewReleaseDetected; +use Core\Mod\Uptelligence\Services\WebhookReceiverService; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; -use Core\Mod\Uptelligence\Models\UptelligenceWebhookDelivery; -use Core\Mod\Uptelligence\Notifications\NewReleaseDetected; -use Core\Mod\Uptelligence\Services\WebhookReceiverService; /** * ProcessUptelligenceWebhook - async processing of incoming vendor webhooks. diff --git a/Notifications/NewReleaseDetected.php b/Notifications/NewReleaseDetected.php index 48b30ab..927af6f 100644 --- a/Notifications/NewReleaseDetected.php +++ b/Notifications/NewReleaseDetected.php @@ -4,11 +4,11 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Notifications; +use Core\Mod\Uptelligence\Models\Vendor; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Notification; -use Core\Mod\Uptelligence\Models\Vendor; /** * NewReleaseDetected - notification when a vendor releases a new version. diff --git a/Notifications/SendUptelligenceDigest.php b/Notifications/SendUptelligenceDigest.php index 49c2324..6e91586 100644 --- a/Notifications/SendUptelligenceDigest.php +++ b/Notifications/SendUptelligenceDigest.php @@ -4,12 +4,12 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Notifications; +use Core\Mod\Uptelligence\Models\UptelligenceDigest; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Notification; use Illuminate\Support\Collection; -use Core\Mod\Uptelligence\Models\UptelligenceDigest; /** * SendUptelligenceDigest - email notification for vendor update summaries. diff --git a/Services/AIAnalyzerService.php b/Services/AIAnalyzerService.php index 0b2110e..c5ed610 100644 --- a/Services/AIAnalyzerService.php +++ b/Services/AIAnalyzerService.php @@ -4,14 +4,14 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; -use Illuminate\Support\Collection; -use Illuminate\Support\Facades\Http; -use Illuminate\Support\Facades\Log; -use Illuminate\Support\Facades\RateLimiter; use Core\Mod\Uptelligence\Models\AnalysisLog; use Core\Mod\Uptelligence\Models\DiffCache; use Core\Mod\Uptelligence\Models\UpstreamTodo; use Core\Mod\Uptelligence\Models\VersionRelease; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\RateLimiter; /** * AI Analyzer Service - uses AI to analyse version releases and create todos. diff --git a/Services/AssetTrackerService.php b/Services/AssetTrackerService.php index 51eae32..b3ebe73 100644 --- a/Services/AssetTrackerService.php +++ b/Services/AssetTrackerService.php @@ -5,12 +5,12 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; use Carbon\Carbon; +use Core\Mod\Uptelligence\Models\Asset; +use Core\Mod\Uptelligence\Models\AssetVersion; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Process; use Illuminate\Support\Facades\RateLimiter; -use Core\Mod\Uptelligence\Models\Asset; -use Core\Mod\Uptelligence\Models\AssetVersion; /** * Asset Tracker Service - monitors and updates package dependencies. diff --git a/Services/DiffAnalyzerService.php b/Services/DiffAnalyzerService.php index e638784..cc45ad7 100644 --- a/Services/DiffAnalyzerService.php +++ b/Services/DiffAnalyzerService.php @@ -4,16 +4,16 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; +use Core\Mod\Uptelligence\Models\AnalysisLog; +use Core\Mod\Uptelligence\Models\DiffCache; +use Core\Mod\Uptelligence\Models\Vendor; +use Core\Mod\Uptelligence\Models\VersionRelease; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Process; use InvalidArgumentException; -use Core\Mod\Uptelligence\Models\AnalysisLog; -use Core\Mod\Uptelligence\Models\DiffCache; -use Core\Mod\Uptelligence\Models\Vendor; -use Core\Mod\Uptelligence\Models\VersionRelease; /** * Diff Analyzer Service - analyses differences between vendor versions. diff --git a/Services/IssueGeneratorService.php b/Services/IssueGeneratorService.php index 18649dd..5ccdb9f 100644 --- a/Services/IssueGeneratorService.php +++ b/Services/IssueGeneratorService.php @@ -4,14 +4,14 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; +use Core\Mod\Uptelligence\Models\AnalysisLog; +use Core\Mod\Uptelligence\Models\UpstreamTodo; +use Core\Mod\Uptelligence\Models\Vendor; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\RateLimiter; use InvalidArgumentException; -use Core\Mod\Uptelligence\Models\AnalysisLog; -use Core\Mod\Uptelligence\Models\UpstreamTodo; -use Core\Mod\Uptelligence\Models\Vendor; /** * Issue Generator Service - creates GitHub/Gitea issues from upstream todos. diff --git a/Services/UpstreamPlanGeneratorService.php b/Services/UpstreamPlanGeneratorService.php index eb1ee44..bbd38c5 100644 --- a/Services/UpstreamPlanGeneratorService.php +++ b/Services/UpstreamPlanGeneratorService.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; -use Illuminate\Support\Collection; use Core\Mod\Uptelligence\Models\UpstreamTodo; use Core\Mod\Uptelligence\Models\Vendor; use Core\Mod\Uptelligence\Models\VersionRelease; +use Illuminate\Support\Collection; /** * Upstream Plan Generator Service - creates agent plans from version release analysis. diff --git a/Services/UptelligenceDigestService.php b/Services/UptelligenceDigestService.php index 69188c4..6386e17 100644 --- a/Services/UptelligenceDigestService.php +++ b/Services/UptelligenceDigestService.php @@ -4,13 +4,13 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; -use Illuminate\Support\Collection; -use Illuminate\Support\Facades\Log; use Core\Mod\Uptelligence\Models\UpstreamTodo; use Core\Mod\Uptelligence\Models\UptelligenceDigest; use Core\Mod\Uptelligence\Models\Vendor; use Core\Mod\Uptelligence\Models\VersionRelease; use Core\Mod\Uptelligence\Notifications\SendUptelligenceDigest; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Log; /** * UptelligenceDigestService - generates and sends digest email notifications. diff --git a/Services/VendorStorageService.php b/Services/VendorStorageService.php index 1766c76..de7f019 100644 --- a/Services/VendorStorageService.php +++ b/Services/VendorStorageService.php @@ -4,12 +4,12 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; +use Core\Mod\Uptelligence\Models\Vendor; +use Core\Mod\Uptelligence\Models\VersionRelease; use Illuminate\Contracts\Filesystem\Filesystem; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; -use Core\Mod\Uptelligence\Models\Vendor; -use Core\Mod\Uptelligence\Models\VersionRelease; use RuntimeException; use Symfony\Component\Process\Process; diff --git a/Services/VendorUpdateCheckerService.php b/Services/VendorUpdateCheckerService.php index 2c0f146..d483c61 100644 --- a/Services/VendorUpdateCheckerService.php +++ b/Services/VendorUpdateCheckerService.php @@ -4,11 +4,11 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; +use Core\Mod\Uptelligence\Models\UpstreamTodo; +use Core\Mod\Uptelligence\Models\Vendor; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\RateLimiter; -use Core\Mod\Uptelligence\Models\UpstreamTodo; -use Core\Mod\Uptelligence\Models\Vendor; /** * Vendor Update Checker Service - checks upstream sources for new releases. diff --git a/Services/WebhookReceiverService.php b/Services/WebhookReceiverService.php index f8aff71..782251a 100644 --- a/Services/WebhookReceiverService.php +++ b/Services/WebhookReceiverService.php @@ -4,11 +4,11 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Services; -use Illuminate\Support\Facades\Log; use Core\Mod\Uptelligence\Models\UptelligenceWebhook; use Core\Mod\Uptelligence\Models\UptelligenceWebhookDelivery; use Core\Mod\Uptelligence\Models\Vendor; use Core\Mod\Uptelligence\Models\VersionRelease; +use Illuminate\Support\Facades\Log; /** * WebhookReceiverService - processes incoming vendor release webhooks. diff --git a/View/Modal/Admin/AssetManager.php b/View/Modal/Admin/AssetManager.php index 3d2632b..0ce311b 100644 --- a/View/Modal/Admin/AssetManager.php +++ b/View/Modal/Admin/AssetManager.php @@ -4,13 +4,13 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\View\Modal\Admin; +use Core\Mod\Uptelligence\Models\Asset; use Illuminate\Contracts\View\View; use Livewire\Attributes\Computed; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; use Livewire\WithPagination; -use Core\Mod\Uptelligence\Models\Asset; #[Title('Asset Manager')] class AssetManager extends Component diff --git a/View/Modal/Admin/Dashboard.php b/View/Modal/Admin/Dashboard.php index 1236d55..1843315 100644 --- a/View/Modal/Admin/Dashboard.php +++ b/View/Modal/Admin/Dashboard.php @@ -4,14 +4,14 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\View\Modal\Admin; -use Illuminate\Contracts\View\View; -use Livewire\Attributes\Computed; -use Livewire\Attributes\Title; -use Livewire\Component; use Core\Mod\Uptelligence\Models\Asset; use Core\Mod\Uptelligence\Models\UpstreamTodo; use Core\Mod\Uptelligence\Models\Vendor; use Core\Mod\Uptelligence\Models\VersionRelease; +use Illuminate\Contracts\View\View; +use Livewire\Attributes\Computed; +use Livewire\Attributes\Title; +use Livewire\Component; #[Title('Uptelligence Dashboard')] class Dashboard extends Component diff --git a/View/Modal/Admin/DiffViewer.php b/View/Modal/Admin/DiffViewer.php index b0e7f1e..35712e2 100644 --- a/View/Modal/Admin/DiffViewer.php +++ b/View/Modal/Admin/DiffViewer.php @@ -4,15 +4,15 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\View\Modal\Admin; +use Core\Mod\Uptelligence\Models\DiffCache; +use Core\Mod\Uptelligence\Models\Vendor; +use Core\Mod\Uptelligence\Models\VersionRelease; use Illuminate\Contracts\View\View; use Livewire\Attributes\Computed; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; use Livewire\WithPagination; -use Core\Mod\Uptelligence\Models\DiffCache; -use Core\Mod\Uptelligence\Models\Vendor; -use Core\Mod\Uptelligence\Models\VersionRelease; #[Title('Diff Viewer')] class DiffViewer extends Component diff --git a/View/Modal/Admin/DigestPreferences.php b/View/Modal/Admin/DigestPreferences.php index 673ab41..b264fcf 100644 --- a/View/Modal/Admin/DigestPreferences.php +++ b/View/Modal/Admin/DigestPreferences.php @@ -4,13 +4,13 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\View\Modal\Admin; +use Core\Mod\Uptelligence\Models\UptelligenceDigest; +use Core\Mod\Uptelligence\Models\Vendor; +use Core\Mod\Uptelligence\Services\UptelligenceDigestService; use Illuminate\Contracts\View\View; use Livewire\Attributes\Computed; use Livewire\Attributes\Title; use Livewire\Component; -use Core\Mod\Uptelligence\Models\UptelligenceDigest; -use Core\Mod\Uptelligence\Models\Vendor; -use Core\Mod\Uptelligence\Services\UptelligenceDigestService; #[Title('Digest Preferences')] class DigestPreferences extends Component diff --git a/View/Modal/Admin/TodoList.php b/View/Modal/Admin/TodoList.php index 92062a3..8521eef 100644 --- a/View/Modal/Admin/TodoList.php +++ b/View/Modal/Admin/TodoList.php @@ -4,14 +4,14 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\View\Modal\Admin; +use Core\Mod\Uptelligence\Models\UpstreamTodo; +use Core\Mod\Uptelligence\Models\Vendor; use Illuminate\Contracts\View\View; use Livewire\Attributes\Computed; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; use Livewire\WithPagination; -use Core\Mod\Uptelligence\Models\UpstreamTodo; -use Core\Mod\Uptelligence\Models\Vendor; #[Title('Upstream Todos')] class TodoList extends Component diff --git a/View/Modal/Admin/VendorManager.php b/View/Modal/Admin/VendorManager.php index 299cfd5..cb8140e 100644 --- a/View/Modal/Admin/VendorManager.php +++ b/View/Modal/Admin/VendorManager.php @@ -4,14 +4,14 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\View\Modal\Admin; +use Core\Mod\Uptelligence\Models\Vendor; +use Core\Mod\Uptelligence\Models\VersionRelease; use Illuminate\Contracts\View\View; use Livewire\Attributes\Computed; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; use Livewire\WithPagination; -use Core\Mod\Uptelligence\Models\Vendor; -use Core\Mod\Uptelligence\Models\VersionRelease; #[Title('Vendor Manager')] class VendorManager extends Component diff --git a/View/Modal/Admin/WebhookManager.php b/View/Modal/Admin/WebhookManager.php index 8251585..d10c84f 100644 --- a/View/Modal/Admin/WebhookManager.php +++ b/View/Modal/Admin/WebhookManager.php @@ -4,15 +4,15 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\View\Modal\Admin; +use Core\Mod\Uptelligence\Models\UptelligenceWebhook; +use Core\Mod\Uptelligence\Models\UptelligenceWebhookDelivery; +use Core\Mod\Uptelligence\Models\Vendor; use Illuminate\Contracts\View\View; use Livewire\Attributes\Computed; use Livewire\Attributes\Title; use Livewire\Attributes\Url; use Livewire\Component; use Livewire\WithPagination; -use Core\Mod\Uptelligence\Models\UptelligenceWebhook; -use Core\Mod\Uptelligence\Models\UptelligenceWebhookDelivery; -use Core\Mod\Uptelligence\Models\Vendor; #[Title('Webhook Manager')] class WebhookManager extends Component diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..cb23fe0 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,39 @@ + + + + + tests/Feature + + + tests/Unit + + + + + src + + + + + + + + + + + + + + + + diff --git a/routes/admin.php b/routes/admin.php index 0d9a582..e115ba2 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -1,6 +1,5 @@ in('Feature', 'Unit'); diff --git a/tests/Unit/WebhookPayloadValidationTest.php b/tests/Unit/WebhookPayloadValidationTest.php index a88e1db..f14e6cb 100644 --- a/tests/Unit/WebhookPayloadValidationTest.php +++ b/tests/Unit/WebhookPayloadValidationTest.php @@ -5,9 +5,7 @@ declare(strict_types=1); namespace Core\Mod\Uptelligence\Tests\Unit; use Core\Mod\Uptelligence\Controllers\Api\WebhookController; -use Core\Mod\Uptelligence\Models\UptelligenceWebhook; use Core\Mod\Uptelligence\Services\WebhookReceiverService; -use Illuminate\Http\Request; use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\Test; use ReflectionClass; @@ -133,7 +131,7 @@ class WebhookPayloadValidationTest extends \Orchestra\Testbench\TestCase // Create JSON with 35 levels of nesting (exceeds max depth of 32) $nested = '"value"'; for ($i = 0; $i < 35; $i++) { - $nested = '{"level' . $i . '":' . $nested . '}'; + $nested = '{"level'.$i.'":'.$nested.'}'; } $result = $this->invokeMethod($this->controller, 'parseAndValidateJson', [$nested, 1]); diff --git a/tests/Unit/WebhookSignatureVerificationTest.php b/tests/Unit/WebhookSignatureVerificationTest.php index a01967f..a366673 100644 --- a/tests/Unit/WebhookSignatureVerificationTest.php +++ b/tests/Unit/WebhookSignatureVerificationTest.php @@ -34,8 +34,8 @@ class WebhookSignatureVerificationTest extends \Orchestra\Testbench\TestCase ]); $payload = '{"action":"published","release":{"tag_name":"v1.0.0"}}'; - $validSignature = 'sha256=' . hash_hmac('sha256', $payload, 'test-secret-key'); - $invalidSignature = 'sha256=' . hash_hmac('sha256', $payload, 'wrong-secret'); + $validSignature = 'sha256='.hash_hmac('sha256', $payload, 'test-secret-key'); + $invalidSignature = 'sha256='.hash_hmac('sha256', $payload, 'wrong-secret'); // Valid signature should pass $this->assertTrue($webhook->verifySignature($payload, $validSignature)); @@ -119,7 +119,7 @@ class WebhookSignatureVerificationTest extends \Orchestra\Testbench\TestCase ]); $payload = '{"version":"2.0.0","event":"release"}'; - $validSignature = 'sha256=' . hash_hmac('sha256', $payload, 'custom-secret-key'); + $validSignature = 'sha256='.hash_hmac('sha256', $payload, 'custom-secret-key'); $this->assertTrue($webhook->verifySignature($payload, $validSignature)); $this->assertFalse($webhook->verifySignature($payload, 'sha256=invalid')); @@ -177,9 +177,9 @@ class WebhookSignatureVerificationTest extends \Orchestra\Testbench\TestCase $payload = '{"test":"payload"}'; // Both old and new secrets should work during grace period - $newSignature = 'sha256=' . hash_hmac('sha256', $payload, 'new-secret'); - $oldSignature = 'sha256=' . hash_hmac('sha256', $payload, 'old-secret'); - $wrongSignature = 'sha256=' . hash_hmac('sha256', $payload, 'wrong-secret'); + $newSignature = 'sha256='.hash_hmac('sha256', $payload, 'new-secret'); + $oldSignature = 'sha256='.hash_hmac('sha256', $payload, 'old-secret'); + $wrongSignature = 'sha256='.hash_hmac('sha256', $payload, 'wrong-secret'); $this->assertTrue($webhook->verifySignature($payload, $newSignature)); $this->assertTrue($webhook->verifySignature($payload, $oldSignature)); @@ -202,8 +202,8 @@ class WebhookSignatureVerificationTest extends \Orchestra\Testbench\TestCase $payload = '{"test":"payload"}'; - $newSignature = 'sha256=' . hash_hmac('sha256', $payload, 'new-secret'); - $oldSignature = 'sha256=' . hash_hmac('sha256', $payload, 'old-secret'); + $newSignature = 'sha256='.hash_hmac('sha256', $payload, 'new-secret'); + $oldSignature = 'sha256='.hash_hmac('sha256', $payload, 'old-secret'); $this->assertTrue($webhook->verifySignature($payload, $newSignature)); $this->assertFalse($webhook->verifySignature($payload, $oldSignature)); @@ -257,7 +257,7 @@ class WebhookSignatureVerificationTest extends \Orchestra\Testbench\TestCase // Payload with null bytes and binary data $binaryPayload = "binary\x00payload\xff\xfe"; - $validSignature = 'sha256=' . hash_hmac('sha256', $binaryPayload, 'binary-secret'); + $validSignature = 'sha256='.hash_hmac('sha256', $binaryPayload, 'binary-secret'); $this->assertTrue($webhook->verifySignature($binaryPayload, $validSignature)); } @@ -274,7 +274,7 @@ class WebhookSignatureVerificationTest extends \Orchestra\Testbench\TestCase ]); $emptyPayload = ''; - $validSignature = 'sha256=' . hash_hmac('sha256', $emptyPayload, 'empty-payload-secret'); + $validSignature = 'sha256='.hash_hmac('sha256', $emptyPayload, 'empty-payload-secret'); $this->assertTrue($webhook->verifySignature($emptyPayload, $validSignature)); } @@ -291,8 +291,8 @@ class WebhookSignatureVerificationTest extends \Orchestra\Testbench\TestCase ]); // 1MB payload - $largePayload = str_repeat('{"data":"' . str_repeat('x', 1000) . '"}', 1000); - $validSignature = 'sha256=' . hash_hmac('sha256', $largePayload, 'large-payload-secret'); + $largePayload = str_repeat('{"data":"'.str_repeat('x', 1000).'"}', 1000); + $validSignature = 'sha256='.hash_hmac('sha256', $largePayload, 'large-payload-secret'); $this->assertTrue($webhook->verifySignature($largePayload, $validSignature)); }