chore: fix pint code style and add test config
Some checks failed
CI / tests (push) Failing after 1m22s
Some checks failed
CI / tests (push) Failing after 1m22s
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 <noreply@anthropic.com>
This commit is contained in:
parent
7c941060a5
commit
f751905f22
32 changed files with 118 additions and 74 deletions
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
39
phpunit.xml
Normal file
39
phpunit.xml
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
||||
bootstrap="vendor/autoload.php"
|
||||
colors="true"
|
||||
cacheDirectory=".phpunit.cache"
|
||||
executionOrder="random"
|
||||
requireCoverageMetadata="false"
|
||||
beStrictAboutCoverageMetadata="false"
|
||||
beStrictAboutOutputDuringTests="true"
|
||||
failOnRisky="true"
|
||||
failOnWarning="true">
|
||||
<testsuites>
|
||||
<testsuite name="Feature">
|
||||
<directory>tests/Feature</directory>
|
||||
</testsuite>
|
||||
<testsuite name="Unit">
|
||||
<directory>tests/Unit</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
<source>
|
||||
<include>
|
||||
<directory>src</directory>
|
||||
</include>
|
||||
</source>
|
||||
<php>
|
||||
<env name="APP_ENV" value="testing"/>
|
||||
<env name="APP_DEBUG" value="true"/>
|
||||
<env name="APP_KEY" value="base64:Kx0qLJZJAQcDSFE2gMpuOlwrJcC6kXHM0j0KJdMGqzQ="/>
|
||||
<env name="BCRYPT_ROUNDS" value="4"/>
|
||||
<env name="CACHE_STORE" value="array"/>
|
||||
<env name="DB_CONNECTION" value="sqlite"/>
|
||||
<env name="DB_DATABASE" value=":memory:"/>
|
||||
<env name="MAIL_MAILER" value="array"/>
|
||||
<env name="QUEUE_CONNECTION" value="sync"/>
|
||||
<env name="SESSION_DRIVER" value="array"/>
|
||||
<env name="TELESCOPE_ENABLED" value="false"/>
|
||||
</php>
|
||||
</phpunit>
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Core\Mod\Uptelligence\View\Modal\Admin\AssetManager;
|
||||
use Core\Mod\Uptelligence\View\Modal\Admin\Dashboard;
|
||||
use Core\Mod\Uptelligence\View\Modal\Admin\DiffViewer;
|
||||
|
|
@ -8,6 +7,7 @@ use Core\Mod\Uptelligence\View\Modal\Admin\DigestPreferences;
|
|||
use Core\Mod\Uptelligence\View\Modal\Admin\TodoList;
|
||||
use Core\Mod\Uptelligence\View\Modal\Admin\VendorManager;
|
||||
use Core\Mod\Uptelligence\View\Modal\Admin\WebhookManager;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ declare(strict_types=1);
|
|||
* Webhook endpoints for receiving vendor release notifications.
|
||||
*/
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Core\Mod\Uptelligence\Controllers\Api\WebhookController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
|
|||
7
tests/Pest.php
Normal file
7
tests/Pest.php
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Orchestra\Testbench\TestCase;
|
||||
|
||||
uses(TestCase::class)->in('Feature', 'Unit');
|
||||
|
|
@ -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]);
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue