Skip to content

Commit 304f75d

Browse files
authored
Add unit test for ScanPackageHandler (#586)
1 parent 8b1d42e commit 304f75d

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Buddy\Repman\Tests\Unit\MessageHandler\Security;
6+
7+
use Buddy\Repman\Entity\Organization\Package;
8+
use Buddy\Repman\Message\Security\ScanPackage;
9+
use Buddy\Repman\MessageHandler\Security\ScanPackageHandler;
10+
use Buddy\Repman\Repository\PackageRepository;
11+
use Buddy\Repman\Service\Security\PackageScanner;
12+
use PHPUnit\Framework\MockObject\MockObject;
13+
use PHPUnit\Framework\TestCase;
14+
use Ramsey\Uuid\Uuid;
15+
16+
final class ScanPackageHandlerTest extends TestCase
17+
{
18+
/**
19+
* @var MockObject&PackageScanner
20+
*/
21+
private PackageScanner $packageScanner;
22+
/**
23+
* @var MockObject&PackageRepository
24+
*/
25+
private PackageRepository $packageRepository;
26+
27+
protected function setUp(): void
28+
{
29+
$this->packageScanner = $this->createMock(PackageScanner::class);
30+
$this->packageRepository = $this->createMock(PackageRepository::class);
31+
}
32+
33+
public function testHandlerIgnoresNonExistentPackages(): void
34+
{
35+
$this->packageScanner->expects(self::never())
36+
->method('scan');
37+
$this->packageRepository->expects(self::once())
38+
->method('find')
39+
->willReturn(null);
40+
41+
$packageToScan = new ScanPackage('ae8b3351-7874-40e0-a245-ae2f4c921038');
42+
$handler = new ScanPackageHandler($this->packageScanner, $this->packageRepository);
43+
$handler($packageToScan);
44+
}
45+
46+
public function testHandlerIgnoresPackageWithSecurityScanOptionDisabled(): void
47+
{
48+
$package = $this->getPackage(false);
49+
$this->packageScanner->expects(self::never())
50+
->method('scan');
51+
$this->packageRepository->expects(self::once())
52+
->method('find')
53+
->willReturn($package);
54+
55+
$packageToScan = new ScanPackage('ae8b3351-7874-40e0-a245-ae2f4c921038');
56+
$handler = new ScanPackageHandler($this->packageScanner, $this->packageRepository);
57+
$handler($packageToScan);
58+
}
59+
60+
public function testHandlerScansPackageWithSecurityScanOptionEnabled(): void
61+
{
62+
$package = $this->getPackage(true);
63+
$this->packageScanner->expects(self::once())
64+
->method('scan')
65+
->with($package);
66+
$this->packageRepository->expects(self::once())
67+
->method('find')
68+
->willReturn($package);
69+
70+
$packageToScan = new ScanPackage('ae8b3351-7874-40e0-a245-ae2f4c921038');
71+
$handler = new ScanPackageHandler($this->packageScanner, $this->packageRepository);
72+
$handler($packageToScan);
73+
}
74+
75+
/**
76+
* Helper method to create Package instance.
77+
*/
78+
private function getPackage(bool $enableSecurityScan): Package
79+
{
80+
return new Package(
81+
Uuid::fromString('ae8b3351-7874-40e0-a245-ae2f4c921038'),
82+
'type',
83+
'http://url',
84+
[],
85+
0,
86+
$enableSecurityScan
87+
);
88+
}
89+
}

0 commit comments

Comments
 (0)