FOSSology  4.7.1
Open Source License Compliance by Open Source Software
OsselotControllerTest.php
Go to the documentation of this file.
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2026 Rajay Singh <rajaysingh2007@gmail.com>
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
13 
19 use Mockery as M;
20 use Slim\Psr7\Factory\StreamFactory;
21 use Slim\Psr7\Headers;
22 use Slim\Psr7\Request;
23 use Slim\Psr7\Uri;
24 
29 class OsselotControllerTest extends \PHPUnit\Framework\TestCase
30 {
32  private $dbHelper;
33 
35  private $osselotController;
36 
37  protected function setUp() : void
38  {
39  $container = M::mock('ContainerBuilder');
40  $this->dbHelper = M::mock(DbHelper::class);
41  $restHelper = M::mock(RestHelper::class);
42  $restHelper->shouldReceive('getDbHelper')->andReturn($this->dbHelper);
43  $container->shouldReceive('get')->withArgs(array(
44  'helper.restHelper'))->andReturn($restHelper);
45  $this->osselotController = new OsselotController($container);
46  }
47 
48  protected function tearDown() : void
49  {
50  M::close();
51  }
52 
57  private function prepare($value)
58  {
59  $GLOBALS['SysConf'] = ['SYSCONFIG' => []];
60  if ($value !== null) {
61  $GLOBALS['SysConf']['SYSCONFIG']['EnableOsselotReuse'] = $value;
62  }
63  return new Request("POST", new Uri("HTTP", "localhost"), new Headers(),
64  [], [], (new StreamFactory())->createStream());
65  }
66 
67  private function assertDisabled($response)
68  {
69  $response->getBody()->seek(0);
70  $this->assertEquals(501, $response->getStatusCode());
71  $this->assertEquals("OSSelot integration is disabled",
72  json_decode($response->getBody()->getContents(), true)['message']);
73  }
74 
78  public static function disabledProvider()
79  {
80  return [
81  'unchecked in admin UI' => ['false'],
82  'not configured' => [null]
83  ];
84  }
85 
89  public function testGetPackageVersionsDisabled($value)
90  {
91  $request = $this->prepare($value);
92  $this->assertDisabled($this->osselotController->getPackageVersions(
93  $request, new ResponseHelper(), ['package' => 'zlib']));
94  }
95 
99  public function testImportOsselotReportDisabled($value)
100  {
101  $request = $this->prepare($value);
102  $this->dbHelper->shouldNotReceive('doesIdExist');
103  $this->assertDisabled($this->osselotController->importOsselotReport(
104  $request, new ResponseHelper(), ['id' => 2]));
105  }
106 
107  public function testGetPackageVersionsEnabled()
108  {
109  $request = $this->prepare('true');
110  $this->expectException(HttpBadRequestException::class);
111  $this->osselotController->getPackageVersions($request,
112  new ResponseHelper(), ['package' => ' ']);
113  }
114 }
Controller for OSSelot REST API endpoints.
Provides helper methods to access database for REST api.
Definition: DbHelper.php:38
Override Slim response for withJson function.
Provides various DAO helper functions for REST api.
Definition: RestHelper.php:32