Newer
Older
gnexus-auth-client-php / tests / Unit / Webhook / JsonWebhookParserTest.php
@Eugene Sukhodolskiy Eugene Sukhodolskiy 12 hours ago 1 KB Initial auth client package scaffold
<?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));
    }
}