From 2fece8372e58c9667f21cb9faf1061fc8f3de3da Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Wed, 13 May 2015 11:14:16 -0400
Subject: [PATCH] Allow selenium tests to use explicit login credentials
---
tests/Selenium/bootstrap.php | 44 +++++++++++++++++++++++++++++++-------------
1 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/tests/Selenium/bootstrap.php b/tests/Selenium/bootstrap.php
index e9d94f6..8c57571 100644
--- a/tests/Selenium/bootstrap.php
+++ b/tests/Selenium/bootstrap.php
@@ -102,14 +102,31 @@
return self::$imap_ready;
}
+ self::connect_imap(TESTS_USER, TESTS_PASS);
+ self::purge_mailbox('INBOX');
+ self::ensure_mailbox('Archive', true);
+
+ return self::$imap_ready;
+ }
+
+ /**
+ * Authenticate to IMAP with the given credentials
+ */
+ public static function connect_imap($username, $password, $host = null)
+ {
$rcmail = rcmail::get_instance();
$imap = $rcmail->get_storage();
- $imap_host = $rcmail->config->get('default_host');
- $a_host = parse_url($args['host']);
+ if ($imap->is_connected()) {
+ $imap->close();
+ self::$imap_ready = false;
+ }
+
+ $imap_host = $host ?: $rcmail->config->get('default_host');
+ $a_host = parse_url($imap_host);
if ($a_host['host']) {
$imap_host = $a_host['host'];
- $imap_ssl = isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'));
+ $imap_ssl = isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'));
$imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : 143);
}
else {
@@ -117,17 +134,11 @@
$imap_ssl = false;
}
- if (!$imap->connect($imap_host, TESTS_USER, TESTS_PASS, $imap_port, $imap_ssl)) {
- self::$imap_ready = false;
+ if (!$imap->connect($imap_host, $username, $password, $imap_port, $imap_ssl)) {
die("IMAP error: unable to authenticate with user " . TESTS_USER);
}
self::$imap_ready = true;
-
- self::purge_mailbox('INBOX');
- self::ensure_mailbox('Archive', true);
-
- return self::$imap_ready;
}
/**
@@ -185,9 +196,12 @@
*/
class Selenium_Test extends PHPUnit_Extensions_Selenium2TestCase
{
+ protected $login_data = null;
+
protected function setUp()
{
$this->setBrowser(TESTS_BROWSER);
+ $this->login_data = array(TESTS_USER, TESTS_PASS);
// Set root to our index.html, for better performance
// See https://github.com/sebastianbergmann/phpunit-selenium/issues/217
@@ -195,8 +209,12 @@
$this->setBrowserUrl($baseurl . '/tests/Selenium');
}
- protected function login()
+ protected function login($username = null, $password = null)
{
+ if (!empty($username)) {
+ $this->login_data = array($username, $password);
+ }
+
$this->go('mail', null, true);
}
@@ -206,8 +224,8 @@
$pass_input = $this->byCssSelector('form input[name="_pass"]');
$submit = $this->byCssSelector('form input[type="submit"]');
- $user_input->value(TESTS_USER);
- $pass_input->value(TESTS_PASS);
+ $user_input->value($this->login_data[0]);
+ $pass_input->value($this->login_data[1]);
// submit login form
$submit->click();
--
Gitblit v1.9.1