<?php

declare(strict_types=1);

namespace ShlinkioTest\Shlink\Rest\ApiKey\Model;

use PHPUnit\Framework\TestCase;
use Shlinkio\Shlink\Core\Domain\Entity\Domain;
use Shlinkio\Shlink\Rest\ApiKey\Model\RoleDefinition;
use Shlinkio\Shlink\Rest\ApiKey\Role;

class RoleDefinitionTest extends TestCase
{
    /** @test */
    public function forAuthoredShortUrlsCreatesRoleDefinitionAsExpected(): void
    {
        $definition = RoleDefinition::forAuthoredShortUrls();

        self::assertEquals(Role::AUTHORED_SHORT_URLS, $definition->role);
        self::assertEquals([], $definition->meta);
    }

    /** @test */
    public function forDomainCreatesRoleDefinitionAsExpected(): void
    {
        $domain = Domain::withAuthority('foo.com')->setId('123');
        $definition = RoleDefinition::forDomain($domain);

        self::assertEquals(Role::DOMAIN_SPECIFIC, $definition->role);
        self::assertEquals(['domain_id' => '123', 'authority' => 'foo.com'], $definition->meta);
    }
}