chore: fix pint code style and add test config
Some checks failed
CI / tests (push) Failing after 1m25s
Some checks failed
CI / tests (push) Failing after 1m25s
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
3246ffe7af
commit
082be5ad90
61 changed files with 167 additions and 125 deletions
6
Boot.php
6
Boot.php
|
|
@ -8,14 +8,14 @@ use Core\Events\AdminPanelBooting;
|
|||
use Core\Events\ApiRoutesRegistering;
|
||||
use Core\Events\ConsoleBooting;
|
||||
use Core\Events\WebRoutesRegistering;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Core\Mod\Commerce\Listeners\ProvisionSocialHostSubscription;
|
||||
use Core\Mod\Commerce\Listeners\RewardAgentReferralOnSubscription;
|
||||
use Core\Mod\Commerce\Services\PaymentGateway\BTCPayGateway;
|
||||
use Core\Mod\Commerce\Services\PaymentGateway\PaymentGatewayContract;
|
||||
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
/**
|
||||
* Commerce Module Boot
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Concerns;
|
||||
|
||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
use Core\Mod\Commerce\Models\ContentOverride;
|
||||
use Core\Mod\Commerce\Models\Entity;
|
||||
use Core\Mod\Commerce\Services\ContentOverrideService;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphMany;
|
||||
|
||||
/**
|
||||
* Trait for models that can have content overrides.
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Console;
|
||||
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
|
||||
class CleanupExpiredOrders extends Command
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Console;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Core\Mod\Commerce\Services\ReferralService;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
/**
|
||||
* Mature referral commissions that are past their maturation date.
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ declare(strict_types=1);
|
|||
namespace Core\Mod\Commerce\Console;
|
||||
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Mod\Trees\Models\TreePlanting;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Mod\Trees\Models\TreePlanting;
|
||||
|
||||
/**
|
||||
* Plants trees for active subscribers.
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Console;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Services\DunningService;
|
||||
use Core\Mod\Commerce\Services\SubscriptionService;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class ProcessDunning extends Command
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Console;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Core\Mod\Commerce\Services\CurrencyService;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
/**
|
||||
* Refresh exchange rates from configured provider.
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Console;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Services\UsageBillingService;
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
/**
|
||||
* Sync usage records to Stripe metered billing.
|
||||
|
|
|
|||
|
|
@ -5,17 +5,17 @@ declare(strict_types=1);
|
|||
namespace Core\Mod\Commerce\Controllers\Api;
|
||||
|
||||
use Core\Front\Controller;
|
||||
use Core\Tenant\Models\Package;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Core\Mod\Commerce\Models\Invoice;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Services\CommerceService;
|
||||
use Core\Mod\Commerce\Services\InvoiceService;
|
||||
use Core\Mod\Commerce\Services\SubscriptionService;
|
||||
use Core\Tenant\Models\Package;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
/**
|
||||
* Commerce REST API for MCP agents and external integrations.
|
||||
|
|
|
|||
|
|
@ -6,12 +6,6 @@ namespace Core\Mod\Commerce\Controllers\Webhooks;
|
|||
|
||||
use Carbon\Carbon;
|
||||
use Core\Front\Controller;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Services\EntitlementService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Payment;
|
||||
use Core\Mod\Commerce\Models\PaymentMethod;
|
||||
|
|
@ -26,6 +20,12 @@ use Core\Mod\Commerce\Services\InvoiceService;
|
|||
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
|
||||
use Core\Mod\Commerce\Services\WebhookLogger;
|
||||
use Core\Mod\Commerce\Services\WebhookRateLimiter;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Services\EntitlementService;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
/**
|
||||
* Handle Stripe webhooks.
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Events;
|
||||
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Payment;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
/**
|
||||
* Event fired when an order is successfully paid.
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Exceptions;
|
||||
|
||||
use Exception;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Exception;
|
||||
|
||||
/**
|
||||
* Exception thrown when a subscription has exceeded its pause cycle limit.
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Listeners;
|
||||
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Events\OrderPaid;
|
||||
use Core\Mod\Commerce\Services\ReferralService;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
/**
|
||||
* Creates referral commission when an order is paid.
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Listeners;
|
||||
|
||||
use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal;
|
||||
use Core\Mod\Commerce\Events\SubscriptionCancelled;
|
||||
use Core\Mod\Commerce\Events\SubscriptionCreated;
|
||||
use Core\Mod\Commerce\Events\SubscriptionRenewed;
|
||||
use Core\Mod\Commerce\Events\SubscriptionUpdated;
|
||||
use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal;
|
||||
use Core\Tenant\Models\Package;
|
||||
use Core\Tenant\Models\WorkspacePackage;
|
||||
use Core\Tenant\Services\EntitlementService;
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ declare(strict_types=1);
|
|||
namespace Core\Mod\Commerce\Listeners;
|
||||
|
||||
use Core\Mod\Commerce\Events\SubscriptionCreated;
|
||||
use Mod\Trees\Models\TreePlanting;
|
||||
use Core\Tenant\Models\AgentReferralBonus;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Mod\Trees\Models\TreePlanting;
|
||||
|
||||
/**
|
||||
* Rewards agents when their referred user subscribes.
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ namespace Core\Mod\Commerce\Mcp\Tools;
|
|||
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Services\SubscriptionService;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Models\Package;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Contracts\JsonSchema\JsonSchema;
|
||||
use Laravel\Mcp\Request;
|
||||
use Laravel\Mcp\Response;
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Core\Mod\Commerce\Models\Entity;
|
||||
use Core\Mod\Commerce\Services\PermissionMatrixService;
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Str;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Models;
|
||||
|
||||
use Core\Mod\Commerce\Contracts\Orderable;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Core\Mod\Commerce\Contracts\Orderable;
|
||||
use Spatie\Activitylog\LogOptions;
|
||||
use Spatie\Activitylog\Traits\LogsActivity;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Models;
|
||||
|
||||
use Core\Mod\Commerce\Contracts\Orderable;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
|
@ -10,7 +11,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
use Core\Mod\Commerce\Contracts\Orderable;
|
||||
use Spatie\Activitylog\LogOptions;
|
||||
use Spatie\Activitylog\Traits\LogsActivity;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,13 +4,13 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Models;
|
||||
|
||||
use Core\Mod\Commerce\Concerns\HasContentOverrides;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Support\Str;
|
||||
use Core\Mod\Commerce\Concerns\HasContentOverrides;
|
||||
use Spatie\Activitylog\LogOptions;
|
||||
use Spatie\Activitylog\Traits\LogsActivity;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Models;
|
||||
|
||||
use Core\Mod\Commerce\Concerns\HasContentOverrides;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Core\Mod\Commerce\Concerns\HasContentOverrides;
|
||||
|
||||
/**
|
||||
* Product Assignment - Links products to M2/M3 entities.
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Models;
|
||||
|
||||
use Core\Mod\Commerce\Events\SubscriptionCreated;
|
||||
use Core\Mod\Commerce\Events\SubscriptionUpdated;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Models\WorkspacePackage;
|
||||
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\Commerce\Events\SubscriptionCreated;
|
||||
use Core\Mod\Commerce\Events\SubscriptionUpdated;
|
||||
use Spatie\Activitylog\LogOptions;
|
||||
use Spatie\Activitylog\Traits\LogsActivity;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Notifications;
|
||||
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
|
||||
class SubscriptionPaused extends Notification implements ShouldQueue
|
||||
{
|
||||
|
|
|
|||
|
|
@ -184,11 +184,10 @@ class CommerceService
|
|||
* also applies rate limiting.
|
||||
*
|
||||
* @param Request|null $request The HTTP request for rate limiting (auto-resolved if null)
|
||||
* @return array{order: Order, session_id: string, checkout_url: string, fraud_assessment?: FraudAssessment}
|
||||
*
|
||||
* @throws CheckoutRateLimitException When rate limit is exceeded
|
||||
* @throws FraudBlockedException When order is blocked due to high fraud risk
|
||||
*
|
||||
* @return array{order: Order, session_id: string, checkout_url: string, fraud_assessment?: FraudAssessment}
|
||||
*/
|
||||
public function createCheckout(
|
||||
Order $order,
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Collection;
|
||||
use Core\Mod\Commerce\Models\ContentOverride;
|
||||
use Core\Mod\Commerce\Models\Entity;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
/**
|
||||
* Content Override Service - Sparse override resolution for white-label commerce.
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Core\Mod\Commerce\Models\CreditNote;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Refund;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Database\Eloquent\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\CreditNote;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Refund;
|
||||
|
||||
class CreditNoteService
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Core\Mod\Commerce\Models\ExchangeRate;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Session;
|
||||
use Core\Mod\Commerce\Models\ExchangeRate;
|
||||
|
||||
/**
|
||||
* Currency service for multi-currency support.
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@
|
|||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\Invoice;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Notifications\AccountSuspended;
|
||||
|
|
@ -13,6 +11,8 @@ use Core\Mod\Commerce\Notifications\PaymentRetry;
|
|||
use Core\Mod\Commerce\Notifications\SubscriptionCancelled;
|
||||
use Core\Mod\Commerce\Notifications\SubscriptionPaused;
|
||||
use Core\Tenant\Services\EntitlementService;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
/**
|
||||
* Dunning service for failed payment recovery.
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@
|
|||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Core\Mod\Commerce\Mail\InvoiceGenerated;
|
||||
use Core\Mod\Commerce\Models\Invoice;
|
||||
use Core\Mod\Commerce\Models\InvoiceItem;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Payment;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
/**
|
||||
* Invoice generation and management service.
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Services\PaymentGateway;
|
||||
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Payment;
|
||||
use Core\Mod\Commerce\Models\PaymentMethod;
|
||||
use Core\Mod\Commerce\Models\Refund;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Stripe\StripeClient;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Core\Mod\Commerce\Models\PaymentMethod;
|
||||
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\PaymentMethod;
|
||||
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
|
||||
|
||||
/**
|
||||
* Service for managing payment methods.
|
||||
|
|
|
|||
|
|
@ -4,16 +4,16 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Core\Tenant\Models\User;
|
||||
use Mod\Bio\Models\Page;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Str;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Referral;
|
||||
use Core\Mod\Commerce\Models\ReferralCode;
|
||||
use Core\Mod\Commerce\Models\ReferralCommission;
|
||||
use Core\Mod\Commerce\Models\ReferralPayout;
|
||||
use Core\Tenant\Models\User;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Str;
|
||||
use Mod\Bio\Models\Page;
|
||||
|
||||
/**
|
||||
* Service for managing referrals and affiliate commissions.
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@
|
|||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Exceptions\PauseLimitExceededException;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Tenant\Models\Package;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Models\WorkspacePackage;
|
||||
use Core\Tenant\Services\EntitlementService;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class SubscriptionService
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Contracts\Orderable;
|
||||
use Core\Mod\Commerce\Models\TaxRate;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
/**
|
||||
* Tax calculation service.
|
||||
|
|
|
|||
|
|
@ -3,11 +3,6 @@
|
|||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\Invoice;
|
||||
use Core\Mod\Commerce\Models\InvoiceItem;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
|
|
@ -15,6 +10,11 @@ use Core\Mod\Commerce\Models\SubscriptionUsage;
|
|||
use Core\Mod\Commerce\Models\UsageEvent;
|
||||
use Core\Mod\Commerce\Models\UsageMeter;
|
||||
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
/**
|
||||
* Usage-based billing service.
|
||||
|
|
|
|||
|
|
@ -4,13 +4,13 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Services;
|
||||
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Models\WebhookEvent;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Models\WebhookEvent;
|
||||
|
||||
/**
|
||||
* Service for logging webhook events from payment gateways.
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ class WebhookRateLimiter
|
|||
// Build a bitmask from the prefix length
|
||||
$maskBinary = str_repeat("\xff", (int) ($mask / 8));
|
||||
if ($mask % 8) {
|
||||
$maskBinary .= chr(0xff << (8 - ($mask % 8)));
|
||||
$maskBinary .= chr(0xFF << (8 - ($mask % 8)));
|
||||
}
|
||||
$maskBinary = str_pad($maskBinary, 16, "\x00");
|
||||
|
||||
|
|
|
|||
|
|
@ -4,14 +4,14 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Admin;
|
||||
|
||||
use Core\Mod\Commerce\Models\Coupon;
|
||||
use Core\Mod\Commerce\Services\CouponService;
|
||||
use Core\Tenant\Models\Package;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Title;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
use Core\Mod\Commerce\Models\Coupon;
|
||||
use Core\Mod\Commerce\Services\CouponService;
|
||||
|
||||
#[Layout('hub::admin.layouts.app')]
|
||||
#[Title('Coupons')]
|
||||
|
|
|
|||
|
|
@ -4,14 +4,14 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Admin;
|
||||
|
||||
use Core\Mod\Commerce\Models\CreditNote;
|
||||
use Core\Mod\Commerce\Services\CreditNoteService;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Attributes\Title;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
use Core\Mod\Commerce\Models\CreditNote;
|
||||
use Core\Mod\Commerce\Services\CreditNoteService;
|
||||
|
||||
#[Title('Credit Notes')]
|
||||
class CreditNoteManager extends Component
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@ use Core\Mod\Commerce\Models\ProductAssignment;
|
|||
use Core\Mod\Commerce\Services\ProductCatalogService;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Attributes\Url;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Url;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,16 +4,16 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Admin;
|
||||
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Title;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
use Core\Mod\Commerce\Models\Referral;
|
||||
use Core\Mod\Commerce\Models\ReferralCode;
|
||||
use Core\Mod\Commerce\Models\ReferralCommission;
|
||||
use Core\Mod\Commerce\Models\ReferralPayout;
|
||||
use Core\Mod\Commerce\Services\ReferralService;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Title;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
|
||||
/**
|
||||
* Admin dashboard for managing referrals, commissions, and payouts.
|
||||
|
|
|
|||
|
|
@ -2,15 +2,15 @@
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Web;
|
||||
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Services\CommerceService;
|
||||
use Core\Mod\Commerce\Services\SubscriptionService;
|
||||
use Core\Tenant\Models\Package;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Component;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Services\CommerceService;
|
||||
use Core\Mod\Commerce\Services\SubscriptionService;
|
||||
|
||||
/**
|
||||
* Plan change UI for upgrading or downgrading subscriptions.
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Web;
|
||||
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Tenant\Models\User;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Component;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Tenant\Models\User;
|
||||
|
||||
#[Layout('shared::layouts.checkout')]
|
||||
class CheckoutCancel extends Component
|
||||
|
|
|
|||
|
|
@ -2,13 +2,6 @@
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Web;
|
||||
|
||||
use Core\Tenant\Models\Package;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Url;
|
||||
use Livewire\Component;
|
||||
use Core\Mod\Commerce\Models\Coupon;
|
||||
use Core\Mod\Commerce\Models\ExchangeRate;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
|
|
@ -17,6 +10,13 @@ use Core\Mod\Commerce\Services\CommerceService;
|
|||
use Core\Mod\Commerce\Services\CouponService;
|
||||
use Core\Mod\Commerce\Services\CurrencyService;
|
||||
use Core\Mod\Commerce\Services\TaxService;
|
||||
use Core\Tenant\Models\Package;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Url;
|
||||
use Livewire\Component;
|
||||
|
||||
#[Layout('shared::layouts.checkout')]
|
||||
class CheckoutPage extends Component
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Web;
|
||||
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Auth\Events\Registered;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
|
@ -9,9 +12,6 @@ use Illuminate\Support\Facades\Hash;
|
|||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Validate;
|
||||
use Livewire\Component;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
|
||||
#[Layout('shared::layouts.checkout')]
|
||||
class CheckoutSuccess extends Component
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Web;
|
||||
|
||||
use Core\Mod\Commerce\Services\CurrencyService;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Component;
|
||||
use Core\Mod\Commerce\Services\CurrencyService;
|
||||
|
||||
/**
|
||||
* Currency selector component.
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Web;
|
||||
|
||||
use Core\Mod\Commerce\Models\PaymentMethod;
|
||||
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
|
||||
use Core\Mod\Commerce\Services\PaymentMethodService;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Component;
|
||||
use Core\Mod\Commerce\Models\PaymentMethod;
|
||||
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
|
||||
use Core\Mod\Commerce\Services\PaymentMethodService;
|
||||
|
||||
#[Layout('hub::admin.layouts.app')]
|
||||
class PaymentMethods extends Component
|
||||
|
|
|
|||
|
|
@ -4,15 +4,15 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Web;
|
||||
|
||||
use Core\Mod\Commerce\Models\Referral;
|
||||
use Core\Mod\Commerce\Models\ReferralCommission;
|
||||
use Core\Mod\Commerce\Models\ReferralPayout;
|
||||
use Core\Mod\Commerce\Services\ReferralService;
|
||||
use Livewire\Attributes\Computed;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Attributes\Title;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
use Core\Mod\Commerce\Models\Referral;
|
||||
use Core\Mod\Commerce\Models\ReferralCommission;
|
||||
use Core\Mod\Commerce\Models\ReferralPayout;
|
||||
use Core\Mod\Commerce\Services\ReferralService;
|
||||
|
||||
/**
|
||||
* User-facing referral dashboard showing earnings and referrals.
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
namespace Core\Mod\Commerce\View\Modal\Web;
|
||||
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Services\CommerceService;
|
||||
use Core\Mod\Commerce\Services\UsageBillingService;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Livewire\Component;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Services\CommerceService;
|
||||
use Core\Mod\Commerce\Services\UsageBillingService;
|
||||
|
||||
/**
|
||||
* Usage Dashboard 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>
|
||||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Core\Mod\Commerce\Controllers\Api\CommerceController;
|
||||
use Core\Mod\Commerce\Controllers\Webhooks\BTCPayWebhookController;
|
||||
use Core\Mod\Commerce\Controllers\Webhooks\StripeWebhookController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Core\Mod\Commerce\Models\Invoice;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Payment;
|
||||
|
|
@ -10,6 +9,7 @@ use Core\Tenant\Models\Package;
|
|||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Models\WorkspacePackage;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
|
||||
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Tests\Feature;
|
||||
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Core\Mod\Commerce\Models\ContentOverride;
|
||||
use Core\Mod\Commerce\Models\Entity;
|
||||
use Core\Mod\Commerce\Models\Product;
|
||||
use Core\Mod\Commerce\Services\ContentOverrideService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Tests\TestCase;
|
||||
|
||||
class ContentOverrideServiceTest extends TestCase
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@ declare(strict_types=1);
|
|||
|
||||
namespace Core\Mod\Commerce\Tests\Feature;
|
||||
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Core\Mod\Commerce\Models\ExchangeRate;
|
||||
use Core\Mod\Commerce\Services\CurrencyService;
|
||||
use Illuminate\Foundation\Testing\RefreshDatabase;
|
||||
use Tests\TestCase;
|
||||
|
||||
class CurrencyServiceTest extends TestCase
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Notification;
|
||||
use Core\Mod\Commerce\Models\Invoice;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Notifications\AccountSuspended;
|
||||
|
|
@ -14,6 +12,8 @@ use Core\Tenant\Models\Package;
|
|||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Models\WorkspacePackage;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Notification;
|
||||
|
||||
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Core\Mod\Commerce\Events\SubscriptionRenewed;
|
||||
use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
|
|
@ -13,6 +11,8 @@ use Core\Tenant\Models\User;
|
|||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Models\WorkspacePackage;
|
||||
use Core\Tenant\Services\EntitlementService;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
|
||||
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Core\Mod\Commerce\Exceptions\PauseLimitExceededException;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Mod\Commerce\Services\ProrationResult;
|
||||
|
|
@ -11,6 +10,7 @@ use Core\Tenant\Models\Package;
|
|||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
use Core\Tenant\Models\WorkspacePackage;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
|
||||
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
declare(strict_types=1);
|
||||
|
||||
use Core\Mod\Commerce\Services\WebhookRateLimiter;
|
||||
use Illuminate\Cache\RateLimiter;
|
||||
use Illuminate\Http\Request;
|
||||
use Core\Mod\Commerce\Services\WebhookRateLimiter;
|
||||
|
||||
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
use Core\Mod\Commerce\Controllers\Webhooks\BTCPayWebhookController;
|
||||
use Core\Mod\Commerce\Controllers\Webhooks\StripeWebhookController;
|
||||
use WebhookPayloadValidationException;
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\OrderItem;
|
||||
use Core\Mod\Commerce\Models\Payment;
|
||||
|
|
@ -21,6 +20,7 @@ use Core\Tenant\Models\Workspace;
|
|||
use Core\Tenant\Models\WorkspacePackage;
|
||||
use Core\Tenant\Services\EntitlementService;
|
||||
use Illuminate\Support\Facades\Notification;
|
||||
use WebhookPayloadValidationException;
|
||||
|
||||
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
|
||||
|
||||
|
|
@ -1396,7 +1396,7 @@ describe('Webhook Idempotency (Replay Attack Protection)', function () {
|
|||
});
|
||||
|
||||
it('processes first webhook and rejects subsequent duplicates', function () {
|
||||
$eventId = 'btc_event_first_' . uniqid();
|
||||
$eventId = 'btc_event_first_'.uniqid();
|
||||
|
||||
$mockGateway = Mockery::mock(BTCPayGateway::class);
|
||||
$mockGateway->shouldReceive('verifyWebhookSignature')->andReturn(true);
|
||||
|
|
|
|||
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');
|
||||
|
|
@ -7,9 +7,6 @@
|
|||
* Tests the happy path user journey for products, orders, and subscriptions.
|
||||
*/
|
||||
|
||||
use Core\Mod\Commerce\Models\Order;
|
||||
use Core\Mod\Commerce\Models\Product;
|
||||
use Core\Mod\Commerce\Models\Subscription;
|
||||
use Core\Tenant\Models\User;
|
||||
use Core\Tenant\Models\Workspace;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue