This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace Developtech\AgilityBundle\Tests\Manager; |
||
4 | |||
5 | use Developtech\AgilityBundle\Manager\FeatureManager; |
||
6 | |||
7 | use Developtech\AgilityBundle\Entity\Feature; |
||
8 | use Developtech\AgilityBundle\Tests\Mock\User; |
||
9 | use Developtech\AgilityBundle\Entity\Project; |
||
10 | |||
11 | use Developtech\AgilityBundle\Utils\Slugger; |
||
12 | |||
13 | class FeatureManagerTest extends \PHPUnit_Framework_TestCase { |
||
14 | /** @var FeatureManager **/ |
||
15 | protected $manager; |
||
16 | |||
17 | public function setUp() { |
||
18 | $this->manager = new FeatureManager($this->getEntityManagerMock(), new Slugger(), Feature::class); |
||
0 ignored issues
–
show
|
|||
19 | } |
||
20 | |||
21 | public function testGetFeature() { |
||
22 | $feature = $this->manager->getFeature(1); |
||
23 | |||
24 | $this->assertInstanceOf(Feature::class, $feature); |
||
25 | $this->assertEquals(1, $feature->getId()); |
||
26 | $this->assertEquals('Calendar creation', $feature->getName()); |
||
27 | } |
||
28 | |||
29 | /** |
||
30 | * @expectedException \Symfony\Component\HttpKernel\Exception\NotFoundHttpException |
||
31 | * @expectedExceptionMessage Feature not found |
||
32 | */ |
||
33 | public function testGetFeatureWithUnexistingFeature() { |
||
34 | $this->manager->getFeature(2); |
||
35 | } |
||
36 | |||
37 | public function testGetProjectFeatures() { |
||
38 | $features = $this->manager->getProjectFeatures((new Project())); |
||
39 | |||
40 | $this->assertCount(3, $features); |
||
41 | $this->assertInstanceOf(Feature::class, $features[0]); |
||
42 | $this->assertEquals(2, $features[1]->getId()); |
||
43 | } |
||
44 | |||
45 | public function testCreateProductOwnerFeature() { |
||
46 | $feature = $this->manager->createProductOwnerFeature( |
||
47 | (new Project()), |
||
48 | 'Todo list', |
||
49 | 'List of all the remaining actions to perform', |
||
50 | Feature::STATUS_READY, |
||
51 | 95 |
||
52 | ); |
||
53 | $this->assertInstanceOf(Feature::class, $feature); |
||
54 | $this->assertInstanceOf(Project::class, $feature->getProject()); |
||
55 | $this->assertEquals('Todo list', $feature->getName()); |
||
56 | $this->assertEquals('todo-list', $feature->getSlug()); |
||
57 | $this->assertEquals('List of all the remaining actions to perform', $feature->getDescription()); |
||
58 | $this->assertEquals(Feature::STATUS_READY, $feature->getStatus()); |
||
59 | $this->assertEquals(95, $feature->getProductOwnerValue()); |
||
60 | } |
||
61 | |||
62 | public function getEntityManagerMock() { |
||
63 | $entityManagerMock = $this |
||
64 | ->getMockBuilder('Doctrine\ORM\EntityManager') |
||
65 | ->disableOriginalConstructor() |
||
66 | ->getMock() |
||
67 | ; |
||
68 | $entityManagerMock |
||
69 | ->expects($this->any()) |
||
70 | ->method('getRepository') |
||
71 | ->willReturnCallback([$this, 'getRepositoryMock']) |
||
72 | ; |
||
73 | $entityManagerMock |
||
74 | ->expects($this->any()) |
||
75 | ->method('persist') |
||
76 | ->willReturn(true) |
||
77 | ; |
||
78 | $entityManagerMock |
||
79 | ->expects($this->any()) |
||
80 | ->method('flush') |
||
81 | ->willReturn(true) |
||
82 | ; |
||
83 | return $entityManagerMock; |
||
84 | } |
||
85 | |||
86 | public function getRepositoryMock() { |
||
87 | $repositoryMock = $this |
||
88 | ->getMockBuilder('Developtech\AgilityBundle\Repository\FeatureRepository') |
||
89 | ->disableOriginalConstructor() |
||
90 | ->setMethods([ |
||
91 | 'find', |
||
92 | 'findByProject' |
||
93 | ]) |
||
94 | ->getMock() |
||
95 | ; |
||
96 | $repositoryMock |
||
97 | ->expects($this->any()) |
||
98 | ->method('find') |
||
99 | ->willReturnCallback([$this, 'getFeatureMock']) |
||
100 | ; |
||
101 | $repositoryMock |
||
102 | ->expects($this->any()) |
||
103 | ->method('findByProject') |
||
104 | ->willReturnCallback([$this, 'getFeaturesMock']) |
||
105 | ; |
||
106 | return $repositoryMock; |
||
107 | } |
||
108 | |||
109 | public function getFeatureMock($id) { |
||
110 | if($id === 2) { |
||
0 ignored issues
–
show
|
|||
111 | return null; |
||
112 | } |
||
113 | return |
||
114 | (new Feature()) |
||
115 | ->setId(1) |
||
116 | ->setName('Calendar creation') |
||
117 | ->setSlug('calendar-creation') |
||
118 | ->setDescription('Create a new calendar') |
||
119 | ->setProject(new Project()) |
||
120 | ->setResponsible(new User()) |
||
121 | ->setCreatedAt(new \DateTime()) |
||
122 | ->setUpdatedAt(new \DateTime()) |
||
123 | ; |
||
124 | } |
||
125 | |||
126 | public function getFeaturesMock() { |
||
127 | return [ |
||
128 | (new Feature()) |
||
129 | ->setId(1) |
||
130 | ->setName('Calendar creation') |
||
131 | ->setSlug('calendar-creation') |
||
132 | ->setDescription('Create a new calendar') |
||
133 | ->setProject(new Project()) |
||
134 | ->setResponsible(new User()) |
||
135 | ->setCreatedAt(new \DateTime()) |
||
136 | ->setUpdatedAt(new \DateTime()), |
||
137 | (new Feature()) |
||
138 | ->setId(2) |
||
139 | ->setName('Calendar edition') |
||
140 | ->setSlug('calendar-edition') |
||
141 | ->setDescription('Edit an existing calendar') |
||
142 | ->setProject(new Project()) |
||
143 | ->setResponsible(new User()) |
||
144 | ->setCreatedAt(new \DateTime()) |
||
145 | ->setUpdatedAt(new \DateTime()), |
||
146 | (new Feature()) |
||
147 | ->setId(3) |
||
148 | ->setName('Calendar removal') |
||
149 | ->setSlug('calendar-removal') |
||
150 | ->setDescription('Remove an existing calendar') |
||
151 | ->setProject(new Project()) |
||
152 | ->setResponsible(new User()) |
||
153 | ->setCreatedAt(new \DateTime()) |
||
154 | ->setUpdatedAt(new \DateTime()), |
||
155 | ]; |
||
156 | } |
||
157 | } |
||
158 |
This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.
If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.
In this case you can add the
@ignore
PhpDoc annotation to the duplicate definition and it will be ignored.