24 use Symfony\Component\HttpFoundation\Request;
31 class ScanOptionsTest
extends \PHPUnit\Framework\TestCase
55 public function setUp() : void
58 $container = M::mock(
'ContainerBuilder');
59 $this->agentAdderMock = M::mock(
'overload:\AgentAdder');
60 $this->userDao = M::mock(UserDao::class);
61 $uploadDao = M::mock(UploadDao::class);
62 $uploadDao->shouldReceive(
'isAccessible')->andReturn(
true);
63 $container->shouldReceive(
'get')->withArgs([
"dao.upload"])
64 ->andReturn($uploadDao);
65 $container->shouldReceive(
'get')->withArgs([
"dao.user"])
66 ->andReturn($this->userDao);
68 $container->shouldReceive(
'get')->andReturn(
null);
70 self::$functions = M::mock(\stdClass::class);
71 self::$functions->shouldReceive(
'FolderListUploads_perm')
77 self::$functions->shouldReceive(
'register_plugin')
78 ->with(\Hamcrest\Matchers::identicalTo(
79 new ScanOptions(
null,
null,
null,
null)));
89 private function prepareRequest($request, $reuserOpts, $deciderOpts)
91 if (!empty($reuserOpts)) {
92 if (is_array($reuserOpts[
'upload'])) {
93 $reuserSelectors = [];
94 foreach ($reuserOpts[
'upload'] as $uploadId) {
95 $reuserSelectors[] = $uploadId .
"," . $reuserOpts[
'group'];
97 $request->request->set(
'uploadToReuse', $reuserSelectors);
99 $reuserSelector = $reuserOpts[
'upload'] .
"," . $reuserOpts[
'group'];
100 $request->request->set(
'uploadToReuse', $reuserSelector);
102 if (key_exists(
'rules', $reuserOpts)) {
103 $request->request->set(
'reuseMode', $reuserOpts[
'rules']);
106 if (!empty($deciderOpts)) {
107 $request->request->set(
'deciderRules', $deciderOpts);
108 if (in_array(
'nomosInMonk', $deciderOpts)) {
109 $request->request->set(
'Check_agent_nomos', 1);
127 $groupName =
"fossy";
128 $agentsToAdd = [
'agent_nomos',
'agent_ojo',
'agent_monk'];
130 'upload' => $reuseUploadId,
139 $_SERVER[
'REQUEST_URI'] =
"/api/v1/";
141 $mockApiVersion = $this->createMock(ApiVersion::class);
142 $mockApiVersion->method(
"getVersionFromUri")->willReturn(ApiVersion::V1);
144 $request =
new Request();
145 $request = $this->
prepareRequest($request, $reuserOpts, $deciderOpts);
147 $analysis =
new Analysis();
148 $analysis->setUsingString(
"nomos,ojo,monk");
150 $reuse =
new Reuser($reuseUploadId, $groupName);
152 $decider =
new Decider();
153 $decider->setOjoDecider(
true);
154 $decider->setNomosMonk(
true);
155 $decider->setConcludeLicenseType(
"Permissive");
157 $scancode =
new Scancode();
159 $scanOption =
new ScanOptions($analysis, $reuse, $decider, $scancode);
161 $this->userDao->shouldReceive(
'getGroupIdByName')
162 ->withArgs([$groupName])->andReturn($groupId);
163 $this->agentAdderMock->shouldReceive(
'scheduleAgents')
167 $scanOption->scheduleAgents($folderId, $uploadId);
170 public function testScheduleAgentsApiVersionV2()
176 $groupName =
"fossy";
177 $agentsToAdd = [
'agent_nomos',
'agent_ojo',
'agent_monk'];
179 'upload' => $reuseUploadId,
188 $_SERVER[
'REQUEST_URI'] =
"/api/v2/";
190 $mockApiVersion = $this->createMock(ApiVersion::class);
191 $mockApiVersion->method(
"getVersionFromUri")->willReturn(ApiVersion::V2);
193 $request =
new Request();
194 $request = $this->
prepareRequest($request, $reuserOpts, $deciderOpts);
196 $analysis =
new Analysis();
197 $analysis->setUsingString(
"nomos,ojo,monk");
199 $reuse =
new Reuser($reuseUploadId, $groupName);
201 $decider =
new Decider();
202 $decider->setOjoDecider(
true);
203 $decider->setNomosMonk(
true);
204 $decider->setConcludeLicenseType(
"Permissive");
206 $scancode =
new Scancode();
208 $scanOption =
new ScanOptions($analysis, $reuse, $decider, $scancode);
210 $this->userDao->shouldReceive(
'getGroupIdByName')
211 ->withArgs([$groupName])->andReturn($groupId);
212 $this->agentAdderMock->shouldReceive(
'scheduleAgents')
216 $scanOption->scheduleAgents($folderId, $uploadId);
226 $reuseUploadIds = [2, 5, 10];
230 $groupName =
"fossy";
231 $agentsToAdd = [
'agent_nomos',
'agent_ojo',
'agent_monk'];
233 $_SERVER[
'REQUEST_URI'] =
"/api/v1/";
235 $analysis =
new Analysis();
236 $analysis->setUsingString(
"nomos,ojo,monk");
238 $reuse =
new Reuser($reuseUploadIds, $groupName);
240 $decider =
new Decider();
241 $decider->setOjoDecider(
true);
242 $decider->setNomosMonk(
true);
243 $decider->setConcludeLicenseType(
"Permissive");
245 $scancode =
new Scancode();
247 $scanOption =
new ScanOptions($analysis, $reuse, $decider, $scancode);
249 $expectedSelectors = array_map(
function ($id) use ($groupId) {
250 return $id .
"," . $groupId;
253 $this->userDao->shouldReceive(
'getGroupIdByName')
254 ->withArgs([$groupName])->andReturn($groupId);
255 $this->agentAdderMock->shouldReceive(
'scheduleAgents')
257 ->withArgs(
function ($scheduledUploadId, $scheduledAgents, $scheduledRequest) use ($uploadId, $agentsToAdd, $expectedSelectors) {
258 return $scheduledUploadId === $uploadId &&
259 $scheduledAgents === $agentsToAdd &&
260 $scheduledRequest instanceof Request &&
261 $scheduledRequest->get(
'uploadToReuse') === $expectedSelectors;
265 $scanOption->scheduleAgents($folderId, $uploadId);
270 namespace Fossology\UI\Api\Models
272 function register_plugin($obj)
274 return \Fossology\Ui\Api\Test\Models\ScanOptionsTest::$functions
275 ->register_plugin($obj);
280 return \Fossology\Ui\Api\Test\Models\ScanOptionsTest::$functions
281 ->FolderListUploads_perm($parentFolder, $perm);
Contains the constants and helpers for authentication of user.
Model to hold analysis settings.
Model to hold info required by Reuser agent.
Model to hold add settings for new scan.
testScheduleAgentsApiVersionV1()
setUp()
Setup test objects.
testScheduleAgentsMultipleReuseUploads()
prepareRequest($request, $reuserOpts, $deciderOpts)
FolderListUploads_perm($ParentFolder, $perm)
Returns an array of uploads in a folder.