Passed
Pull Request — master (#9)
by Iakov
03:31
created

ValidateResourceAccessStepTest::testExecute()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 10
nc 1
nop 0
dl 0
loc 15
rs 9.4285
c 0
b 0
f 0
1
<?php
2
3
namespace Kami\ApiCoreBundle\Tests\RequestProcessor\Step\Common;
4
5
use JMS\Serializer\Serializer;
6
use Kami\ApiCoreBundle\RequestProcessor\Step\Common\GetReflectionFromRequestStep;
7
use Kami\ApiCoreBundle\RequestProcessor\Step\Common\PersistStep;
8
use Kami\ApiCoreBundle\RequestProcessor\Step\Common\TrimResponseStep;
9
use Kami\ApiCoreBundle\RequestProcessor\Step\Common\ValidateFormStep;
10
use Kami\ApiCoreBundle\RequestProcessor\Step\Common\ValidateResourceAccessStep;
11
use Kami\ApiCoreBundle\Security\AccessManager;
12
use Kami\ApiCoreBundle\Tests\Entity\MyModel;
13
use PHPUnit\Framework\TestCase;
14
use Symfony\Component\HttpFoundation\Request;
15
use Kami\ApiCoreBundle\RequestProcessor\ProcessorResponse;
16
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
17
18
class ValidateResourceAccessStepTest extends TestCase
19
{
20
21
    public function testCanBeConstructed()
22
    {
23
        $accessManagerMock = $this->createMock(AccessManager::class);
24
25
        $step = new ValidateResourceAccessStep($accessManagerMock);
26
        $this->assertInstanceOf(ValidateResourceAccessStep::class, $step);
27
    }
28
29
    public function testRequiresBefore()
30
    {
31
        $accessManagerMock = $this->createMock(AccessManager::class);
32
33
        $step = new ValidateResourceAccessStep($accessManagerMock);
34
        $this->assertEquals([GetReflectionFromRequestStep::class], $step->requiresBefore());
35
    }
36
37
    public function testExecute()
38
    {
39
        $accessManagerMock = $this->createMock(AccessManager::class);
40
        $accessManagerMock->expects($this->any())->method('canAccessResource')->willReturn(true);
41
42
        $step = new ValidateResourceAccessStep($accessManagerMock);
43
        $request = new Request();
44
        $step->setRequest($request);
45
        $step->setPreviousResponse(new ProcessorResponse($request, [
46
            'reflection' => new \ReflectionClass(MyModel::class)
47
        ]));
48
49
        $response = $step->execute();
50
        $this->assertInstanceOf(ProcessorResponse::class, $response);
51
        $this->assertInstanceOf(\ReflectionClass::class, $response->getData()['reflection']);
52
    }
53
54
    public function testExecuteFailure()
55
    {
56
        $accessManagerMock = $this->createMock(AccessManager::class);
57
        $accessManagerMock->expects($this->any())->method('canAccessResource')->willReturn(false);
58
59
        $step = new ValidateResourceAccessStep($accessManagerMock);
60
        $request = new Request();
61
        $step->setRequest($request);
62
        $step->setPreviousResponse(new ProcessorResponse($request, [
63
            'reflection' => new \ReflectionClass(MyModel::class)
64
        ]));
65
66
        $this->expectException(AccessDeniedHttpException::class);
67
        $response = $step->execute();
0 ignored issues
show
Unused Code introduced by
The assignment to $response is dead and can be removed.
Loading history...
68
    }
69
70
71
}
72