From 01d0973eca56cfbe43b5a5e54e5de59e73429f35 Mon Sep 17 00:00:00 2001
From: Nico Schedel <nschedel@sipwise.com>
Date: Thu, 13 Jun 2019 11:25:36 +0200
Subject: [PATCH] TT#56376 selenium: more tests for controller_admin.t

controller_admin.t:
- check if errors pop up when nothing is entered in the create window
- edit value "read-only" after creation"
- check if new admin is indeed in "read-only" mode

Change-Id: I63547f086e0aa061e372c44053f2abe8e16595e7
---
 t/selenium/controller_admin.t | 52 +++++++++++++++++++++++++++++++++--
 1 file changed, 50 insertions(+), 2 deletions(-)

diff --git a/t/selenium/controller_admin.t b/t/selenium/controller_admin.t
index 50e1159b21..e9bf956a8f 100644
--- a/t/selenium/controller_admin.t
+++ b/t/selenium/controller_admin.t
@@ -30,6 +30,15 @@ sub ctr_admin() {
     diag('Trying to create a new administrator');
     $d->find_element("Create Administrator", 'link_text')->click();
 
+    diag('Trying to save without entering anything');
+    $d->unselect_if_selected('//*[@id="reselleridtable"]/tbody/tr[1]/td[5]/input', 'xpath');
+    $d->find_element('//*[@id="save"]')->click();
+
+    diag('Check if errors show up');
+    ok($d->find_element_by_xpath('//form//div//span[contains(text(), "Reseller field is required")]'));
+    ok($d->find_element_by_xpath('//form//div//span[contains(text(), "Login field is required")]'));
+    ok($d->find_element_by_xpath('//form//div//span[contains(text(), "Please enter a password in this field")]'));
+
     diag('Fill in values');
     $d->fill_element('//*[@id="reselleridtable_filter"]/label/input', 'xpath', 'thisshouldnotexist');
     ok($d->find_element_by_css('#reselleridtable tr > td.dataTables_empty', 'css'), 'Garbage text was not found');
@@ -46,8 +55,25 @@ sub ctr_admin() {
     $d->fill_element('//*[@id="administrator_table_filter"]/label/input', 'xpath', $adminname);
 
     diag('Check Admin details');
-    ok($d->find_element_by_xpath('//*[@id="administrator_table"]/tbody/tr[1]/td[contains(text(), '. $adminname .')]'), "Name is correct");
-    ok($d->find_element_by_xpath('//*[@id="administrator_table"]/tbody/tr[1]/td[contains(text(), '. $resellername .')]'), "Reseller is correct");
+    ok($d->wait_for_text('//*[@id="administrator_table"]/tbody/tr[1]/td[3]', $adminname), "Name is correct");
+    ok($d->wait_for_text('//*[@id="administrator_table"]/tbody/tr[1]/td[2]', $resellername), "Reseller is correct");
+    ok($d->find_element_by_xpath('//*[@id="administrator_table"]/tbody/tr[1]/td[6][contains(text(), "0")]'), "Read-Only value is correct");
+
+    diag('Edit Admin details');
+    $d->move_and_click('//*[@id="administrator_table"]//tr[1]/td//a[contains(text(), "Edit")]', 'xpath', '//*[@id="administrator_table_filter"]/label/input');
+
+    diag('Enable Attribute "Read only"');
+    $d->scroll_to_element($d->find_element('//form//div/label[contains(text(), "Read only")]'));
+    $d->select_if_unselected('//*[@id="read_only"]');
+    $d->find_element('//*[@id="save"]')->click();
+
+    diag('Check Admin details');
+    $d->fill_element('//*[@id="administrator_table_filter"]/label/input', 'xpath', 'thisshouldnotexist');
+    ok($d->find_element_by_css('#administrator_table tr > td.dataTables_empty', 'css'), 'Garbage text was not found');
+    $d->fill_element('//*[@id="administrator_table_filter"]/label/input', 'xpath', $adminname);
+    ok($d->wait_for_text('//*[@id="administrator_table"]/tbody/tr[1]/td[3]', $adminname), "Name is correct");
+    ok($d->wait_for_text('//*[@id="administrator_table"]/tbody/tr[1]/td[2]', $resellername), "Reseller is correct");
+    ok($d->wait_for_text('//*[@id="administrator_table"]/tbody/tr[1]/td[6]', '1'), "Read-Only value is correct");
 
     diag('New admin tries to login now');
     $c->login_ok($adminname, $adminpwd);
@@ -56,6 +82,28 @@ sub ctr_admin() {
     $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
     $d->find_element("Administrators", 'link_text')->click();
 
+    diag('Check if only your admin is shown');
+    ok($d->find_element_by_xpath('//*[@id="administrator_table"]/tbody/tr[1]/td[contains(text(), '. $adminname .')]'), "Name is correct");
+    ok($d->find_element_by_xpath('//*[@id="administrator_table"]/tbody/tr[1]/td[contains(text(), '. $resellername .')]'), "Reseller is correct");
+    ok($d->wait_for_text('//*[@id="administrator_table"]/tbody/tr[1]/td[5]', '1'), "Read-Only value is correct");
+    ok($d->wait_for_text('//*[@id="administrator_table_info"]', 'Showing 1 to 1 of 1 entries'), "Only 1 entry exists");
+    $d->fill_element('//*[@id="administrator_table_filter"]/label/input', 'xpath', 'administrator');
+    ok($d->find_element_by_css('#administrator_table tr > td.dataTables_empty', 'css'), 'Admin table is empty');
+
+    diag("Go to Customers page");
+    $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
+    $d->find_element("Customers", 'link_text')->click();
+
+    diag("Check if table is empty");
+    ok($d->find_element_by_css('#Customer_table tr > td.dataTables_empty', 'css'), 'Customer Table is empty');
+
+    diag('Go to domains page');
+    $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
+    $d->find_element("Domains", 'link_text')->click();
+
+    diag("Check if table is empty");
+    ok($d->find_element_by_css('#Domain_table tr > td.dataTables_empty', 'css'), 'Domain Table is empty');
+
     diag('Switch over to default admin');
     $c->login_ok();