FOSSology  4.7.1
Open Source License Compliance by Open Source Software
DeciderAgentPluginTest.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2026 Siemens AG
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
9 use Symfony\Component\HttpFoundation\Request;
10 
11 require_once(dirname(dirname(dirname(__DIR__))) . '/lib/php/Test/Reflectory.php');
12 require_once(dirname(dirname(dirname(__DIR__))) . '/lib/php/Plugin/FO_Plugin.php');
13 require_once(dirname(dirname(dirname(__DIR__))) . '/lib/php/common-plugin.php');
14 require_once(__DIR__ . '/../../ui/DeciderAgentPlugin.php');
15 
23 class DeciderAgentPluginTest extends \PHPUnit\Framework\TestCase
24 {
26  private $plugin;
27 
28  protected function setUp(): void
29  {
30  $this->plugin = new DeciderAgentPlugin();
31  }
32 
33  // Only cases where rulebits stays empty are exercised: those return 0
34  // before scheduleAgent() reaches parent::AgentAdd(), which needs a DB.
35 
43  {
44  $request = new Request(['deciderRules' => 'not-an-array']);
45  $errorMsg = '';
46 
47  $result = $this->plugin->scheduleAgent(1, 1, $errorMsg, $request);
48 
49  $this->assertSame(0, $result);
50  }
51 
58  {
59  $request = new Request(['agents' => 'not-an-array']);
60  $errorMsg = '';
61 
62  $result = $this->plugin->scheduleAgent(1, 1, $errorMsg, $request);
63 
64  $this->assertSame(0, $result);
65  }
66 
73  {
74  $request = new Request(['deciderRules' => 'x', 'agents' => 'y']);
75  $errorMsg = '';
76 
77  $result = $this->plugin->scheduleAgent(1, 1, $errorMsg, $request);
78 
79  $this->assertSame(0, $result);
80  }
81 
89  {
90  $request = new Request(['deciderRules' => [], 'agents' => []]);
91  $errorMsg = '';
92 
93  $result = $this->plugin->scheduleAgent(1, 1, $errorMsg, $request);
94 
95  $this->assertSame(0, $result);
96  }
97 
105  {
106  $request = new Request(['agents' => 'not-an-array']);
107  $dependencies = [];
108 
109  Reflectory::invokeObjectsMethodnameWith(
110  $this->plugin, 'addScannerDependencies', [&$dependencies, $request]
111  );
112 
113  $this->assertSame([], $dependencies);
114  }
115 
122  {
123  $request = new Request(['agents' => ['agent_nomos']]);
124  $dependencies = [];
125 
126  Reflectory::invokeObjectsMethodnameWith(
127  $this->plugin, 'addScannerDependencies', [&$dependencies, $request]
128  );
129 
130  $this->assertSame(['agent_nomos'], $dependencies);
131  }
132 
140  {
141  $request = new Request(['Check_agent_monk' => 1, 'agents' => 'not-an-array']);
142  $dependencies = [];
143 
144  Reflectory::invokeObjectsMethodnameWith(
145  $this->plugin, 'addScannerDependencies', [&$dependencies, $request]
146  );
147 
148  $this->assertSame(['agent_monk'], $dependencies);
149  }
150 
158  {
159  global $SysConf;
160  $SysConf['SYSCONFIG']['LicenseTypes'] = 'Permissive,Copyleft';
161 
162  $request = new Request(['licenseTypeConc' => ['Permissive']]);
163 
164  $result = Reflectory::invokeObjectsMethodnameWith(
165  $this->plugin, 'getLicenseTypeConf', [$request]
166  );
167 
168  $this->assertSame('', $result);
169  }
170 
177  {
178  global $SysConf;
179  $SysConf['SYSCONFIG']['LicenseTypes'] = 'Permissive,Copyleft';
180 
181  $request = new Request(['licenseTypeConc' => 'Permissive']);
182 
183  $result = Reflectory::invokeObjectsMethodnameWith(
184  $this->plugin, 'getLicenseTypeConf', [$request]
185  );
186 
187  $this->assertSame('Permissive', $result);
188  }
189 
196  {
197  global $SysConf;
198  $SysConf['SYSCONFIG']['LicenseTypes'] = 'Permissive,Copyleft';
199 
200  $request = new Request(['licenseTypeConc' => 'Unknown']);
201 
202  $result = Reflectory::invokeObjectsMethodnameWith(
203  $this->plugin, 'getLicenseTypeConf', [$request]
204  );
205 
206  $this->assertSame('', $result);
207  }
208 }
Test for class DeciderAgentPlugin, covering the malformed-request guards on scheduleAgent(),...
UI plugin for DeciderAgent.