<?php
namespace Szurubooru\Tests;
use Szurubooru\Config;
use Szurubooru\Injector;
use Szurubooru\Privilege;
use Szurubooru\Tests\AbstractTestCase;

final class PrivilegeTest extends AbstractTestCase
{
	public function testConstNaming()
	{
		$refl = new \ReflectionClass(Privilege::class);
		foreach ($refl->getConstants() as $key => $value)
		{
			$value = strtoupper(ltrim(preg_replace('/[A-Z]/', '_\0', $value), '_'));
			$this->assertEquals($key, $value);
		}
	}

	public function testConfigSectionNaming()
	{
		$refl = new \ReflectionClass(Privilege::class);
		$constants = array_values($refl->getConstants());

		$config = Injector::get(Config::class);
		foreach ($config->security->privileges as $key => $value)
		{
			$this->assertTrue(in_array($key, $constants), "$key not in constants");
		}
	}
}