Newer
Older
gnexus-auth-client-php / tests / Unit / OAuth / AuthorizationUrlBuilderTest.php
@Eugene Sukhodolskiy Eugene Sukhodolskiy 14 hours ago 1 KB Initial auth client package scaffold
<?php

declare(strict_types=1);

namespace GNexus\GAuth\Tests\Unit\OAuth;

use GNexus\GAuth\Config\GAuthConfig;
use GNexus\GAuth\OAuth\AuthorizationUrlBuilder;
use PHPUnit\Framework\TestCase;

final class AuthorizationUrlBuilderTest extends TestCase
{
    public function testBuildsExpectedAuthorizeUrl(): void
    {
        $builder = new AuthorizationUrlBuilder(new GAuthConfig(
            baseUrl: 'https://auth.example.test',
            clientId: 'billing',
            clientSecret: 'secret',
            redirectUri: 'https://billing.example.test/callback',
        ));

        $url = $builder->build(
            state: 'state123',
            pkceChallenge: 'challenge123',
            returnTo: '/back',
            scopes: ['openid', 'profile'],
        );

        self::assertStringStartsWith('https://auth.example.test/oauth/authorize?', $url);
        self::assertStringContainsString('client_id=billing', $url);
        self::assertStringContainsString('redirect_uri=https%3A%2F%2Fbilling.example.test%2Fcallback', $url);
        self::assertStringContainsString('state=state123', $url);
        self::assertStringContainsString('code_challenge=challenge123', $url);
        self::assertStringContainsString('scope=openid%20profile', $url);
        self::assertStringContainsString('return_to=%2Fback', $url);
    }
}