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.

146 lines
4.2 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';
require_once dirname(__FILE__).'/../../../include/items.inc.php';
/**
* Test the creation of inheritance of new objects on a previously linked template.
*
* @backup items
*/
class testInheritanceItem 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 items from a template
public static function update() {
return CDBHelper::getDataProvider(
'SELECT itemid'.
' FROM items'.
' WHERE hostid=15000'. // $this->templateid.
' AND flags=0'.
' AND type<>'.ITEM_TYPE_HTTPTEST
);
}
/**
* @dataProvider update
*/
public function testInheritanceItem_SimpleUpdate($data) {
$sqlItems = 'SELECT * FROM items ORDER BY itemid';
$oldHashItems = CDBHelper::getHash($sqlItems);
$this->zbxTestLogin('items.php?form=update&context=host&itemid='.$data['itemid']);
$this->zbxTestClickWait('update');
$this->zbxTestCheckTitle('Configuration of items');
$this->zbxTestTextPresent('Item updated');
$this->assertEquals($oldHashItems, CDBHelper::getHash($sqlItems));
}
// Returns create data
public static function create() {
return [
[
[
'expected' => TEST_GOOD,
'name' => 'testInheritanceItem5',
'key' => 'test-inheritance-item5'
]
],
[
[
'expected' => TEST_BAD,
'name' => 'itemInheritance',
'key' => 'key-item-inheritance',
'errors' => [
'Cannot inherit item with key "key-item-inheritance" of template "Inheritance test template" to host '.
'"Template inheritance test host", because an item with the same key is already inherited '.
'from template "Inheritance test template 2".'
]
]
]
];
}
/**
* @dataProvider create
*/
public function testInheritanceItem_SimpleCreate($data) {
$this->zbxTestLogin('items.php?form=create&context=host&hostid='.$this->templateid);
$this->zbxTestInputTypeWait('name', $data['name']);
$this->zbxTestInputType('key', $data['key']);
$this->zbxTestClickWait('add');
switch ($data['expected']) {
case TEST_GOOD:
$this->zbxTestCheckTitle('Configuration of items');
$this->zbxTestCheckHeader('Items');
$this->zbxTestTextPresent('Item added');
$itemId = 0;
// template
$dbResult = DBselect(
'SELECT itemid,name,templateid'.
' FROM items'.
' WHERE hostid='.$this->templateid.
' AND key_='.zbx_dbstr($data['key']).
' AND flags=0'
);
if ($dbRow = DBfetch($dbResult)) {
$itemId = $dbRow['itemid'];
$this->assertEquals($dbRow['name'], $data['name']);
$this->assertEquals($dbRow['templateid'], 0);
}
$this->assertNotEquals($itemId, 0);
// host
$dbResult = DBselect(
'SELECT key_,name'.
' FROM items'.
' WHERE hostid='.$this->hostid.
' AND templateid='.$itemId.
' AND flags=0'
);
if ($dbRow = DBfetch($dbResult)) {
$this->assertEquals($dbRow['key_'], $data['key']);
$this->assertEquals($dbRow['name'], $data['name']);
}
break;
case TEST_BAD:
$this->zbxTestCheckTitle('Configuration of items');
$this->zbxTestCheckHeader('Items');
$this->zbxTestTextNotPresent('Item added');
$this->zbxTestWaitUntilMessageTextPresent('msg-bad', 'Cannot add item');
$this->zbxTestTextPresent($data['errors']);
break;
}
}
}