You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
5.8 KiB
181 lines
5.8 KiB
1 year ago
|
<?php
|
||
|
/*
|
||
|
** Zabbix
|
||
|
** Copyright (C) 2001-2023 Zabbix SIA
|
||
|
**
|
||
|
** This program is free software; you can redistribute it and/or modify
|
||
|
** it under the terms of the GNU General Public License as published by
|
||
|
** the Free Software Foundation; either version 2 of the License, or
|
||
|
** (at your option) any later version.
|
||
|
**
|
||
|
** This program is distributed in the hope that it will be useful,
|
||
|
** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
** GNU General Public License for more details.
|
||
|
**
|
||
|
** You should have received a copy of the GNU General Public License
|
||
|
** along with this program; if not, write to the Free Software
|
||
|
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
**/
|
||
|
|
||
|
require_once dirname(__FILE__).'/../../include/CLegacyWebTest.php';
|
||
|
|
||
|
/**
|
||
|
* Test the creation of inheritance of new objects on a previously linked template.
|
||
|
*
|
||
|
* @backup items
|
||
|
*/
|
||
|
class testInheritanceDiscoveryRule extends CLegacyWebTest {
|
||
|
private $templateid = 15000; // 'Inheritance test template'
|
||
|
private $template = 'Inheritance test template';
|
||
|
|
||
|
private $hostid = 15001; // 'Template inheritance test host'
|
||
|
private $host = 'Template inheritance test host';
|
||
|
|
||
|
// Returns list of discovery rules from a template.
|
||
|
public static function update() {
|
||
|
return CDBHelper::getDataProvider(
|
||
|
'SELECT itemid'.
|
||
|
' FROM items'.
|
||
|
' WHERE hostid=15000'. // $this->templateid.
|
||
|
' AND flags=1'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider update
|
||
|
*/
|
||
|
public function testInheritanceDiscoveryRule_SimpleUpdate($data) {
|
||
|
$sqlDiscovery = 'SELECT * FROM items ORDER BY itemid';
|
||
|
$oldHashDiscovery = CDBHelper::getHash($sqlDiscovery);
|
||
|
|
||
|
$this->zbxTestLogin('host_discovery.php?form=update&context=host&itemid='.$data['itemid']);
|
||
|
$this->zbxTestClickWait('update');
|
||
|
$this->zbxTestCheckTitle('Configuration of discovery rules');
|
||
|
$this->zbxTestTextPresent('Discovery rule updated');
|
||
|
|
||
|
$this->assertEquals($oldHashDiscovery, CDBHelper::getHash($sqlDiscovery));
|
||
|
|
||
|
}
|
||
|
|
||
|
// Returns create data.
|
||
|
public static function create() {
|
||
|
return [
|
||
|
[
|
||
|
[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'name' => 'testInheritanceDiscoveryRule6',
|
||
|
'key' => 'discovery-rule-inheritance6'
|
||
|
]
|
||
|
],
|
||
|
[
|
||
|
[
|
||
|
'expected' => TEST_BAD,
|
||
|
'name' => 'testInheritanceDiscoveryRule5',
|
||
|
'key' => 'discovery-rule-inheritance5',
|
||
|
'errors' => [
|
||
|
'Cannot inherit LLD rule with key "discovery-rule-inheritance5" of template "Inheritance '.
|
||
|
'test template" to host "Template inheritance test host", because an LLD rule with the '.
|
||
|
'same key is already inherited from template "Inheritance test template 2".'
|
||
|
]
|
||
|
]
|
||
|
],
|
||
|
[
|
||
|
[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'name' => 'testInheritanceDiscoveryRuleWithLLDMacros',
|
||
|
'key' => 'discovery-rule-inheritance-with-macros',
|
||
|
'macros' => [
|
||
|
['macro' => '{#MACRO1}', 'path'=>'$.path.1'],
|
||
|
['macro' => '{#MACRO2}', 'path'=>'$.path.1']
|
||
|
]
|
||
|
]
|
||
|
]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider create
|
||
|
*/
|
||
|
public function testInheritanceDiscoveryRule_SimpleCreate($data) {
|
||
|
$this->zbxTestLogin('host_discovery.php?form=Create+discovery+rule&context=template&hostid='.$this->templateid);
|
||
|
|
||
|
$this->zbxTestInputType('name', $data['name']);
|
||
|
$this->zbxTestInputType('key', $data['key']);
|
||
|
|
||
|
if (array_key_exists('macros', $data)) {
|
||
|
$this->zbxTestTabSwitch('LLD macros');
|
||
|
$last = count($data['macros']) - 1;
|
||
|
|
||
|
foreach ($data['macros'] as $i => $lld_macro) {
|
||
|
$this->zbxTestInputType('lld_macro_paths_'.$i.'_lld_macro', $lld_macro['macro'] );
|
||
|
$this->zbxTestInputType('lld_macro_paths_'.$i.'_path', $lld_macro['path'] );
|
||
|
if ($i !== $last) {
|
||
|
$this->zbxTestClick('lld_macro_add');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$this->zbxTestClickWait('add');
|
||
|
switch ($data['expected']) {
|
||
|
case TEST_GOOD:
|
||
|
$this->zbxTestCheckTitle('Configuration of discovery rules');
|
||
|
$this->zbxTestCheckHeader('Discovery rules');
|
||
|
$this->zbxTestTextPresent('Discovery rule created');
|
||
|
|
||
|
$itemId = 0;
|
||
|
|
||
|
// Template DB check.
|
||
|
$dbResult = DBselect(
|
||
|
'SELECT itemid,name,templateid'.
|
||
|
' FROM items'.
|
||
|
' WHERE hostid='.$this->templateid.
|
||
|
' AND key_='.zbx_dbstr($data['key']).
|
||
|
' AND flags=1'
|
||
|
);
|
||
|
if ($dbRow = DBfetch($dbResult)) {
|
||
|
$itemId = $dbRow['itemid'];
|
||
|
$this->assertEquals($dbRow['name'], $data['name']);
|
||
|
$this->assertEquals($dbRow['templateid'], 0);
|
||
|
}
|
||
|
|
||
|
$this->assertNotEquals($itemId, 0);
|
||
|
|
||
|
// Host DB check.
|
||
|
$dbResult = DBselect(
|
||
|
'SELECT key_,name'.
|
||
|
' FROM items'.
|
||
|
' WHERE hostid='.$this->hostid.
|
||
|
' AND templateid='.$itemId.
|
||
|
' AND flags=1'
|
||
|
);
|
||
|
if ($dbRow = DBfetch($dbResult)) {
|
||
|
$this->assertEquals($dbRow['key_'], $data['key']);
|
||
|
$this->assertEquals($dbRow['name'], $data['name']);
|
||
|
}
|
||
|
|
||
|
// Host form check.
|
||
|
$this->zbxTestLogin('host_discovery.php?filter_set=1&context=host&filter_hostids%5B0%5D='.$this->hostid);
|
||
|
$this->zbxTestClickLinkText($data['name']);
|
||
|
$this->zbxTestWaitForPageToLoad();
|
||
|
$this->zbxTestAssertElementPresentXpath('//input[@id="name"][@value="'.$data['name'].'"][@readonly]');
|
||
|
$this->zbxTestAssertElementPresentXpath('//input[@id="key"][@value="'.$data['key'].'"][@readonly]');
|
||
|
if (array_key_exists('macros', $data)) {
|
||
|
$this->zbxTestTabSwitch('LLD macros');
|
||
|
foreach ($data['macros'] as $i => $lld_macro) {
|
||
|
$this->zbxTestAssertElementPresentXpath('//textarea[@id="lld_macro_paths_'.$i.'_lld_macro"][text()="'.$lld_macro['macro'].'"][@readonly]');
|
||
|
$this->zbxTestAssertElementPresentXpath('//textarea[@id="lld_macro_paths_'.$i.'_path"][text()="'.$lld_macro['path'].'"][@readonly]');
|
||
|
}
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case TEST_BAD:
|
||
|
$this->zbxTestCheckTitle('Configuration of discovery rules');
|
||
|
$this->zbxTestCheckHeader('Discovery rules');
|
||
|
$this->zbxTestTextPresent('Cannot add discovery rule');
|
||
|
$this->zbxTestTextPresent($data['errors']);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|