chore: fix pint code style and add test config
Some checks failed
CI / tests (push) Failing after 1m24s

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:
Claude 2026-02-23 03:50:06 +00:00
parent a955a4b4c1
commit 12bb5509d5
No known key found for this signature in database
GPG key ID: AF404715446AEB41
47 changed files with 128 additions and 94 deletions

View file

@ -8,11 +8,11 @@ use Core\Events\ApiRoutesRegistering;
use Core\Events\ConsoleBooting;
use Core\Events\McpToolsRegistering;
use Core\Events\WebRoutesRegistering;
use Core\Mod\Content\Services\HtmlSanitiser;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\ServiceProvider;
use Core\Mod\Content\Services\HtmlSanitiser;
use RuntimeException;
/**

View file

@ -4,13 +4,13 @@ declare(strict_types=1);
namespace Core\Mod\Content\Console\Commands;
use Carbon\Carbon;
use Core\Mod\Content\Enums\ContentType;
use Core\Mod\Content\Models\ContentAuthor;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentMedia;
use Core\Mod\Content\Models\ContentTaxonomy;
use Core\Tenant\Models\Workspace;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Storage;

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Content\Console\Commands;
use Core\Mod\Content\Services\WebhookRetryService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use Core\Mod\Content\Services\WebhookRetryService;
/**
* ProcessPendingWebhooks

View file

@ -4,8 +4,8 @@ declare(strict_types=1);
namespace Core\Mod\Content\Console\Commands;
use Illuminate\Console\Command;
use Core\Mod\Content\Models\ContentRevision;
use Illuminate\Console\Command;
/**
* Prune old content revisions based on retention policy.

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Content\Console\Commands;
use Core\Mod\Content\Models\ContentItem;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use Core\Mod\Content\Models\ContentItem;
/**
* PublishScheduledContent

View file

@ -4,13 +4,13 @@ declare(strict_types=1);
namespace Core\Mod\Content\Controllers\Api;
use Core\Front\Controller;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Core\Api\Concerns\HasApiResponses;
use Core\Api\Concerns\ResolvesWorkspace;
use Core\Front\Controller;
use Core\Mod\Content\Models\ContentBrief;
use Core\Mod\Content\Resources\ContentBriefResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
/**
* Content Brief API Controller

View file

@ -4,14 +4,14 @@ declare(strict_types=1);
namespace Core\Mod\Content\Controllers\Api;
use Core\Front\Controller;
use Core\Api\Concerns\HasApiResponses;
use Core\Api\Concerns\ResolvesWorkspace;
use Core\Front\Controller;
use Core\Mod\Content\Models\ContentMedia;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Core\Mod\Content\Models\ContentMedia;
/**
* Content Media API Controller

View file

@ -4,14 +4,14 @@ declare(strict_types=1);
namespace Core\Mod\Content\Controllers\Api;
use Core\Front\Controller;
use Core\Api\Concerns\HasApiResponses;
use Core\Api\Concerns\ResolvesWorkspace;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Core\Front\Controller;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentRevision;
use Core\Mod\Content\Resources\ContentRevisionResource;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
/**
* Content Revision API Controller

View file

@ -4,12 +4,12 @@ declare(strict_types=1);
namespace Core\Mod\Content\Controllers\Api;
use Core\Front\Controller;
use Core\Api\Concerns\HasApiResponses;
use Core\Api\Concerns\ResolvesWorkspace;
use Core\Front\Controller;
use Core\Mod\Content\Services\ContentSearchService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Core\Mod\Content\Services\ContentSearchService;
/**
* Content Search API Controller

View file

@ -4,14 +4,13 @@ declare(strict_types=1);
namespace Core\Mod\Content\Controllers\Api;
use Core\Mod\Content\Jobs\ProcessContentWebhook;
use Core\Mod\Content\Models\ContentWebhookEndpoint;
use Core\Mod\Content\Services\WebhookDeliveryLogger;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Log;
use Core\Mod\Content\Jobs\ProcessContentWebhook;
use Core\Mod\Content\Models\ContentWebhookEndpoint;
use Core\Mod\Content\Models\ContentWebhookLog;
use Core\Mod\Content\Services\WebhookDeliveryLogger;
/**
* Controller for receiving external content webhooks.
@ -29,8 +28,7 @@ class ContentWebhookController extends Controller
{
public function __construct(
protected WebhookDeliveryLogger $deliveryLogger
) {
}
) {}
/**
* Receive a webhook from an external source.
@ -295,5 +293,4 @@ class ContentWebhookController extends Controller
return 'wordpress.post_updated';
}
}

View file

@ -4,16 +4,16 @@ declare(strict_types=1);
namespace Core\Mod\Content\Controllers\Api;
use Core\Front\Controller;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Core\Api\Concerns\HasApiResponses;
use Core\Api\Concerns\ResolvesWorkspace;
use Core\Front\Controller;
use Core\Mod\Content\Jobs\GenerateContentJob;
use Core\Mod\Content\Models\AIUsage;
use Core\Mod\Content\Models\ContentBrief;
use Core\Mod\Content\Resources\ContentBriefResource;
use Core\Mod\Content\Services\AIGatewayService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
/**
* Content Generation API Controller

View file

@ -4,11 +4,11 @@ declare(strict_types=1);
namespace Core\Mod\Content\Controllers;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\Workspace;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Core\Mod\Content\Models\ContentItem;
/**
* ContentPreviewController - Preview draft content before publishing.

View file

@ -4,14 +4,14 @@ declare(strict_types=1);
namespace Core\Mod\Content\Jobs;
use Core\Mod\Content\Models\ContentBrief;
use Core\Mod\Content\Services\AIGatewayService;
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\Content\Models\ContentBrief;
use Core\Mod\Content\Services\AIGatewayService;
/**
* GenerateContentJob

View file

@ -4,18 +4,18 @@ declare(strict_types=1);
namespace Core\Mod\Content\Jobs;
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\Content\Enums\ContentType;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentMedia;
use Core\Mod\Content\Models\ContentTaxonomy;
use Core\Mod\Content\Models\ContentWebhookEndpoint;
use Core\Mod\Content\Models\ContentWebhookLog;
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;
/**
* Process incoming content webhooks.

View file

@ -7,14 +7,14 @@ namespace Core\Mod\Content\Mcp\Handlers;
use Carbon\Carbon;
use Core\Front\Mcp\Contracts\McpToolHandler;
use Core\Front\Mcp\McpContext;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\EntitlementService;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Core\Mod\Content\Enums\ContentType;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentRevision;
use Core\Mod\Content\Models\ContentTaxonomy;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\EntitlementService;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
/**
* MCP tool handler for creating content items.

View file

@ -6,10 +6,10 @@ namespace Core\Mod\Content\Mcp\Handlers;
use Core\Front\Mcp\Contracts\McpToolHandler;
use Core\Front\Mcp\McpContext;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Auth;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentRevision;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Auth;
/**
* MCP tool handler for deleting content items.

View file

@ -6,9 +6,9 @@ namespace Core\Mod\Content\Mcp\Handlers;
use Core\Front\Mcp\Contracts\McpToolHandler;
use Core\Front\Mcp\McpContext;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Str;
use Core\Mod\Content\Models\ContentItem;
/**
* MCP tool handler for listing content items.

View file

@ -6,8 +6,8 @@ namespace Core\Mod\Content\Mcp\Handlers;
use Core\Front\Mcp\Contracts\McpToolHandler;
use Core\Front\Mcp\McpContext;
use Core\Tenant\Models\Workspace;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\Workspace;
/**
* MCP tool handler for reading content items.

View file

@ -6,9 +6,9 @@ namespace Core\Mod\Content\Mcp\Handlers;
use Core\Front\Mcp\Contracts\McpToolHandler;
use Core\Front\Mcp\McpContext;
use Core\Mod\Content\Services\ContentSearchService;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Str;
use Core\Mod\Content\Services\ContentSearchService;
/**
* MCP tool handler for searching content.

View file

@ -6,8 +6,8 @@ namespace Core\Mod\Content\Mcp\Handlers;
use Core\Front\Mcp\Contracts\McpToolHandler;
use Core\Front\Mcp\McpContext;
use Core\Tenant\Models\Workspace;
use Core\Mod\Content\Models\ContentTaxonomy;
use Core\Tenant\Models\Workspace;
/**
* MCP tool handler for listing content taxonomies.

View file

@ -7,12 +7,12 @@ namespace Core\Mod\Content\Mcp\Handlers;
use Carbon\Carbon;
use Core\Front\Mcp\Contracts\McpToolHandler;
use Core\Front\Mcp\McpContext;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentRevision;
use Core\Mod\Content\Models\ContentTaxonomy;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
/**
* MCP tool handler for updating content items.

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Content\Middleware;
use Closure;
use Core\Mod\Content\Services\ContentRender;
use Core\Tenant\Models\Workspace;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

View file

@ -4,11 +4,11 @@ declare(strict_types=1);
namespace Core\Mod\Content\Models;
use Core\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\MorphTo;
use Core\Tenant\Models\Workspace;
/**
* AIUsage Model

View file

@ -4,12 +4,12 @@ declare(strict_types=1);
namespace Core\Mod\Content\Models;
use Core\Mod\Content\Enums\BriefContentType;
use Core\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Core\Mod\Content\Enums\BriefContentType;
use Core\Tenant\Models\Workspace;
/**
* ContentBrief Model

View file

@ -4,9 +4,12 @@ declare(strict_types=1);
namespace Core\Mod\Content\Models;
use Core\Mod\Content\Enums\ContentType;
use Core\Mod\Content\Observers\ContentItemObserver;
use Core\Mod\Content\Services\HtmlSanitiser;
use Core\Seo\HasSeoMetadata;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Seo\HasSeoMetadata;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@ -14,9 +17,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use Core\Mod\Content\Enums\ContentType;
use Core\Mod\Content\Observers\ContentItemObserver;
use Core\Mod\Content\Services\HtmlSanitiser;
#[ObservedBy([ContentItemObserver::class])]
class ContentItem extends Model

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Content\Observers;
use Illuminate\Support\Facades\Log;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Services\CdnPurgeService;
use Illuminate\Support\Facades\Log;
/**
* Content Item Observer - handles CDN cache purging on content changes.

View file

@ -4,8 +4,8 @@ declare(strict_types=1);
namespace Core\Mod\Content\Services;
use Illuminate\Support\Facades\Log;
use Core\Mod\Content\Models\ContentItem;
use Illuminate\Support\Facades\Log;
use Plug\Cdn\CdnManager;
use Plug\Response;

View file

@ -5,12 +5,12 @@ declare(strict_types=1);
namespace Core\Mod\Content\Services;
use Core\Front\Controller;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\Workspace;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Log;
use Illuminate\View\View;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\Workspace;
/**
* ContentRender - Public workspace frontend renderer.

View file

@ -5,12 +5,12 @@ declare(strict_types=1);
namespace Core\Mod\Content\Services;
use Carbon\Carbon;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\Workspace;
use Illuminate\Contracts\Pagination\LengthAwarePaginator;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Collection;
use Illuminate\Support\Str;
use Core\Mod\Content\Models\ContentItem;
/**
* Content Search Service

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Content\Services;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Core\Mod\Content\Models\ContentWebhookEndpoint;
use Core\Mod\Content\Models\ContentWebhookLog;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
/**
* WebhookDeliveryLogger
@ -43,7 +43,6 @@ class WebhookDeliveryLogger
* @param int $durationMs Processing duration in milliseconds
* @param int|null $responseCode HTTP response code if applicable
* @param string|null $responseBody Response body if applicable
* @return void
*/
public function logSuccess(
ContentWebhookLog $webhookLog,
@ -74,7 +73,6 @@ class WebhookDeliveryLogger
* @param int $durationMs Processing duration in milliseconds
* @param int|null $responseCode HTTP response code if applicable
* @param string|null $responseBody Response body if applicable
* @return void
*/
public function logFailure(
ContentWebhookLog $webhookLog,
@ -128,7 +126,7 @@ class WebhookDeliveryLogger
'source_ip' => $request->ip(),
'signature_verified' => false,
'signature_failure_reason' => $failureReason,
'error_message' => 'Signature verification failed: ' . $failureReason,
'error_message' => 'Signature verification failed: '.$failureReason,
'processed_at' => now(),
]);
@ -149,7 +147,6 @@ class WebhookDeliveryLogger
*
* @param ContentWebhookLog $webhookLog The webhook log entry
* @param string $verificationMethod How the signature was verified (e.g., 'current_secret', 'grace_period')
* @return void
*/
public function logSignatureSuccess(
ContentWebhookLog $webhookLog,
@ -172,7 +169,6 @@ class WebhookDeliveryLogger
*
* @param Request $request The incoming request
* @param ContentWebhookEndpoint $endpoint The webhook endpoint
* @return void
*/
public function logSignatureNotRequired(
Request $request,
@ -195,7 +191,6 @@ class WebhookDeliveryLogger
* @param array $payload The parsed payload
* @param string $eventType The determined event type
* @param array $verificationResult The signature verification result
* @return ContentWebhookLog
*/
public function createDeliveryLog(
Request $request,
@ -225,7 +220,6 @@ class WebhookDeliveryLogger
* @param ContentWebhookLog $webhookLog The webhook log entry
* @param int $durationMs Processing duration in milliseconds
* @param array|null $result Processing result details
* @return void
*/
public function recordProcessingMetrics(
ContentWebhookLog $webhookLog,
@ -341,7 +335,6 @@ class WebhookDeliveryLogger
* Extract content ID from payload.
*
* @param array $data The webhook payload
* @return int|null
*/
protected function extractContentId(array $data): ?int
{
@ -364,7 +357,6 @@ class WebhookDeliveryLogger
* Extract content type from payload.
*
* @param array $data The webhook payload
* @return string|null
*/
protected function extractContentType(array $data): ?string
{

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Content\Services;
use Core\Mod\Content\Models\ContentWebhookLog;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Log;
use Core\Mod\Content\Models\ContentWebhookLog;
/**
* WebhookRetryService

View file

@ -4,14 +4,14 @@ declare(strict_types=1);
namespace Core\Mod\Content\View\Modal\Admin;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentTaxonomy;
use Core\Mod\Content\Services\ContentSearchService;
use Livewire\Attributes\Computed;
use Livewire\Attributes\Layout;
use Livewire\Attributes\Url;
use Livewire\Component;
use Livewire\WithPagination;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentTaxonomy;
use Core\Mod\Content\Services\ContentSearchService;
/**
* Content Search Livewire Component

View file

@ -4,13 +4,13 @@ declare(strict_types=1);
namespace Core\Mod\Content\View\Modal\Admin;
use Core\Mod\Content\Models\ContentWebhookEndpoint;
use Core\Mod\Content\Models\ContentWebhookLog;
use Livewire\Attributes\Computed;
use Livewire\Attributes\Layout;
use Livewire\Attributes\Url;
use Livewire\Component;
use Livewire\WithPagination;
use Core\Mod\Content\Models\ContentWebhookEndpoint;
use Core\Mod\Content\Models\ContentWebhookLog;
/**
* Livewire component for managing content webhook endpoints.

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Content\View\Modal\Web;
use Livewire\Component;
use Core\Mod\Content\Services\ContentRender;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\WorkspaceService;
use Livewire\Component;
class Blog extends Component
{

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Content\View\Modal\Web;
use Livewire\Component;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\WorkspaceService;
use Livewire\Component;
class Help extends Component
{

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Content\View\Modal\Web;
use Livewire\Component;
use Core\Mod\Content\Services\ContentRender;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\WorkspaceService;
use Livewire\Component;
class HelpArticle extends Component
{

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Content\View\Modal\Web;
use Livewire\Component;
use Core\Mod\Content\Services\ContentRender;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Services\WorkspaceService;
use Livewire\Component;
class Post extends Component
{

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Content\View\Modal\Web;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\Workspace;
use Livewire\Component;
use Core\Mod\Content\Models\ContentItem;
/**
* Preview - Render draft/unpublished content with preview token.

39
phpunit.xml Normal file
View 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>

View file

@ -9,7 +9,6 @@ declare(strict_types=1);
* Supports both session auth and API key auth.
*/
use Illuminate\Support\Facades\Route;
use Core\Mod\Content\Controllers\Api\ContentBriefController;
use Core\Mod\Content\Controllers\Api\ContentMediaController;
use Core\Mod\Content\Controllers\Api\ContentRevisionController;
@ -17,6 +16,7 @@ use Core\Mod\Content\Controllers\Api\ContentSearchController;
use Core\Mod\Content\Controllers\Api\ContentWebhookController;
use Core\Mod\Content\Controllers\Api\GenerationController;
use Core\Mod\Content\Controllers\ContentPreviewController;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------

View file

@ -2,12 +2,12 @@
declare(strict_types=1);
use Illuminate\Support\Facades\Route;
use Core\Mod\Content\View\Modal\Web\Blog;
use Core\Mod\Content\View\Modal\Web\Help;
use Core\Mod\Content\View\Modal\Web\HelpArticle;
use Core\Mod\Content\View\Modal\Web\Post;
use Core\Mod\Content\View\Modal\Web\Preview;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Content\Tests\Feature;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use Core\Mod\Content\Enums\ContentType;
use Core\Mod\Content\Models\ContentItem;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;

View file

@ -8,7 +8,6 @@ use Core\Mod\Content\Models\ContentWebhookEndpoint;
use Core\Mod\Content\Models\ContentWebhookLog;
use Core\Tenant\Models\Workspace;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Carbon;
use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;
@ -74,7 +73,7 @@ class WebhookSignatureVerificationTest extends TestCase
public function it_accepts_github_style_signature(): void
{
$payload = json_encode(['ID' => 456, 'post_title' => 'GitHub Style']);
$signature = 'sha256=' . hash_hmac('sha256', $payload, 'test-webhook-secret-key');
$signature = 'sha256='.hash_hmac('sha256', $payload, 'test-webhook-secret-key');
$response = $this->postJson(
"/api/content/webhooks/{$this->endpoint->uuid}",
@ -525,7 +524,7 @@ class WebhookSignatureVerificationTest extends TestCase
$response2 = $this->postJson(
"/api/content/webhooks/{$this->endpoint->uuid}",
json_decode($payload, true),
['X-Signature' => 'a' . substr($validSignature, 1), 'X-Event-Type' => 'post.updated']
['X-Signature' => 'a'.substr($validSignature, 1), 'X-Event-Type' => 'post.updated']
);
$response2->assertStatus(401);

7
tests/Pest.php Normal file
View file

@ -0,0 +1,7 @@
<?php
declare(strict_types=1);
use Orchestra\Testbench\TestCase;
uses(TestCase::class)->in('Feature', 'Unit');

View file

@ -4,12 +4,12 @@ declare(strict_types=1);
namespace Core\Mod\Content\Tests\Unit;
use Core\Tenant\Models\Workspace;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Core\Mod\Content\Enums\ContentType;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentTaxonomy;
use Core\Mod\Content\Services\ContentSearchService;
use Core\Tenant\Models\Workspace;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
/**

View file

@ -4,13 +4,13 @@ declare(strict_types=1);
namespace Core\Mod\Content\Tests\Unit;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Queue;
use Core\Mod\Content\Enums\ContentType;
use Core\Mod\Content\Jobs\ProcessContentWebhook;
use Core\Mod\Content\Models\ContentItem;
use Core\Mod\Content\Models\ContentWebhookEndpoint;
use Core\Mod\Content\Models\ContentWebhookLog;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Queue;
use PHPUnit\Framework\Attributes\Test;
use Tests\TestCase;

View file

@ -31,7 +31,7 @@ class WebhookDeliveryLoggerTest extends TestCase
{
parent::setUp();
$this->logger = new WebhookDeliveryLogger();
$this->logger = new WebhookDeliveryLogger;
$this->workspace = Workspace::factory()->create();
$this->endpoint = ContentWebhookEndpoint::factory()->create([
'workspace_id' => $this->workspace->id,