8 namespace Fossology\Lib\Proxy;
19 private $assertCountBefore;
22 protected function setUp() :
void
25 $this->testDb->createPlainTables( array(
'agent',
'ars_master') );
26 $dbManager = &$this->testDb->getDbManager();
27 $dbManager->queryOnce(
'ALTER TABLE ars_master RENAME TO nomos_ars');
28 $this->testDb->insertData(array(
'agent',
'nomos_ars'));
29 $this->assertCountBefore = \Hamcrest\MatcherAssert::getCount();
32 protected function tearDown() :
void
34 $this->addToAssertionCount(\Hamcrest\MatcherAssert::getCount()-$this->assertCountBefore);
38 private function getAllColumns($sql,$params=array())
40 $backtrace = debug_backtrace();
41 $caller = $backtrace[1];
42 $stmt =
"$caller[class]::$caller[function]";
44 $dbManager = &$this->testDb->getDbManager();
45 $dbManager->prepare($stmt, $sql);
47 $res = $dbManager->execute($stmt,$params);
48 $result = $dbManager->fetchAll($res);
49 $dbManager->freeResult($res);
54 public function testQuery()
57 $agentNames = array(
'nomos');
58 $latestScannerProxy =
new LatestScannerProxy($uploadId,$agentNames,
'latest_scanner',
"AND agent_enabled='true'");
59 $sql = $latestScannerProxy->getDbViewQuery();
60 $scanners = $this->getAllColumns($sql);
61 assertThat($scanners,arrayContaining(array(array(
'agent_pk'=>6,
'agent_name'=>
'nomos'))));
64 public function testQueryTwoScanners()
66 $this->testDb->getDbManager()->queryOnce(
'CREATE TABLE monk_ars AS SELECT * FROM nomos_ars WHERE 0=1');
67 $this->testDb->insertData(array(
'monk_ars'));
69 $agentNames = array(
'nomos',
'monk');
70 $latestScannerProxy =
new LatestScannerProxy($uploadId,$agentNames,
'latest_scanner',
"AND agent_enabled='true'");
71 $sql = $latestScannerProxy->getDbViewQuery();
72 $scanners = $this->getAllColumns($sql);
73 assertThat($scanners,arrayContainingInAnyOrder(array(array(
'agent_pk'=>6,
'agent_name'=>
'nomos'),array(
'agent_pk'=>5,
'agent_name'=>
'monk'))));
76 public function testQueryNoScanners()
78 $this->expectException(Exception::class);
80 $agentNames = array();
81 new LatestScannerProxy($uploadId,$agentNames,
'latest_scanner',
"AND agent_enabled='true'");
84 public function testQueryPrepared()
87 $agentNames = array(
'nomos');
88 $latestScannerProxy =
new LatestScannerProxy(
'$1',$agentNames,
'latest_scanner',
"AND agent_enabled='true'");
89 $sql = $latestScannerProxy->getDbViewQuery();
90 $scanners = $this->getAllColumns($sql,array($uploadId));
91 assertThat($scanners,arrayContaining(array(array(
'agent_pk'=>6,
'agent_name'=>
'nomos'))));
94 public function testMaterializePossibleForUnparameterizedQuery()
97 $agentNames = array(
'nomos');
98 $latestScannerProxy =
new LatestScannerProxy($uploadId,$agentNames,
'latest_scanner',
"AND agent_enabled='true'");
99 $latestScannerProxy->materialize();
102 public function testMaterializeNotPossibleForParameterizedQuery()
104 $this->expectException(Exception::class);
105 $agentNames = array(
'nomos');
106 $latestScannerProxy =
new LatestScannerProxy(
'$1',$agentNames,
'latest_scanner',
"AND agent_enabled='true'");
107 $latestScannerProxy->materialize();
111 public function testGetNameToIdMap()
114 $agentNames = array(
'nomos');
115 $latestScannerProxy =
new LatestScannerProxy($uploadId,$agentNames,
'latest_scanner',
"AND agent_enabled='true'");
116 $map = $latestScannerProxy->getNameToIdMap();
117 assertThat($map,equalTo(array(
'nomos'=>6)));
120 public function testGetNameToIdMapNotPossibleForParameterizedQuery()
122 $this->expectException(Exception::class);
123 $agentNames = array(
'nomos');
124 $latestScannerProxy =
new LatestScannerProxy(
'$1',$agentNames,
'latest_scanner',
"AND agent_enabled='true'");
125 $latestScannerProxy->getNameToIdMap();