<?php

use App\Domains\Webhook\Jobs\DeliverWebhookJob;
use App\Domains\Webhook\Models\Webhook;
use Illuminate\Support\Facades\Http;

it('dispatches webhook with HMAC signature', function () {
    Http::fake(['*' => Http::response('ok', 200)]);

    $webhook = Webhook::factory()->create([
        'url' => 'https://example.com/hook',
        'secret' => 'mysecret',
        'events' => ['click.recorded'],
        'is_active' => true,
    ]);

    // Run the job synchronously to test HTTP call
    $job = new DeliverWebhookJob($webhook, 'click.recorded', ['link_id' => 1]);
    $job->handle();

    Http::assertSent(function ($request) {
        return $request->hasHeader('X-Nimuli-Signature')
            && str_starts_with($request->header('X-Nimuli-Signature')[0], 'sha256=');
    });
});
