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.
149 lines
4.4 KiB
149 lines
4.4 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__).'/../behaviors/CMessageBehavior.php';
|
||
|
|
||
|
/**
|
||
|
* Test the creation of inheritance of new objects on a previously linked template.
|
||
|
*
|
||
|
* @backup graphs
|
||
|
*/
|
||
|
class testInheritanceGraph extends CLegacyWebTest {
|
||
|
|
||
|
/**
|
||
|
* Attach MessageBehavior to the test.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function getBehaviors() {
|
||
|
return [CMessageBehavior::class];
|
||
|
}
|
||
|
|
||
|
private $templateid = 15000; // 'Inheritance test template'
|
||
|
private $template = 'Inheritance test template';
|
||
|
|
||
|
private $hostid = 15001; // 'Template inheritance test host'
|
||
|
private $host = 'Template inheritance test host';
|
||
|
|
||
|
// return list of graphs from a template
|
||
|
public static function update() {
|
||
|
return CDBHelper::getDataProvider(
|
||
|
'SELECT g.graphid'.
|
||
|
' FROM graphs g'.
|
||
|
' WHERE EXISTS ('.
|
||
|
'SELECT NULL'.
|
||
|
' FROM graphs_items gi,items i'.
|
||
|
' WHERE g.graphid=gi.graphid'.
|
||
|
' AND gi.itemid=i.itemid'.
|
||
|
' AND i.hostid=15000'. // $this->templateid.
|
||
|
' AND i.flags=0'.
|
||
|
')'.
|
||
|
' AND g.flags=0'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider update
|
||
|
*/
|
||
|
public function testInheritanceGraph_SimpleUpdate($data) {
|
||
|
$sqlGraphs = 'SELECT * FROM graphs ORDER BY graphid';
|
||
|
$oldHashGraphs = CDBHelper::getHash($sqlGraphs);
|
||
|
|
||
|
$this->zbxTestLogin('graphs.php?form=update&context=host&graphid='.$data['graphid']);
|
||
|
$this->zbxTestCheckTitle('Configuration of graphs');
|
||
|
$this->zbxTestClickWait('update');
|
||
|
$this->zbxTestWaitUntilMessageTextPresent('msg-good', 'Graph updated');
|
||
|
|
||
|
$this->assertEquals($oldHashGraphs, CDBHelper::getHash($sqlGraphs));
|
||
|
}
|
||
|
|
||
|
// Returns create data
|
||
|
public static function create() {
|
||
|
return [
|
||
|
[
|
||
|
[
|
||
|
'expected' => TEST_GOOD,
|
||
|
'name' => 'testInheritanceGraph5',
|
||
|
'addItems' => [
|
||
|
['itemName' => 'testInheritanceItem1'],
|
||
|
['itemName' => 'testInheritanceItem2'],
|
||
|
['itemName' => 'testInheritanceItem3'],
|
||
|
['itemName' => 'testInheritanceItem4']
|
||
|
]
|
||
|
]
|
||
|
],
|
||
|
[
|
||
|
[
|
||
|
'expected' => TEST_BAD,
|
||
|
'name' => 'testInheritanceGraph4',
|
||
|
'addItems' => [
|
||
|
['itemName' => 'testInheritanceItem1']
|
||
|
],
|
||
|
'error_msg' => 'Cannot add graph',
|
||
|
'errors'=> [
|
||
|
'Graph "testInheritanceGraph4" already exists on the template "Inheritance test template".'
|
||
|
]
|
||
|
]
|
||
|
]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider create
|
||
|
*/
|
||
|
public function testInheritanceGraph_SimpleCreate($data) {
|
||
|
$this->zbxTestLogin('graphs.php?form=Create+graph&context=template&hostid='.$this->templateid);
|
||
|
|
||
|
$this->zbxTestInputType('name', $data['name']);
|
||
|
$this->assertEquals($data['name'], $this->zbxTestGetValue("//input[@id='name']"));
|
||
|
|
||
|
foreach ($data['addItems'] as $item) {
|
||
|
$this->zbxTestClick('add_item');
|
||
|
$this->zbxTestLaunchOverlayDialog('Items');
|
||
|
$this->zbxTestClickLinkTextWait($item['itemName']);
|
||
|
$this->zbxTestTextPresent($this->template.': '.$item['itemName']);
|
||
|
}
|
||
|
$this->query('id:add')->one()->click();
|
||
|
|
||
|
switch ($data['expected']) {
|
||
|
case TEST_GOOD:
|
||
|
$this->assertMessage(TEST_GOOD, 'Graph added');
|
||
|
$this->zbxTestCheckTitle('Configuration of graphs');
|
||
|
$this->zbxTestCheckHeader('Graphs');
|
||
|
$this->zbxTestTextNotPresent('Cannot add graph');
|
||
|
$filter = $this->query('name:zbx_filter')->asForm()->one();
|
||
|
$filter->getField('Templates')->clear()->fill($this->template);
|
||
|
$filter->submit();
|
||
|
$this->query('link', $data['name'])->one()->waitUntilVisible();
|
||
|
break;
|
||
|
|
||
|
case TEST_BAD:
|
||
|
$this->assertMessage(TEST_BAD, $data['error_msg']);
|
||
|
$this->zbxTestCheckTitle('Configuration of graphs');
|
||
|
$this->zbxTestCheckHeader('Graphs');
|
||
|
$this->zbxTestTextNotPresent('Graph added');
|
||
|
$this->zbxTestTextPresent($data['errors']);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|