Skip to content

Commit dba4460

Browse files
Merge pull request #94 from sabbelasichon/task/add-rule-test-for-RequestAttributeValidationRule
2 parents ba61b94 + 9809463 commit dba4460

File tree

4 files changed

+90
-0
lines changed

4 files changed

+90
-0
lines changed

src/Rule/RequestAttributeValidationRule.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ public function getNodeType(): string
2929
return Node\Expr\MethodCall::class;
3030
}
3131

32+
/**
33+
* @param Node\Expr\MethodCall $node
34+
*/
3235
public function processNode(Node $node, Scope $scope): array
3336
{
3437
if (!$node->name instanceof Node\Identifier) {
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace SaschaEgerer\PhpstanTypo3\Tests\Unit\Rule\RequestAttributeValidationRule\Fixture;
4+
5+
use Psr\Http\Message\ServerRequestInterface;
6+
7+
final class UseDefinedRequestAttribute
8+
{
9+
10+
public function someMethod(): void
11+
{
12+
$this->getServerRequest()->getAttribute('backend.user');
13+
}
14+
15+
public function getServerRequest(): ServerRequestInterface
16+
{
17+
return $GLOBALS['TYPO3_REQUEST'];
18+
}
19+
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace SaschaEgerer\PhpstanTypo3\Tests\Unit\Rule\RequestAttributeValidationRule\Fixture;
4+
5+
use Psr\Http\Message\ServerRequestInterface;
6+
7+
final class UseUndefinedRequestAttribute
8+
{
9+
10+
public function someMethod(): void
11+
{
12+
$this->getServerRequest()->getAttribute('foo');
13+
}
14+
15+
public function getServerRequest(): ServerRequestInterface
16+
{
17+
return $GLOBALS['TYPO3_REQUEST'];
18+
}
19+
20+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace SaschaEgerer\PhpstanTypo3\Tests\Unit\Rule\RequestAttributeValidationRule;
4+
5+
use PHPStan\Rules\Rule;
6+
use PHPStan\Testing\RuleTestCase;
7+
use SaschaEgerer\PhpstanTypo3\Rule\RequestAttributeValidationRule;
8+
use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
9+
10+
/**
11+
* @extends RuleTestCase<RequestAttributeValidationRule>
12+
*/
13+
final class RequestAttributeValidationRuleTest extends RuleTestCase
14+
{
15+
16+
public function testRuleWithErrors(): void
17+
{
18+
$this->analyse(
19+
[__DIR__ . '/Fixture/UseUndefinedRequestAttribute.php'],
20+
[
21+
[
22+
'There is no request attribute "foo" configured so we can\'t figure out the exact type to return when calling Psr\Http\Message\ServerRequestInterface::getAttribute',
23+
12,
24+
'You should add custom request attribute to the typo3.requestGetAttributeMapping setting.',
25+
],
26+
]
27+
);
28+
}
29+
30+
public function testRuleWithoutErrors(): void
31+
{
32+
$this->analyse([__DIR__ . '/Fixture/UseDefinedRequestAttribute.php'], []);
33+
}
34+
35+
protected function getRule(): Rule
36+
{
37+
return new RequestAttributeValidationRule([
38+
'backend.user' => BackendUserAuthentication::class,
39+
]);
40+
}
41+
42+
public static function getAdditionalConfigFiles(): array
43+
{
44+
return [__DIR__ . '/../../../../extension.neon'];
45+
}
46+
47+
}

0 commit comments

Comments
 (0)