1
0
mirror of https://github.com/phpmyadmin/phpmyadmin.git synced 2026-10-29 21:24:44 +03:00
Files
phpmyadmin/test/selenium/PmaSeleniumCreateRemoveUserTest.php
Michal Čihař eabdf845c3 Fix waiting for AJAX popup disappear in Selenium tests
Waiting for ajax_message_num_1 works only on first AJAX request and
we're doing more of them. This should remove need for many consequent
sleeps as we were actually not properly waiting for element.

Also it's better to wrap this logic in separate method as it is used in
many places in the code.

Signed-off-by: Michal Čihař <michal@cihar.com>
2017-09-07 15:17:06 +02:00

139 lines
4.0 KiB
PHP

<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Selenium TestCase for user related tests
*
* @package PhpMyAdmin-test
* @subpackage Selenium
*/
require_once 'TestBase.php';
/**
* PmaSeleniumCreateRemoveUserTest class
*
* @package PhpMyAdmin-test
* @subpackage Selenium
* @group selenium
*/
class PMA_SeleniumCreateRemoveUserTest extends PMA_SeleniumBase
{
/**
* Username for the user
*
* @access private
* @var string
*/
private $_txtUsername;
/**
* Password for the user
*
* @access private
* @var string
*/
private $_txtPassword;
/**
* Setup the browser environment to run the selenium test case
*
* @return void
*/
public function setUp()
{
parent::setUp();
$this->skipIfNotSuperUser();
$this->_txtUsername = 'pma_user';
$this->_txtPassword = 'abc_123';
}
public function setUpPage()
{
parent::setUpPage();
$this->login();
}
/**
* Creates and removes a user
*
* @return void
*
* @group large
*/
public function testCreateRemoveUser()
{
$this->waitForElement('byPartialLinkText', "User accounts")->click();
// Let the User Accounts page load
$this->waitAjax();
$this->scrollIntoView('add_user_anchor');
$this->waitForElement('byId', 'usersForm');
$ele = $this->waitForElement("byId", "add_user_anchor");
$this->moveto($ele);
// Let the click go through
// If click happened before complete page load, it didn't go through
while ($this->isElementPresent('byId', 'add_user_anchor')
&& ! $this->isElementPresent('byId', 'span.ajax_notification')
) {
$ele->click();
sleep(1);
}
$this->waitAjax();
$userField = $this->waitForElement("byName", "username");
$userField->value($this->_txtUsername);
$select = $this->select($this->byId("select_pred_hostname"));
$select->selectOptionByLabel("Local");
$this->scrollIntoView('button_generate_password');
$genButton = $this->waitForElement('byId', 'button_generate_password');
$genButton->click();
$this->assertNotEquals("", $this->byId("text_pma_pw")->value());
$this->assertNotEquals("", $this->byId("text_pma_pw2")->value());
$this->assertNotEquals("", $this->byId("generated_pw")->value());
$this->byId("text_pma_pw")->value($this->_txtPassword);
$this->byId("text_pma_pw2")->value($this->_txtPassword);
// Make sure the element is visible before clicking
$this->scrollIntoView('createdb-1');
$this->waitForElement('byId', 'createdb-1')->click();
$this->waitForElement('byId', 'createdb-2')->click();
$this->scrollIntoView('addUsersForm_checkall');
$this->byId("addUsersForm_checkall")->click();
$this->scrollIntoView('adduser_submit');
$this->waitForElement('byId', "adduser_submit")->click();
$success = $this->waitForElement("byCssSelector", "div.success");
$this->assertContains('You have added a new user', $success->text());
// Removing the newly added user
$this->waitForElement('byPartialLinkText', "User accounts")->click();
$el = $this->waitForElement("byId", "usersForm");
$temp = $this->_txtUsername . "&amp;#27;localhost";
$this->byXPath(
"(//input[@name='selected_usr[]'])[@value='" . $temp . "']"
)->click();
$this->scrollIntoView('fieldset_delete_user_footer');
$this->byId("checkbox_drop_users_db")->click();
$this->byId("buttonGo")->click();
$this->waitForElement("byCssSelector", "button.submitOK")->click();
$this->acceptAlert();
$success = $this->waitForElement("byCssSelector", "div.success");
$this->assertContains(
'The selected users have been deleted',
$success->text()
);
}
}