48 use Slim\Psr7\Factory\StreamFactory;
49 use Slim\Psr7\Headers;
50 use Slim\Psr7\Request;
53 function TryToDelete($uploadpk, $user_pk, $group_pk, $uploadDao)
56 $group_pk, $uploadDao);
164 private $copyrightPlugin;
169 private $downloadPlugin;
180 $container = M::mock(
'ContainerBuilder');
181 self::$functions = M::mock();
182 $this->dbHelper = M::mock(DbHelper::class);
183 $this->
dbManager = M::mock(DbManager::class);
184 $this->restHelper = M::mock(RestHelper::class);
185 $this->uploadDao = M::mock(UploadDao::class);
186 $this->folderDao = M::mock(FolderDao::class);
187 $this->agentDao = M::mock(AgentDao::class);
188 $this->userDao = M::mock(UserDao::class);
189 $this->clearingDao = M::mock(ClearingDao::class);
190 $this->licenseDao = M::mock(LicenseDao::class);
191 $this->reuseReportProcess = M::mock(ReuseReportProcessor::class);
192 $this->uploadPermissionDao = M::mock(UploadPermissionDao::class);
193 $this->downloadPlugin = M::mock(
"download");
195 $this->
dbManager->shouldReceive(
'getSingleRow')
196 ->withArgs([M::any(), [$this->groupId, UploadStatus::OPEN,
198 $this->dbHelper->shouldReceive(
'getDbManager')->andReturn($this->
dbManager);
200 $this->restHelper->shouldReceive(
'getDbHelper')->andReturn($this->dbHelper);
201 $this->restHelper->shouldReceive(
'getGroupId')->andReturn($this->groupId);
202 $this->restHelper->shouldReceive(
'getUserId')->andReturn($this->userId);
203 $this->restHelper->shouldReceive(
'getPlugin')->withArgs(array(
"download"))->andReturn($this->downloadPlugin);
204 $this->restHelper->shouldReceive(
'getUploadDao')
205 ->andReturn($this->uploadDao);
206 $this->restHelper->shouldReceive(
'getFolderDao')
207 ->andReturn($this->folderDao);
208 $this->restHelper->shouldReceive(
'getUserDao')
209 ->andReturn($this->userDao);
210 $container->shouldReceive(
'get')->withArgs([
'dao.license'])->andReturn(
212 $container->shouldReceive(
'get')->withArgs(array(
213 'dao.clearing'))->andReturn($this->clearingDao);
214 $container->shouldReceive(
'get')->withArgs(array(
215 'helper.restHelper'))->andReturn($this->restHelper);
216 $container->shouldReceive(
'get')->withArgs(array(
217 'dao.agent'))->andReturn($this->agentDao);
218 $container->shouldReceive(
'get')->withArgs(array(
219 'dao.upload'))->andReturn($this->uploadDao);
220 $container->shouldReceive(
'get')->withArgs(
221 [
'db.manager'])->andReturn($this->
dbManager);
222 $container->shouldReceive(
'get')->withArgs(array(
'dao.license'))->andReturn($this->licenseDao);
223 $container->shouldReceive(
'get')->withArgs(array(
224 'businessrules.reusereportprocessor'))->andReturn($this->reuseReportProcess);
226 $this->assertCountBefore = \Hamcrest\MatcherAssert::getCount();
227 $this->streamFactory =
new StreamFactory();
236 $this->addToAssertionCount(
237 \Hamcrest\MatcherAssert::getCount() - $this->assertCountBefore);
249 $response->getBody()->seek(0);
250 return json_decode($response->getBody()->getContents(),
true);
263 $itemId = ($id * 100) + 1;
264 $left = ($id * 100) + 2;
265 $right = ($id * 100) + 50;
266 return new ItemTreeBounds($itemId,
'uploadtree_a', $id, $left, $right);
284 $uploadName =
"top$id";
285 $uploadDate =
"01-01-2020";
289 $uploadName =
"child$id";
290 $uploadDate =
"02-01-2020";
294 $uploadName =
"child$id";
295 $uploadDate =
"03-01-2020";
301 $hash =
new Hash(
'sha1checksum',
'md5checksum',
'sha256checksum', $fileSize);
302 return new Upload($folderId, $folderName, $id, $description,
303 $uploadName, $uploadDate,
null, $hash);
341 $requestHeaders =
new Headers();
342 $body = $this->streamFactory->createStream();
343 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
344 "/uploads/$uploadId"), $requestHeaders, [], [], $body);
345 if ($version == ApiVersion::V2) {
346 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
349 $this->dbHelper->shouldReceive(
'doesIdExist')
350 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
351 $this->uploadDao->shouldReceive(
'isAccessible')
352 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
353 $this->uploadDao->shouldReceive(
'getParentItemBounds')
355 $this->dbHelper->shouldReceive(
'getUploads')
356 ->withArgs([$this->userId, $this->groupId, 100, 1, $uploadId, $options,
357 true, $version])->andReturn([1, [$upload->getArray()]]);
358 $expectedResponse = (
new ResponseHelper())->withJson($upload->getArray(), 200);
359 $actualResponse = $this->uploadController->getUploads($request,
361 $this->assertEquals($expectedResponse->getStatusCode(),
362 $actualResponse->getStatusCode());
375 $requestHeaders =
new Headers();
376 $body = $this->streamFactory->createStream();
377 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
378 "/uploads/$uploadId"), $requestHeaders, [], [], $body);
379 $this->dbHelper->shouldReceive(
'doesIdExist')
380 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
381 $this->uploadDao->shouldReceive(
'isAccessible')
382 ->withArgs([$uploadId, $this->groupId])->andReturn(
false);
383 $this->expectException(HttpForbiddenException::class);
385 $this->uploadController->getUploads($request,
new ResponseHelper(),
386 [
'id' => $uploadId]);
398 $this->testGetUploadWithFilters(ApiVersion::V1);
409 $this->testGetUploadWithFilters(ApiVersion::V2);
412 private function testGetUploadWithFilters($version)
424 $folderOptions = $options;
425 $folderOptions[
"folderId"] = $folderId;
426 $requestHeaders =
new Headers();
427 $body = $this->streamFactory->createStream();
428 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
430 $requestHeaders, [], [], $body);
431 if ($version == ApiVersion::V2) {
432 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
435 $this->folderDao->shouldReceive(
'isFolderAccessible')
436 ->withArgs([$folderId, $this->userId])->andReturn(
true)->once();
437 $this->dbHelper->shouldReceive(
'getUploads')
438 ->withArgs([$this->userId, $this->groupId, 100, 1,
null, $folderOptions,
439 true, $version])->andReturn([1, []])->once();
440 $this->uploadController->getUploads($request,
new ResponseHelper(), []);
444 $nameOptions = $options;
445 $nameOptions[
"name"] = $name;
446 $requestHeaders =
new Headers();
447 $body = $this->streamFactory->createStream();
448 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
451 if ($version == ApiVersion::V2) {
452 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
455 $this->dbHelper->shouldReceive(
'getUploads')
456 ->withArgs([$this->userId, $this->groupId, 100, 1,
null, $nameOptions,
457 true, $version])->andReturn([1, []])->once();
458 $this->uploadController->getUploads($request,
new ResponseHelper(), []);
461 $statusString =
"InProgress";
462 $status = UploadStatus::IN_PROGRESS;
463 $statusOptions = $options;
464 $statusOptions[
"status"] = $status;
465 $requestHeaders =
new Headers();
466 $body = $this->streamFactory->createStream();
467 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
469 $requestHeaders, [], [], $body);
470 if ($version == ApiVersion::V2) {
471 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
474 $this->dbHelper->shouldReceive(
'getUploads')
475 ->withArgs([$this->userId, $this->groupId, 100, 1,
null, $statusOptions,
476 true, $version])->andReturn([1, []])->once();
477 $this->uploadController->getUploads($request,
new ResponseHelper(), []);
481 $assigneeOptions = $options;
483 $requestHeaders =
new Headers();
484 $body = $this->streamFactory->createStream();
485 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
487 $requestHeaders, [], [], $body);
488 if ($version == ApiVersion::V2) {
489 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
492 $this->dbHelper->shouldReceive(
'getUploads')
493 ->withArgs([$this->userId, $this->groupId, 100, 1,
null, $assigneeOptions,
494 true, $version])->andReturn([1, []])->once();
495 $this->uploadController->getUploads($request,
new ResponseHelper(), []);
498 $since =
"2021-02-28";
499 $sinceOptions = $options;
500 $sinceOptions[
"since"] = strtotime($since);
501 $requestHeaders =
new Headers();
502 $body = $this->streamFactory->createStream();
503 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
505 $requestHeaders, [], [], $body);
506 if ($version == ApiVersion::V2) {
507 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
510 $this->dbHelper->shouldReceive(
'getUploads')
511 ->withArgs([$this->userId, $this->groupId, 100, 1,
null, $sinceOptions,
512 true, $version])->andReturn([1, []])->once();
513 $this->uploadController->getUploads($request,
new ResponseHelper(), []);
516 $statusString =
"Open";
517 $status = UploadStatus::OPEN;
518 $since =
"2021-02-28";
519 $combOptions = $options;
520 $combOptions[
"since"] = strtotime($since);
521 $combOptions[
"status"] = $status;
522 $requestHeaders =
new Headers();
523 $body = $this->streamFactory->createStream();
524 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
527 $requestHeaders, [], [], $body);
528 if ($version == ApiVersion::V2) {
529 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
532 $this->dbHelper->shouldReceive(
'getUploads')
533 ->withArgs([$this->userId, $this->groupId, 100, 1,
null, $combOptions,
534 true, $version])->andReturn([1, []])->once();
535 $this->uploadController->getUploads($request,
new ResponseHelper(), []);
544 $this->testGetUploads(ApiVersion::V1);
552 $this->testGetUploads(ApiVersion::V2);
554 private function testGetUploads($version)
568 $requestHeaders =
new Headers();
569 $body = $this->streamFactory->createStream();
570 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
571 "/uploads/"), $requestHeaders, [], [], $body);
572 if ($version == ApiVersion::V2) {
573 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
576 $this->dbHelper->shouldReceive(
'getUploads')
577 ->withArgs([$this->userId, $this->groupId, 100, 1,
null, $options,
true, $version])
578 ->andReturn([1, $uploads]);
579 $expectedResponse = (
new ResponseHelper())->withJson($uploads, 200);
580 $actualResponse = $this->uploadController->getUploads($request,
582 $this->assertEquals($expectedResponse->getStatusCode(),
583 $actualResponse->getStatusCode());
597 $requestHeaders =
new Headers();
598 $body = $this->streamFactory->createStream();
599 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost", 80,
600 "/uploads/"), $requestHeaders, [], [], $body);
601 $this->dbHelper->shouldReceive(
'doesIdExist')
602 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
603 $this->uploadDao->shouldReceive(
'isAccessible')
604 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
605 $this->uploadDao->shouldReceive(
'getParentItemBounds')
606 ->withArgs([$uploadId])->andReturn(
false);
607 $this->expectException(HttpServiceUnavailableException::class);
609 $this->uploadController->getUploads($request,
new ResponseHelper(),
610 [
'id' => $uploadId]);
640 $info =
new Info(202,
"Upload $uploadId will be copied to folder $folderId",
643 $this->restHelper->shouldReceive(
'copyUpload')
644 ->withArgs([$uploadId, $folderId,
true])->andReturn($info);
645 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(),
648 $requestHeaders =
new Headers();
649 $body = $this->streamFactory->createStream();
651 if($version==ApiVersion::V1){
652 $requestHeaders->setHeader(
'folderId', $folderId);
653 $requestHeaders->setHeader(
'action',
'copy');
654 $request =
new Request(
"PUT",
new Uri(
"HTTP",
"localhost"),
655 $requestHeaders, [], [], $body);
656 $actualResponse = $this->uploadController->moveUpload($request,
660 $request =
new Request(
"PUT",
new Uri(
"HTTP",
"localhost"),
661 $requestHeaders, [], [], $body);
662 if ($version == ApiVersion::V2) {
663 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
666 $actualResponse = $this->uploadController->moveUpload($request->withUri($request->getUri()->withQuery(
"folderId=$folderId&action=copy")),
669 $this->assertEquals($expectedResponse->getStatusCode(),
670 $actualResponse->getStatusCode());
704 $requestHeaders =
new Headers();
705 $requestHeaders->setHeader(
'folderId',
'alpha');
706 $requestHeaders->setHeader(
'action',
'move');
707 $body = $this->streamFactory->createStream();
708 $request =
new Request(
"PATCH",
new Uri(
"HTTP",
"localhost"),
709 $requestHeaders, [], [], $body);
710 if ($version==ApiVersion::V2) {
711 $request = $request->withQueryParams([
'folderId' =>
'alpha',
'action' =>
'move']);
713 $request = $request->withHeader(
"folderId",
"alpha")
714 ->withHeader(
"action",
"move");
716 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
717 $this->expectException(HttpBadRequestException::class);
719 $this->uploadController->moveUpload($request,
new ResponseHelper(),
720 [
'id' => $uploadId]);
755 $uploadDescription =
"Test Upload";
757 $requestHeaders =
new Headers();
758 $requestHeaders->setHeader(
'Content-Type',
'application/json');
759 if ($version == ApiVersion::V2) {
761 "location" =>
"data",
762 "folderId" => $folderId,
763 "uploadDescription" => $uploadDescription,
764 "ignoreScm" =>
"true",
765 "scanOptions" =>
"scanOptions",
766 "uploadType" =>
"vcs",
767 "excludeFolder" =>
"false"
771 "location" =>
"data",
772 "scanOptions" =>
"scanOptions"
774 $requestHeaders->setHeader(
'folderId', $folderId);
775 $requestHeaders->setHeader(
'uploadDescription', $uploadDescription);
776 $requestHeaders->setHeader(
'ignoreScm',
'true');
777 $requestHeaders->setHeader(
'Content-Type',
'application/json');
778 $requestHeaders->setHeader(
'uploadType',
'vcs');
781 $body = $this->streamFactory->createStream(json_encode(
784 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
785 $requestHeaders, [], [], $body);
786 if ($version == ApiVersion::V2) {
787 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
790 $uploadHelper = M::mock(
'overload:Fossology\UI\Api\Helper\UploadHelper');
791 if ($version == ApiVersion::V2) {
792 $uploadHelper->shouldReceive(
'createNewUpload')
793 ->withArgs([$reqBody[
"location"], $folderId, $uploadDescription,
'protected',
'true',
794 'vcs',
false,
false])
795 ->andReturn([
true,
'',
'', $uploadId]);
797 $uploadHelper->shouldReceive(
'createNewUpload')
798 ->withArgs([$reqBody[
"location"], $folderId, $uploadDescription,
'protected',
'true',
800 ->andReturn([
true,
'',
'', $uploadId]);
803 $info =
new Info(201, intval(20), InfoType::INFO);
805 $uploadHelper->shouldReceive(
'handleScheduleAnalysis')->withArgs([$uploadId,$folderId,$reqBody[
"scanOptions"],
false])
808 $this->folderDao->shouldReceive(
'getAllFolderIds')->andReturn([2,3,4]);
809 $this->folderDao->shouldReceive(
'isFolderAccessible')
810 ->withArgs([$folderId])->andReturn(
true);
812 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(),
814 $actualResponse = $this->uploadController->postUpload($request,
816 $this->assertEquals($expectedResponse->getStatusCode(),
817 $actualResponse->getStatusCode());
831 $requestHeaders =
new Headers();
832 $requestHeaders->setHeader(
'Content-Type',
'application/json');
834 $body = $this->streamFactory->createStream(json_encode([
835 "location" =>
"vcsData",
836 "folderId" => $folderId,
837 "uploadDescription" =>
"Test Upload",
838 "ignoreScm" =>
"true",
839 "scanOptions" =>
"scanOptions",
840 "uploadType" =>
"vcs"
843 $request =
new Request(
845 new Uri(
"HTTP",
"localhost"),
852 $request = $request->withAttribute(
853 ApiVersion::ATTRIBUTE_NAME,
857 M::mock(
'overload:Fossology\UI\Api\Helper\UploadHelper');
859 $this->expectException(HttpBadRequestException::class);
861 $this->uploadController->postUpload($request,
new ResponseHelper(), []);
894 $uploadDescription =
"Test Upload";
896 $requestHeaders =
new Headers();
897 $requestHeaders->setHeader(
'Content-type',
'application/json');
898 if ($version == ApiVersion::V2) {
899 $body = $this->streamFactory->createStream(json_encode([
900 "location" =>
"data",
901 "folderId" => $folderId,
902 "uploadDescription" => $uploadDescription,
903 "ignoreScm" =>
"true",
904 "scanOptions" =>
"scanOptions",
905 "uploadType" =>
"vcs"
908 $body = $this->streamFactory->createStream(json_encode([
909 "location" =>
"data",
910 "scanOptions" =>
"scanOptions"
912 $requestHeaders->setHeader(
'folderId', $folderId);
913 $requestHeaders->setHeader(
'uploadDescription', $uploadDescription);
914 $requestHeaders->setHeader(
'ignoreScm',
'true');
915 $requestHeaders->setHeader(
'Content-Type',
'application/json');
916 $requestHeaders->setHeader(
'uploadType',
'vcs');
918 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
919 $requestHeaders, [], [], $body);
920 if ($version == ApiVersion::V2) {
921 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
925 $uploadHelper = M::mock(
'overload:Fossology\UI\Api\Helper\UploadHelper');
927 $this->folderDao->shouldReceive(
'getAllFolderIds')->andReturn([2,3,4]);
928 $this->folderDao->shouldReceive(
'isFolderAccessible')
929 ->withArgs([$folderId])->andReturn(
false);
930 $this->expectException(HttpForbiddenException::class);
932 $this->uploadController->postUpload($request,
new ResponseHelper(),
967 $uploadDescription =
"Test Upload";
969 $requestHeaders =
new Headers();
970 $requestHeaders->setHeader(
'Content-type',
'application/json');
971 if ($version == ApiVersion::V2) {
972 $body = $this->streamFactory->createStream(json_encode([
973 "location" =>
"vcsData",
974 "folderId" => $folderId,
975 "uploadDescription" => $uploadDescription,
976 "ignoreScm" =>
"true",
977 "scanOptions" =>
"scanOptions",
978 "uploadType" =>
"vcs"
981 $body = $this->streamFactory->createStream(json_encode([
982 "location" =>
"vcsData",
983 "scanOptions" =>
"scanOptions"
985 $requestHeaders->setHeader(
'folderId', $folderId);
986 $requestHeaders->setHeader(
'uploadDescription', $uploadDescription);
987 $requestHeaders->setHeader(
'ignoreScm',
'true');
988 $requestHeaders->setHeader(
'Content-Type',
'application/json');
989 $requestHeaders->setHeader(
'uploadType',
'vcs');
991 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
992 $requestHeaders, [], [], $body);
993 if ($version == ApiVersion::V2) {
994 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
998 $uploadHelper = M::mock(
'overload:Fossology\UI\Api\Helper\UploadHelper');
1000 $this->folderDao->shouldReceive(
'getAllFolderIds')->andReturn([2,3,4]);
1001 $this->expectException(HttpNotFoundException::class);
1003 $this->uploadController->postUpload($request,
new ResponseHelper(),
1038 $uploadDescription =
"Test Upload";
1039 $errorMessage =
"Failed to insert upload record";
1042 $requestHeaders =
new Headers();
1043 $requestHeaders->setHeader(
'Content-type',
'application/json');
1044 if ($version == ApiVersion::V2) {
1045 $body = $this->streamFactory->createStream(json_encode([
1046 "location" =>
"vcsData",
1047 "folderId" => $folderId,
1048 "uploadDescription" => $uploadDescription,
1049 "ignoreScm" =>
"true",
1050 "scanOptions" =>
"scanOptions",
1051 "uploadType" =>
"vcs",
1052 "excludeFolder" =>
"false"
1055 $body = $this->streamFactory->createStream(json_encode([
1056 "location" =>
"vcsData",
1057 "scanOptions" =>
"scanOptions"
1059 $requestHeaders->setHeader(
'folderId', $folderId);
1060 $requestHeaders->setHeader(
'uploadDescription', $uploadDescription);
1061 $requestHeaders->setHeader(
'ignoreScm',
'true');
1062 $requestHeaders->setHeader(
'Content-Type',
'application/json');
1063 $requestHeaders->setHeader(
'uploadType',
'vcs');
1066 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
1067 $requestHeaders, [], [], $body);
1068 if ($version == ApiVersion::V2) {
1069 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
1073 $uploadHelper = M::mock(
'overload:Fossology\UI\Api\Helper\UploadHelper');
1074 if ($version == ApiVersion::V2) {
1075 $uploadHelper->shouldReceive(
'createNewUpload')
1076 ->withArgs([
'vcsData', $folderId, $uploadDescription,
'protected',
'true',
1077 'vcs',
false,
false])
1078 ->andReturn([
false, $errorMessage, $errorDesc, [-1]]);
1080 $uploadHelper->shouldReceive(
'createNewUpload')
1081 ->withArgs([
'vcsData', $folderId, $uploadDescription,
'protected',
'true',
1083 ->andReturn([
false, $errorMessage, $errorDesc, [-1]]);
1086 $this->folderDao->shouldReceive(
'getAllFolderIds')->andReturn([2,3,4]);
1087 $this->folderDao->shouldReceive(
'isFolderAccessible')
1088 ->withArgs([$folderId])->andReturn(
true);
1089 $this->expectException(HttpInternalServerErrorException::class);
1091 $this->uploadController->postUpload($request,
new ResponseHelper(), []);
1103 $this->testGetUploadLicenses(ApiVersion::V1);
1114 $this->testGetUploadLicenses(ApiVersion::V2);
1116 private function testGetUploadLicenses($version)
1120 [
'agentName' =>
'nomos',
'currentAgentId' => 2,
'isAgentRunning' =>
false],
1121 [
'agentName' =>
'monk',
'currentAgentId' => 3,
'isAgentRunning' =>
false]
1123 $licenseResponse = [
1124 [
'filePath' =>
'filea',
'agentFindings' =>
'MIT',
'conclusions' =>
'MIT'],
1125 [
'filePath' =>
'fileb',
'agentFindings' =>
'MIT',
1126 'conclusions' =>
'No_license_found']
1129 $requestHeaders =
new Headers();
1130 $body = $this->streamFactory->createStream();
1131 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost", 80,
1133 "=nomos,monk&containers=false"),
1134 $requestHeaders, [], [], $body);
1135 if ($version == ApiVersion::V2) {
1136 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,
1139 $this->dbHelper->shouldReceive(
'doesIdExist')
1140 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1141 $this->uploadDao->shouldReceive(
'isAccessible')
1142 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1143 $this->uploadDao->shouldReceive(
'getParentItemBounds')
1144 ->withArgs([$uploadId])->andReturn($this->
getUploadBounds($uploadId));
1145 $this->agentDao->shouldReceive(
'arsTableExists')
1146 ->withArgs([M::anyOf(
'nomos',
'monk')])->andReturn(
true);
1148 $scanJobProxy = M::mock(
'overload:Fossology\Lib\Proxy\ScanJobProxy');
1149 $scanJobProxy->shouldReceive(
'createAgentStatus')
1150 ->withArgs([[
'nomos',
'monk']])
1151 ->andReturn($agentsRun);
1153 $uploadHelper = M::mock(
'overload:Fossology\UI\Api\Helper\UploadHelper');
1154 $uploadHelper->shouldReceive(
'getUploadLicenseList')
1155 ->withArgs([$uploadId, [
'nomos',
'monk'],
false,
true,
false, 0, 50, $version])
1156 ->andReturn(([[$licenseResponse], 1]));
1158 $expectedResponse = (
new ResponseHelper())->withJson($licenseResponse, 200);
1160 $actualResponse = $this->uploadController->getUploadLicenses($request,
1162 $this->assertEquals($expectedResponse->getStatusCode(),
1163 $actualResponse->getStatusCode());
1166 $this->assertEquals(
'1',
1167 $actualResponse->getHeaderLine(
'X-Total-Pages'));
1202 [
'agentName' =>
'nomos',
'currentAgentId' => 2,
'isAgentRunning' =>
true],
1203 [
'agentName' =>
'monk',
'currentAgentId' => 3,
'isAgentRunning' =>
false]
1206 $requestHeaders =
new Headers();
1207 $body = $this->streamFactory->createStream();
1208 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost", 80,
1210 "=nomos,monk&containers=false"),
1211 $requestHeaders, [], [], $body);
1212 if ($version == ApiVersion::V2) {
1213 $request = $request->withQueryParams([
'page' => 1,
'limit' => 2,
"agent" =>
"nomos,monk" ]);
1215 $request = $request->withHeader(
"limit",2)
1216 ->withHeader(
"page",1);
1218 $request = $request->withAttribute(ApiVersion::ATTRIBUTE_NAME,$version);
1220 $this->agentDao->shouldReceive(
"arsTableExists")->withAnyArgs()->andReturn(
true);
1221 $this->agentDao->shouldReceive(
"getRunningAgentIds")->withAnyArgs()->andReturn([$agentsRun]);
1222 $this->agentDao->shouldReceive(
"getSuccessfulAgentEntries")->withAnyArgs()->andReturn([]);
1223 $scanJobProxy = M::mock(
'overload:Fossology\Lib\Proxy\ScanJobProxy');
1224 $this->dbHelper->shouldReceive(
'doesIdExist')
1225 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1226 $this->uploadDao->shouldReceive(
'isAccessible')
1227 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1228 $this->uploadDao->shouldReceive(
'getParentItemBounds')
1229 ->withArgs([$uploadId])->andReturn($this->
getUploadBounds($uploadId));
1230 $this->agentDao->shouldReceive(
'arsTableExists')
1231 ->withArgs([M::anyOf(
'nomos',
'monk')])->andReturn(
true);
1233 $scanJobProxy->shouldReceive(
'createAgentStatus')
1234 ->withArgs([[
'nomos',
'monk']])
1235 ->andReturn($agentsRun);
1236 $this->expectException(HttpServiceUnavailableException::class);
1238 $this->uploadController->getUploadLicenses($request,
new ResponseHelper(),
1239 [
'id' => $uploadId]);
1251 $status = UploadStatus::REJECTED;
1252 $comment =
"Not helpful";
1254 $resource = fopen(
'data://text/plain;base64,' .
1255 base64_encode($comment),
'r+');
1256 $body = $this->streamFactory->createStreamFromResource($resource);
1257 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost", 80,
1260 new Headers(), [], [], $body);
1262 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')
1263 ->withArgs([$this->userId, $this->groupId])
1265 $this->userDao->shouldReceive(
'getUserChoices')
1266 ->withArgs([$this->groupId])
1267 ->andReturn([$this->userId =>
"fossy", $assignee =>
"friendly-fossy"]);
1268 $this->
dbManager->shouldReceive(
'getSingleRow')
1269 ->withArgs([M::any(), [$assignee, $this->groupId, $upload], M::any()]);
1270 $this->
dbManager->shouldReceive(
'getSingleRow')
1271 ->withArgs([M::any(), [$status, $comment, $this->groupId, $upload],
1273 $this->
dbManager->shouldReceive(
'getSingleRow')
1274 ->withArgs([M::any(), [$upload], M::any()])
1275 ->andReturn([
"exists" =>
""]);
1277 $info =
new Info(202,
"Upload updated successfully.", InfoType::INFO);
1278 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(),
1280 $actualResponse = $this->uploadController->updateUpload($request,
1282 $this->assertEquals($expectedResponse->getStatusCode(),
1283 $actualResponse->getStatusCode());
1297 $comment =
"Not helpful";
1299 $resource = fopen(
'data://text/plain;base64,' .
1300 base64_encode($comment),
'r+');
1301 $body = $this->streamFactory->createStreamFromResource($resource);
1302 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost", 80,
1305 new Headers(), [], [], $body);
1307 $this->userDao->shouldReceive(
'isAdvisorOrAdmin')
1308 ->withArgs([$this->userId, $this->groupId])
1310 $this->expectException(HttpForbiddenException::class);
1312 $this->uploadController->updateUpload($request,
new ResponseHelper(),
1324 $licenseIds = array();
1326 $licenseIds[$licenseId] = $licenseId;
1327 $license =
new License($licenseId,
"MIT",
"MIT License",
"risk",
"texts", [],
1330 $this->uploadDao->shouldReceive(
'isAccessible')
1331 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1332 $this->dbHelper->shouldReceive(
'doesIdExist')
1333 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1334 $this->clearingDao->shouldReceive(
'getMainLicenseIds')->withArgs([$uploadId, $this->groupId])->andReturn($licenseIds);
1335 $this->licenseDao->shouldReceive(
'getLicenseObligations')->withArgs([[$licenseId],
false])->andReturn([]);
1336 $this->licenseDao->shouldReceive(
'getLicenseObligations')->withArgs([[$licenseId],
true])->andReturn([]);
1337 $this->licenseDao->shouldReceive(
'getLicenseById')->withArgs([$licenseId])->andReturn($license);
1339 $licenses[] = $license->getArray();
1340 $expectedResponse = (
new ResponseHelper())->withJson($licenses, 200);
1341 $actualResponse = $this->uploadController->getMainLicenses(
null,
new ResponseHelper(), [
'id' => $uploadId]);
1342 $this->assertEquals($expectedResponse->getStatusCode(), $actualResponse->getStatusCode());
1358 "shortName" => $shortName,
1360 $license =
new License(2, $shortName,
"MIT License",
"risk",
"texts", [],
1362 $licenseIds[$licenseId] = $licenseId;
1363 $this->uploadDao->shouldReceive(
'isAccessible')
1364 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1365 $this->dbHelper->shouldReceive(
'doesIdExist')
1366 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1367 $this->licenseDao->shouldReceive(
'getLicenseByShortName')
1368 ->withArgs([$shortName, $this->groupId])->andReturn($license);
1369 $this->clearingDao->shouldReceive(
'getMainLicenseIds')->withArgs([$uploadId, $this->groupId])->andReturn($licenseIds);
1370 $this->clearingDao->shouldReceive(
'makeMainLicense')
1371 ->withArgs([$uploadId, $this->groupId, $license->getId()])->andReturn(
null);
1373 $info =
new Info(200,
"Successfully added new main license", InfoType::INFO);
1375 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(), $info->getCode());
1376 $reqBody = $this->streamFactory->createStream(json_encode(
1379 $requestHeaders =
new Headers();
1380 $requestHeaders->setHeader(
'Content-Type',
'application/json');
1381 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
1382 $requestHeaders, [], [], $reqBody);
1384 $actualResponse = $this->uploadController->setMainLicense($request,
new ResponseHelper(), [
'id' => $uploadId]);
1386 $this->assertEquals($expectedResponse->getStatusCode(),
1387 $actualResponse->getStatusCode());
1403 "shortName" => $shortName,
1405 $license =
new License($licenseId, $shortName,
"MIT License",
"risk",
"texts", [],
1407 $licenseIds[$licenseId] = $licenseId;
1408 $this->uploadDao->shouldReceive(
'isAccessible')
1409 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1410 $this->dbHelper->shouldReceive(
'doesIdExist')
1411 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1412 $this->licenseDao->shouldReceive(
'getLicenseByShortName')
1413 ->withArgs([$shortName, $this->groupId])->andReturn($license);
1414 $this->clearingDao->shouldReceive(
'getMainLicenseIds')->withArgs([$uploadId, $this->groupId])->andReturn($licenseIds);
1415 $this->clearingDao->shouldReceive(
'makeMainLicense')
1416 ->withArgs([$uploadId, $this->groupId, $license->getId()])->andReturn(
null);
1418 $reqBody = $this->streamFactory->createStream(json_encode(
1421 $requestHeaders =
new Headers();
1422 $requestHeaders->setHeader(
'Content-Type',
'application/json');
1423 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
1424 $requestHeaders, [], [], $reqBody);
1425 $this->expectException(HttpBadRequestException::class);
1427 $this->uploadController->setMainLicense($request,
new ResponseHelper(), [
'id' => $uploadId]);
1441 $license =
new License($licenseId, $shortName,
"MIT License",
"risk",
"texts", [],
1443 $licenseIds[$licenseId] = $licenseId;
1445 $this->uploadDao->shouldReceive(
'isAccessible')
1446 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1447 $this->dbHelper->shouldReceive(
'doesIdExist')
1448 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1449 $this->dbHelper->shouldReceive(
'doesIdExist')
1450 ->withArgs([
"license_ref",
"rf_pk", $licenseId])->andReturn(
true);
1451 $this->clearingDao->shouldReceive(
'getMainLicenseIds')->withArgs([$uploadId, $this->groupId])->andReturn($licenseIds);
1453 $this->clearingDao->shouldReceive(
'removeMainLicense')->withArgs([$uploadId, $this->groupId, $licenseId])->andReturn(
null);
1454 $this->licenseDao->shouldReceive(
'getLicenseByShortName')
1455 ->withArgs([$shortName, $this->groupId])->andReturn($license);
1457 $info =
new Info(200,
"Main license removed successfully.", InfoType::INFO);
1458 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(),
1460 $actualResponse = $this->uploadController->removeMainLicense(
null,
1461 new ResponseHelper(), [
'id' => $uploadId,
'shortName' => $shortName]);
1462 $this->assertEquals($expectedResponse->getStatusCode(),
1463 $actualResponse->getStatusCode());
1476 $this->uploadDao->shouldReceive(
'isAccessible')
1477 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1478 $this->dbHelper->shouldReceive(
'doesIdExist')
1479 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1480 $this->uploadDao->shouldReceive(
"getUploadtreeTableName")->withArgs([$uploadId])->andReturn(
"uploadtree");
1481 $this->uploadDao->shouldReceive(
"getGlobalDecisionSettingsFromInfo")->andReturn(
false);
1482 $this->agentDao->shouldReceive(
"arsTableExists")->andReturn(
true);
1483 $this->agentDao->shouldReceive(
"getSuccessfulAgentEntries")->andReturn([[
'agent_id' => 1,
'agent_rev' => 1]]);
1484 $this->agentDao->shouldReceive(
"getCurrentAgentRef")->andReturn(
new AgentRef(1,
"agent", 1));
1485 $this->
dbManager->shouldReceive(
"getSingleRow")
1486 ->withArgs([M::any(), [],
'no_license_uploadtree' . $uploadId])
1487 ->andReturn([
'count' => 1]);
1488 $this->
dbManager->shouldReceive(
"getSingleRow")
1489 ->withArgs([M::any(), [],
'already_cleared_uploadtree' . $uploadId])
1490 ->andReturn([
'count' => 0]);
1491 $this->licenseDao->shouldReceive(
'getLicenseByShortName')
1492 ->withArgs([
'No_license_found'])->andReturn(
null);
1493 $this->licenseDao->shouldReceive(
'getLicenseByShortName')
1494 ->withArgs([
'Void'])->andReturn(
null);
1496 "totalFilesOfInterest" => 1,
1497 "totalFilesCleared" => 1,
1500 $actualResponse = $this->uploadController->getClearingProgressInfo(
null,
1502 $this->assertEquals($expectedResponse->getStatusCode(),
1503 $actualResponse->getStatusCode());
1515 $reuseReportSummary = [
1516 'declearedLicense' =>
"",
1517 'clearedLicense' =>
"MIT, BSD-3-Clause",
1518 'usedLicense' =>
"",
1519 'unusedLicense' =>
"",
1520 'missingLicense' =>
"MIT, BSD-3-Clause",
1522 $this->uploadDao->shouldReceive(
'isAccessible')
1523 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1524 $this->dbHelper->shouldReceive(
'doesIdExist')
1525 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1526 $this->reuseReportProcess->shouldReceive(
'getReuseSummary')
1527 ->withArgs([$uploadId])->andReturn($reuseReportSummary);
1529 $expectedResponse = (
new ResponseHelper())->withJson($reuseReportSummary,
1531 $actualResponse = $this->uploadController->getReuseReportSummary(
1533 $this->assertEquals($expectedResponse->getStatusCode(),
1534 $actualResponse->getStatusCode());
1552 $this->uploadDao->shouldReceive(
'isAccessible')
1553 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1554 $this->dbHelper->shouldReceive(
'doesIdExist')
1555 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1557 $this->restHelper->shouldReceive(
'getUploadPermissionDao')->andReturn($this->uploadPermissionDao);
1558 $this->uploadPermissionDao->shouldReceive(
"getPublicPermission")->withAnyArgs()->andReturn($publicPerm);
1559 $this->uploadPermissionDao->shouldReceive(
"getPermissionGroups")->withAnyArgs()->andReturn([]);
1560 $this->restHelper->shouldReceive(
"getGroupId")->andReturn($this->groupId);
1561 $this->restHelper->shouldReceive(
"getUserId")->andReturn($this->userId);
1562 $this->restHelper->shouldReceive(
"getUploadDao")->andReturn($this->uploadDao);
1564 $body = $this->streamFactory->createStream();
1565 $requestHeaders =
new Headers();
1566 $request =
new Request(
"PATCH",
new Uri(
"HTTP",
"localhost"),
1567 $requestHeaders, [], [], $body);
1569 $actualResponse = $this->uploadController->getGroupsWithPermissions($request,$response,[
"id"=>$this->groupId]);
1570 $this->assertEquals(200,$actualResponse->getStatusCode());
1583 $this->dbHelper->shouldReceive(
'doesIdExist')->withAnyArgs()->andReturn(
false);
1585 $this->dbHelper->shouldReceive(
'doesIdExist')
1586 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
false);
1587 $body = $this->streamFactory->createStream();
1588 $requestHeaders =
new Headers();
1589 $request =
new Request(
"PATCH",
new Uri(
"HTTP",
"localhost"),
1590 $requestHeaders, [], [], $body);
1592 $this->expectException(HttpNotFoundException::class);
1593 $this->uploadController->getGroupsWithPermissions($request,$response,[
"id"=>$this->groupId]);
1605 $this->dbHelper->shouldReceive(
'doesIdExist')->withAnyArgs()->andReturn(
true);
1606 $this->uploadDao->shouldReceive(
'isAccessible')->withAnyArgs()->andReturn(
false);
1608 $body = $this->streamFactory->createStream();
1609 $requestHeaders =
new Headers();
1610 $request =
new Request(
"PATCH",
new Uri(
"HTTP",
"localhost"),
1611 $requestHeaders, [], [], $body);
1613 $this->expectException(HttpForbiddenException::class);
1614 $this->uploadController->getGroupsWithPermissions($request,$response,[
"id"=>$this->groupId]);
1627 [
"uploadId" => $uploadId,
'agentName' =>
'nomos',
'successfulAgents'=> [],
'currentAgentId' => 2,
'isAgentRunning' =>
false],
1628 [
"uploadId" => $uploadId,
'agentName' =>
'monk',
"successfulAgents" => [],
'currentAgentId' => 3,
'isAgentRunning' =>
false]
1631 $this->restHelper->shouldReceive(
"getGroupId")->andReturn(
$groupId);
1632 $this->agentDao->shouldReceive(
"getCurrentAgentRef")->withAnyArgs()->andReturn(
new AgentRef($uploadId,
"momoa",45));
1634 $this->uploadDao->shouldReceive(
"isAccessible")->withAnyArgs()->andReturn(
true);
1635 $this->dbHelper->shouldReceive(
'doesIdExist')->withAnyArgs()->andReturn(
true);
1636 $scanJobProxy = M::mock(
'overload:Fossology\Lib\Proxy\ScanJobProxy');
1637 $scanJobProxy->shouldReceive(
'createAgentStatus')
1639 ->andReturn($agentsRun);
1640 $this->agentDao->shouldReceive(
"arsTableExists")->withAnyArgs()->andReturn(
true);
1641 $this->agentDao->shouldReceive(
"getRunningAgentIds")->withAnyArgs()->andReturn([$agentsRun]);
1642 $this->agentDao->shouldReceive(
"getSuccessfulAgentEntries")->withAnyArgs()->andReturn([]);
1644 $body = $this->streamFactory->createStream();
1645 $requestHeaders =
new Headers();
1646 $request =
new Request(
"POST",
new Uri(
"HTTP",
"localhost"),
1647 $requestHeaders, [], [], $body);
1649 $actualResponse = $this->uploadController->getAllAgents($request,
new ResponseHelper(),[
"id"=>$uploadId]);
1650 $this->assertEquals(200,$actualResponse->getStatusCode());
1662 $this->dbHelper->shouldReceive(
'doesIdExist')->withAnyArgs()->andReturn(
false);
1663 $this->dbHelper->shouldReceive(
'doesIdExist')
1664 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
false);
1666 $this->expectException(HttpNotFoundException::class);
1667 $this->uploadController->getAllAgents(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
1680 $this->uploadDao->shouldReceive(
'isAccessible')
1681 ->withArgs([$uploadId, $this->groupId])->andReturn(
false);
1682 $this->dbHelper->shouldReceive(
'doesIdExist')
1683 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1685 $this->expectException(HttpForbiddenException::class);
1686 $this->uploadController->getAllAgents(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
1700 $uploadName =
"Testing name";
1701 $this->uploadDao->shouldReceive(
'getParentItemBounds')
1703 $this->uploadDao->shouldReceive(
"isAccessible")->withAnyArgs()->andReturn(
true);
1704 $this->dbHelper->shouldReceive(
'doesIdExist')->withAnyArgs()->andReturn(
true);
1705 $this->restHelper->shouldReceive(
'getUploadDao')->andReturn($this->uploadDao);
1706 $this->uploadDao->shouldReceive(
"getUploadtreeTableName")->withArgs([$uploadId])->andReturn($uploadName);
1707 $this->clearingDao->shouldReceive(
"getClearedLicenseIdAndMultiplicities")->withAnyArgs()->andReturn([]);
1709 $actualResponse = $this->uploadController->getEditedLicenses(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
1710 $this->assertEquals(200,$actualResponse->getStatusCode());
1723 $this->uploadDao->shouldReceive(
'getParentItemBounds')
1725 $this->uploadDao->shouldReceive(
"isAccessible")->withAnyArgs()->andReturn(
true);
1726 $this->dbHelper->shouldReceive(
'doesIdExist')->withAnyArgs()->andReturn(
false);
1728 $this->expectException(HttpNotFoundException::class);
1742 $this->uploadDao->shouldReceive(
'getParentItemBounds')
1744 $this->uploadDao->shouldReceive(
"isAccessible")->withAnyArgs()->andReturn(
false);
1745 $this->dbHelper->shouldReceive(
'doesIdExist')->withAnyArgs()->andReturn(
true);
1747 $this->expectException(HttpForbiddenException::class);
1763 $this->uploadDao->shouldReceive(
'isAccessible')
1764 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1765 $this->dbHelper->shouldReceive(
'doesIdExist')
1766 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1767 $this->restHelper->shouldReceive(
'getUploadDao')->andReturn($this->uploadDao);
1768 $this->uploadDao->shouldReceive(
"getUploadtreeTableName")
1769 ->withArgs([$uploadId])->andReturn(
"uploadtree");
1770 $this->uploadDao->shouldReceive(
'getParentItemBounds')
1773 $scanJobProxy = M::mock(
'overload:Fossology\Lib\Proxy\ScanJobProxy');
1774 $scanJobProxy->shouldReceive(
'createAgentStatus')->withAnyArgs()->andReturn($agentsRun);
1775 $scanJobProxy->shouldReceive(
'getLatestSuccessfulAgentIds')->andReturn([2]);
1782 'spdx_id' =>
'GPL-2.0-only',
1785 $this->licenseDao->shouldReceive(
'getLicenseHistogram')
1786 ->withAnyArgs()->andReturn($histogram);
1788 $body = $this->streamFactory->createStream();
1789 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost"),
1790 new Headers(), [], [], $body);
1792 $actualResponse = $this->uploadController->getScannedLicenses(
1795 $this->assertEquals(200, $actualResponse->getStatusCode());
1797 $this->assertCount(1, $responseBody);
1798 $this->assertEquals(2, $responseBody[0][
'id']);
1799 $this->assertEquals(
'GPL-2.0-only', $responseBody[0][
'shortname']);
1800 $this->assertEquals(10, $responseBody[0][
'occurence']);
1801 $this->assertEquals(5, $responseBody[0][
'unique']);
1817 $this->uploadDao->shouldReceive(
'isAccessible')
1818 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1819 $this->dbHelper->shouldReceive(
'doesIdExist')
1820 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1821 $this->restHelper->shouldReceive(
'getUploadDao')->andReturn($this->uploadDao);
1822 $this->uploadDao->shouldReceive(
"getUploadtreeTableName")
1823 ->withArgs([$uploadId])->andReturn(
"uploadtree");
1824 $this->uploadDao->shouldReceive(
'getParentItemBounds')
1827 $scanJobProxy = M::mock(
'overload:Fossology\Lib\Proxy\ScanJobProxy');
1828 $scanJobProxy->shouldReceive(
'createAgentStatus')->withAnyArgs()->andReturn($agentsRun);
1829 $scanJobProxy->shouldReceive(
'getLatestSuccessfulAgentIds')->andReturn([2]);
1838 LicenseDao::NO_LICENSE_FOUND => [
1842 'spdx_id' => LicenseDao::NO_LICENSE_FOUND,
1845 $this->licenseDao->shouldReceive(
'getLicenseHistogram')
1846 ->withAnyArgs()->andReturn($histogram);
1848 $body = $this->streamFactory->createStream();
1849 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost"),
1850 new Headers(), [], [], $body);
1852 $actualResponse = $this->uploadController->getScannedLicenses(
1855 $this->assertEquals(200, $actualResponse->getStatusCode());
1857 $this->assertCount(2, $responseBody);
1859 $noLicenseEntry = array_values(array_filter($responseBody,
function ($e) {
1860 return $e[
'shortname'] === LicenseDao::NO_LICENSE_FOUND;
1862 $this->assertEquals(0, $noLicenseEntry[
'id']);
1863 $this->assertEquals(7, $noLicenseEntry[
'occurence']);
1875 $this->uploadDao->shouldReceive(
'isAccessible')
1876 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1877 $this->dbHelper->shouldReceive(
'doesIdExist')
1878 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
false);
1880 $body = $this->streamFactory->createStream();
1881 $requestHeaders =
new Headers();
1882 $request =
new Request(
"GET",
new Uri(
"HTTP",
"localhost"),
1883 $requestHeaders, [], [], $body);
1885 $this->expectException(HttpNotFoundException::class);
1886 $this->uploadController->getScannedLicenses($request,
new ResponseHelper(),[
"id"=>$uploadId]);
1900 [
"uploadId" => $uploadId,
'agentName' =>
'nomos',
'successfulAgents'=> [],
'currentAgentId' => 2,
'isAgentRunning' =>
false],
1901 [
"uploadId" => $uploadId,
'agentName' =>
'monk',
"successfulAgents" => [],
'currentAgentId' => 3,
'isAgentRunning' =>
false]
1903 $agent =
new Agent([],$uploadId,
"MOMO agent",45,
"4.4.0.37.072417",
false,
"");
1905 $this->uploadDao->shouldReceive(
'isAccessible')
1906 ->withArgs([$uploadId, $this->groupId])->andReturn(
true);
1907 $this->dbHelper->shouldReceive(
'doesIdExist')
1908 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1909 $scanJobProxy = M::mock(
'overload:Fossology\Lib\Proxy\ScanJobProxy');
1911 $scanJobProxy->shouldReceive(
'createAgentStatus')
1913 ->andReturn($agentsRun);
1914 $scanJobProxy->shouldReceive(
"getSuccessfulAgents")->andReturn($agent);
1915 $this->agentDao->shouldReceive(
"arsTableExists")->withAnyArgs()->andReturn(
true);
1916 $this->agentDao->shouldReceive(
"getSuccessfulAgentEntries")->withAnyArgs()->andReturn([]);
1917 $this->agentDao->shouldReceive(
"getRunningAgentIds")->withAnyArgs()->andReturn([$agent]);
1919 $actualResponse = $this->uploadController->getAgentsRevision(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
1920 $this->assertEquals(200,$actualResponse->getStatusCode());
1933 $this->dbHelper->shouldReceive(
'doesIdExist')
1934 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
false);
1936 $this->expectException(HttpNotFoundException::class);
1937 $this->uploadController->getAgentsRevision(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
1950 $this->uploadDao->shouldReceive(
'isAccessible')
1951 ->withArgs([$uploadId, $this->groupId])->andReturn(
false);
1952 $this->dbHelper->shouldReceive(
'doesIdExist')
1953 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1955 $this->expectException(HttpForbiddenException::class);
1956 $this->uploadController->getAgentsRevision(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
1969 $this->dbHelper->shouldReceive(
'doesIdExist')
1970 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
1971 $this->uploadDao->shouldReceive(
'getParentItemBounds')
1973 $this->uploadDao->shouldReceive(
"getUploadtreeTableName")->withArgs([$uploadId])->andReturn(
"uploadtree");
1975 $actualResponse = $this->uploadController->getTopItem(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
1977 $info =
new Info(200, $itemTreeBounds->getItemId(), InfoType::INFO);
1978 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(), $info->getCode());
1980 $this->assertEquals($expectedResponse->getStatusCode(),$actualResponse->getStatusCode());
1994 $this->dbHelper->shouldReceive(
'doesIdExist')
1995 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
false);
1997 $actualResponse = $this->uploadController->getTopItem(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
1998 $info =
new Info(404,
"Upload does not exist", InfoType::ERROR);
1999 $expectedResponse = (
new ResponseHelper())->withJson($info->getArray(), $info->getCode());
2000 $this->assertEquals($expectedResponse->getStatusCode(), $actualResponse->getStatusCode());
2016 $this->dbHelper->shouldReceive(
'doesIdExist')
2017 ->withArgs([
"upload",
"upload_pk", $uploadId])->andReturn(
true);
2018 $this->uploadDao->shouldReceive(
'getParentItemBounds')
2020 $this->uploadDao->shouldReceive(
"getUploadtreeTableName")->withArgs([$uploadId])->andReturn(
"uploadtree");
2022 $actualResponse = $this->uploadController->getTopItem(
null,
new ResponseHelper(),[
"id"=>$uploadId]);
2025 $this->assertEquals(500,$actualResponse->getStatusCode());
Contains the constants and helpers for authentication of user.
Controller for Upload model.
Provides helper methods to access database for REST api.
Override Slim response for withJson function.
Provides various DAO helper functions for REST api.
Hash model holding information about file like checksums and size.
Different type of infos provided by REST.
Info model to contain general error and return values.
Model class to hold Upload info.
Unit tests for UploadController.
testSetMainLicense_exists()
testGetAllAgentsUploadNotAccessible()
getResponseJson($response)
testGetClearingProgressInfo()
testPostUploadInternalError(int $version)
tearDown()
Remove test objects.
testPostUploadInternalErrorV1()
testAgentsRevisionNotFound()
testGetSingleUpload($version)
testPostUpload(int $version)
testPostUploadFolderNotAccessible(int $version)
testGetScannedLicensesWithNoLicenseFound()
testSetGroupsWithPermissions()
testGetUploadLicensesPendingScanV2()
testGetUploadWithFiltersV2()
testGetUploadLicensesV1()
testAgentsRevisionForbidden()
testSetGroupsWithPermissionsUploadNotAccessible()
testGetAllAgentsUploadNotFound()
testPostUploadFolderNotAccessibleV2()
testPostUploadInternalErrorV2()
testPostUploadNegativeFolderIdV2()
testMoveUploadInvalidFolderV1()
testPostUploadFolderNotFoundV2()
testGetUploadLicensesPendingScan($version=ApiVersion::V2)
testGetUploadLicensesPendingScanV1()
testGetEditedLicensesForbidden()
testGetUploadWithFiltersV1()
testGetSingleUploadInAccessible()
testGetTopItemUploadNotFound()
setUp()
Setup test objects.
testGetSingleUploadNotUnpacked()
testMoveUploadInvalidFolder($version=ApiVersion::V2)
testGetUploadLicensesV2()
testPostUploadFolderNotFound(int $version)
testMoveUploadInvalidFolderV2()
testGetScannedLicensesNotFound()
testSetGroupsWithPermissionsNotFound()
testGetReuseReportSummary()
testPostUploadFolderNotAccessibleV1()
testPostUploadFolderNotFoundV1()
testGetTopItemInternalServerError()
testGetEditedLicensesNotFound()
fo_dbManager * dbManager
fo_dbManager object