Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ui/tests/selenium/templates/testFormTemplate.php')
-rw-r--r--ui/tests/selenium/templates/testFormTemplate.php309
1 files changed, 309 insertions, 0 deletions
diff --git a/ui/tests/selenium/templates/testFormTemplate.php b/ui/tests/selenium/templates/testFormTemplate.php
new file mode 100644
index 00000000000..35e4ddbb2ab
--- /dev/null
+++ b/ui/tests/selenium/templates/testFormTemplate.php
@@ -0,0 +1,309 @@
+<?php
+/*
+** Zabbix
+** Copyright (C) 2001-2022 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';
+
+use Facebook\WebDriver\Exception\NoSuchElementException;
+use Facebook\WebDriver\WebDriverBy;
+
+/**
+ * @backup hosts
+ */
+class testFormTemplate extends CLegacyWebTest {
+ public $template = 'Form test template';
+ public $template_edit_name = 'Template-layout-test-001';
+ public $template_clone = 'Linux by Zabbix agent';
+ public $template_full_delete = 'Inheritance test template';
+
+ public static function create() {
+ return [
+ [
+ [
+ 'expected' => TEST_GOOD,
+ 'name' => 'Selenium Test Template',
+ 'dbCheck' => true,
+ 'formCheck' => true
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_GOOD,
+ 'name' => 'Test Template name',
+ 'visible_name' => 'Selenium Test template with visible name',
+ 'group' => 'Templates/SAN',
+ 'new_group' => 'Selenium new group',
+ 'description' => 'template description',
+ 'dbCheck' => true,
+ 'formCheck' => true
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'name' => 'Selenium Test Template',
+ 'error_msg' => 'Cannot add template',
+ 'errors' => [
+ 'Template with host name "Selenium Test Template" already exists.'
+ ]
+
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'name' => 'Existing visible name',
+ 'visible_name' => 'Selenium Test template with visible name',
+ 'error_msg' => 'Cannot add template',
+ 'errors' => [
+ 'Template with visible name "Selenium Test template with visible name" already exists.'
+ ]
+
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'name' => '',
+ 'error_msg' => 'Page received incorrect data',
+ 'errors' => [
+ 'Incorrect value for field "Template name": cannot be empty.'
+ ]
+
+ ]
+ ],
+ [
+ [
+ 'expected' => TEST_BAD,
+ 'name' => 'Without groups',
+ 'remove_group' => 'Templates',
+ 'error_msg' => 'Page received incorrect data',
+ 'errors' => [
+ 'Field "groups" is mandatory.'
+ ]
+
+ ]
+ ]
+ ];
+ }
+
+ /**
+ * @dataProvider create
+ */
+ public function testFormTemplate_Create($data) {
+ $this->zbxTestLogin('templates.php?page=1');
+ $filter = $this->query('name:zbx_filter')->asForm()->one();
+ $filter->getField('Template groups')->select('Templates');
+ $filter->submit();
+ $this->zbxTestContentControlButtonClickTextWait('Create template');
+ $this->zbxTestInputTypeWait('template_name', $data['name']);
+ $this->zbxTestAssertElementValue('template_name', $data['name']);
+
+ if (isset ($data['visible_name'])) {
+ $this->zbxTestInputTypeOverwrite('visiblename', $data['visible_name']);
+ $this->zbxTestAssertElementValue('visiblename', $data['visible_name']);
+ }
+
+ if (array_key_exists('group', $data)) {
+ $this->zbxTestClickButtonMultiselect('groups_');
+ $this->zbxTestLaunchOverlayDialog('Template groups');
+ $this->zbxTestClickLinkTextWait($data['group']);
+ }
+
+ if (array_key_exists('new_group', $data)) {
+ $selected = false;
+
+ for ($i = 0; $i < 3; $i++) {
+ try {
+ $this->zbxTestMultiselectNew('groups_', $data['new_group']);
+ $selected = true;
+ break;
+ } catch (NoSuchElementException $ex) {
+ // Retry. Code is not missing here.
+ }
+ }
+
+ if (!$selected) {
+ $this->fail('Failed to set new group "'.$data['new_group'].'" in multiselect.');
+ }
+ }
+
+ if (isset ($data['description'])) {
+ $this->zbxTestInputTypeWait('description', $data['description']);
+ }
+
+ if (array_key_exists('remove_group', $data)) {
+ $this->zbxTestMultiselectRemove('groups_', $data['remove_group']);
+ }
+
+ $this->zbxTestClickXpathWait("//button[@id='add' and @type='submit']");
+
+ switch ($data['expected']) {
+ case TEST_GOOD:
+ $this->zbxTestWaitUntilMessageTextPresent('msg-good', 'Template added');
+ $this->assertEquals(1, CDBHelper::getCount("SELECT hostid FROM hosts WHERE host='".$data['name']."'"));
+ break;
+
+ case TEST_BAD:
+ $this->zbxTestWaitUntilMessageTextPresent('msg-bad', $data['error_msg']);
+ foreach ($data['errors'] as $msg) {
+ $this->zbxTestTextPresent($msg);
+ }
+ break;
+ }
+
+ if (isset($data['dbCheck'])) {
+ $result = DBselect("SELECT host, name, status, description FROM hosts where host = '".$data['name']."'");
+ while ($row = DBfetch($result)) {
+ $this->assertEquals($row['host'], $data['name']);
+ $this->assertEquals($row['status'], HOST_STATUS_TEMPLATE);
+ if (isset ($data['visible_name'])) {
+ $this->assertEquals($data['visible_name'], $row['name']);
+ }
+ if (isset ($data['description'])) {
+ $this->assertEquals($data['description'], $row['description']);
+ }
+ }
+ if (isset ($data['new_group'])) {
+ $this->assertEquals(1, CDBHelper::getCount("SELECT groupid FROM hstgrp WHERE name='".$data['new_group']."'"));
+ }
+ }
+
+ if (isset($data['formCheck'])) {
+ $this->zbxTestLogin('templates.php?page=1');
+ $filter->invalidate();
+ $filter->getField('Template groups')->select('Templates');
+ $filter->submit();
+
+ $name = CTestArrayHelper::get($data, 'visible_name', $data['name']);
+ $this->filterAndOpenTemplate($name);
+
+ $this->zbxTestWaitUntilElementVisible(WebDriverBy::id('template_name'));
+ $this->zbxTestAssertElementValue('template_name', $data['name']);
+
+ $this->zbxTestMultiselectAssertSelected('groups_', 'Templates');
+
+ if (array_key_exists('new_group', $data)) {
+ $this->zbxTestMultiselectAssertSelected('groups_', $data['new_group']);
+ }
+
+ if (array_key_exists('group', $data)) {
+ $this->zbxTestMultiselectAssertSelected('groups_', $data['group']);
+ }
+
+ if (isset ($data['visible_name'])) {
+ $this->zbxTestAssertElementValue('visiblename', $data['visible_name']);
+ }
+
+ if (isset ($data['description'])) {
+ $this->zbxTestAssertElementValue('description', $data['description']);
+ }
+ }
+ }
+
+ public function testFormTemplate_UpdateTemplateName() {
+ $new_template_name = 'Changed template name';
+
+ $this->zbxTestLogin('templates.php');
+ $this->filterAndOpenTemplate($this->template_edit_name);
+ $this->zbxTestInputTypeOverwrite('template_name', $new_template_name);
+ $this->zbxTestClickWait('update');
+ $this->zbxTestWaitUntilMessageTextPresent('msg-good','Template updated');
+ $this->assertEquals(1, CDBHelper::getCount("SELECT hostid FROM hosts WHERE host='".$new_template_name."'"));
+ $this->assertEquals(0, CDBHelper::getCount("SELECT hostid FROM hosts WHERE host='$this->template_edit_name'"));
+ }
+
+ public function testFormTemplate_CloneTemplate() {
+ $cloned_template_name = 'Cloned template';
+
+ $this->zbxTestLogin('templates.php?page=1');
+ $this->filterAndOpenTemplate($this->template_clone);
+ $this->zbxTestClickWait('clone');
+ $this->zbxTestInputTypeOverwrite('template_name', $cloned_template_name);
+ $this->zbxTestClickXpathWait("//button[@id='add' and @type='submit']");
+ $this->zbxTestWaitUntilMessageTextPresent('msg-good','Template added');
+ $this->assertEquals(1, CDBHelper::getCount("SELECT hostid FROM hosts WHERE host='".$cloned_template_name."'"));
+ $this->assertEquals(1, CDBHelper::getCount("SELECT hostid FROM hosts WHERE host='$this->template_clone'"));
+
+ $template = CDBHelper::getRow("select hostid from hosts where host like '".$cloned_template_name."'");
+ $this->assertEquals(0, CDBHelper::getCount("SELECT itemid FROM items WHERE hostid='".$template['hostid']."'"));
+ $this->assertEquals(0, CDBHelper::getCount("SELECT dashboardid FROM dashboard WHERE templateid='".$template['hostid']."'"));
+ }
+
+ public function testFormTemplate_FullCloneTemplate() {
+ $cloned_template_name = 'Full cloned template';
+
+ $this->zbxTestLogin('templates.php?page=2');
+ $this->filterAndOpenTemplate($this->template_clone);
+ $this->zbxTestClickWait('full_clone');
+ $this->zbxTestInputTypeOverwrite('template_name', $cloned_template_name);
+ $this->zbxTestClickXpathWait("//button[@id='add' and @type='submit']");
+ $this->zbxTestWaitUntilMessageTextPresent('msg-good','Template added');
+ $this->assertEquals(1, CDBHelper::getCount("SELECT hostid FROM hosts WHERE host='".$cloned_template_name."'"));
+ $this->assertEquals(1, CDBHelper::getCount("SELECT hostid FROM hosts WHERE host='$this->template_clone'"));
+
+ $template = CDBHelper::getRow("select hostid from hosts where host like '".$cloned_template_name."'");
+ $this->assertEquals(67, CDBHelper::getCount("SELECT itemid FROM items WHERE hostid='".$template['hostid']."'"));
+ $this->assertEquals(2, CDBHelper::getCount("SELECT dashboardid FROM dashboard WHERE templateid='".$template['hostid']."'"));
+ }
+
+ public function testFormTemplate_Delete() {
+ $template = CDBHelper::getRow("select hostid from hosts where host like '".$this->template."'");
+
+ $this->zbxTestLogin('templates.php?page=1');
+ $this->filterAndOpenTemplate($this->template);
+ $this->zbxTestClickWait('delete');
+ $this->zbxTestAcceptAlert();
+ $this->zbxTestWaitUntilMessageTextPresent('msg-good','Template deleted');
+
+ $this->assertEquals(0, CDBHelper::getCount("SELECT hostid FROM hosts WHERE host='$this->template'"));
+ $this->assertEquals(0, CDBHelper::getCount("select * from hostmacro where hostid='".$template['hostid']."'"));
+ }
+
+ public function testFormTemplate_DeleteAndClearTemplate() {
+ $template = CDBHelper::getRow("select hostid from hosts where host like '".$this->template_full_delete."'");
+ $this->zbxTestLogin('templates.php');
+ $this->filterAndOpenTemplate($this->template_full_delete);
+ $this->zbxTestClickWait('delete_and_clear');
+ $this->zbxTestAcceptAlert();
+ $this->zbxTestWaitUntilMessageTextPresent('msg-good','Template deleted');
+ $this->assertEquals(0, CDBHelper::getCount("SELECT hostid FROM hosts WHERE hostid='".$template['hostid']."'"));
+ $this->assertEquals(0, CDBHelper::getCount("SELECT itemid FROM items WHERE hostid='".$template['hostid']."'"));
+ $this->assertEquals(0, CDBHelper::getCount("SELECT graphid FROM graphs WHERE templateid='".$template['hostid']."'"));
+ $this->assertEquals(0, CDBHelper::getCount("SELECT triggerid FROM triggers WHERE templateid='".$template['hostid']."'"));
+ $this->assertEquals(0, CDBHelper::getCount("SELECT hostgroupid FROM hosts_groups WHERE hostid='".$template['hostid']."'"));
+ $this->assertEquals(0, CDBHelper::getCount("SELECT httptestid FROM httptest WHERE hostid='".$template['hostid']."'"));
+ }
+
+ /**
+ * Function for filtering necessary template and opening its form.
+ *
+ * @param string name name of a template
+ */
+ public function filterAndOpenTemplate($name) {
+ $this->query('button:Reset')->one()->click();
+ $form = $this->query('name:zbx_filter')->asForm()->waitUntilVisible()->one();
+ $form->fill(['Name' => $name]);
+ $this->query('button:Apply')->one()->waitUntilClickable()->click();
+ $this->query('xpath://table[@class="list-table"]')->asTable()->one()->findRow('Name', $name)
+ ->getColumn('Name')->query('link', $name)->one()->click();
+ $this->page->waitUntilReady();
+ }
+}