<?php
declare(strict_types=1);
namespace GNexus\GAuth\Tests\Unit\Webhook;
use GNexus\GAuth\Webhook\JsonWebhookParser;
use PHPUnit\Framework\TestCase;
final class JsonWebhookParserTest extends TestCase
{
public function testParsesStructuredWebhookPayload(): void
{
$parser = new JsonWebhookParser();
$event = $parser->parse(json_encode([
'id' => 'evt_1',
'type' => 'user.profile_updated',
'occurred_at' => '2026-04-24T12:00:00Z',
'actor' => ['user_id' => '1'],
'target' => ['user_id' => '2'],
'data' => ['fields' => ['display_name']],
], JSON_THROW_ON_ERROR));
self::assertSame('evt_1', $event->eventId);
self::assertSame('user.profile_updated', $event->eventType);
self::assertSame(['user_id' => '1'], $event->actorIdentifiers);
self::assertSame(['user_id' => '2'], $event->targetIdentifiers);
self::assertSame(['fields' => ['display_name']], $event->metadata);
self::assertSame('2026-04-24T12:00:00+00:00', $event->occurredAt?->format(\DateTimeInterface::ATOM));
}
}