<?php
/*
* This file is part of Chevere.
*
* (c) Rodolfo Berrios <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Chevere\Tests\Attribute;
use InvalidArgumentException;
use LogicException;
use PHPUnit\Framework\TestCase;
use function Chevere\Tests\src\noUsesAttr;
use function Chevere\Tests\src\usesAttr;
use function Chevere\Tests\src\usesSensitiveParameterAttr;
final class FunctionReturnAttrTest extends TestCase
{
public function testUsesAttr(): void
{
$value = [
'id' => 1,
'role' => [
'mask' => 64,
'name' => 'admin',
'tenants' => [1, 2, 3, 4, 5],
],
];
usesAttr($value);
$value = [
'id' => 1,
'role' => [
'mask' => 64,
'name' => 'admin',
'tenants' => [6, 7, 8],
],
];
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage(
<<<PLAIN
[role]: [tenants]: [V *iterable]: Argument value provided `6` is greater than `5`
PLAIN
);
usesAttr($value);
}
public function testNoUsesAttr(): void
{
$this->expectException(LogicException::class);
$this->expectExceptionMessage('No applicable return rules to validate');
noUsesAttr([]);
}
public function testUsesSensitiveParameterAttr(): void
{
$this->expectException(InvalidArgumentException::class);
$this->expectExceptionMessage(
<<<PLAIN
[code]: Argument value provided is less than `1000`
[password]: Argument value provided doesn't match the regex `/\bsuper|safe\b/`
PLAIN
);
usesSensitiveParameterAttr(999, 'password');
}
}
|