Test Failed
Pull Request — master (#39)
by Roman
03:36
created

testGetRequiredArtifacts()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Kami\ApiCoreBundle\Tests\RequestProcessor\Step\Common;
4
5
use Kami\ApiCoreBundle\RequestProcessor\Step\Common\ValidateResourceAccessStep;
6
use Kami\ApiCoreBundle\Security\AccessManager;
7
use Kami\ApiCoreBundle\Tests\Entity\MyModel;
8
use Kami\Component\RequestProcessor\Artifact;
9
use Kami\Component\RequestProcessor\ArtifactCollection;
10
use PHPUnit\Framework\TestCase;
11
use Symfony\Component\HttpFoundation\Request;
12
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
13
14
class ValidateResourceAccessStepTest extends TestCase
15
{
16
17
    public function testCanBeConstructed()
18
    {
19
        $accessManagerMock = $this->createMock(AccessManager::class);
20
21
        $step = new ValidateResourceAccessStep($accessManagerMock);
22
        $this->assertInstanceOf(ValidateResourceAccessStep::class, $step);
23
    }
24
25
    public function testGetRequiredArtifacts()
26
    {
27
        $accessManagerMock = $this->createMock(AccessManager::class);
28
29
        $step = new ValidateResourceAccessStep($accessManagerMock);
30
        $this->assertEquals(['reflection'], $step->getRequiredArtifacts());
31
    }
32
33
    public function testExecute()
34
    {
35
        $accessManagerMock = $this->createMock(AccessManager::class);
36
        $accessManagerMock->expects($this->any())->method('canAccessResource')->willReturn(true);
37
38
        $step = new ValidateResourceAccessStep($accessManagerMock);
39
40
        $step->setArtifacts(new ArtifactCollection([
41
            new Artifact('reflection', new \ReflectionClass(MyModel::class))
42
        ]));
43
44
        $response = $step->execute(new Request());
45
        $this->assertInstanceOf(ArtifactCollection::class, $response);
46
        $this->assertEquals(true, $response->get('access_granted')->getValue());
47
    }
48
49
    public function testExecuteFailure()
50
    {
51
        $accessManagerMock = $this->createMock(AccessManager::class);
52
        $accessManagerMock->expects($this->any())->method('canAccessResource')->willReturn(false);
53
54
        $step = new ValidateResourceAccessStep($accessManagerMock);
55
56
        $step->setArtifacts(new ArtifactCollection([
57
            new Artifact('reflection', new \ReflectionClass(MyModel::class))
58
        ]));
59
60
        $this->expectException(AccessDeniedHttpException::class);
61
        $step->execute(new Request());
62
    }
63
}
64