1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

Merge remote-tracking branch 'github-imkingdavid/task/functional' into develop-olympus

By David King
via David King
* github-imkingdavid/task/functional:
  [task/functional] Use proper format for @var doc blocks.
  [task/functional] Fix $lang_path variable
  [task/functional] Change property visibility, remove globals, reword comment
  [task/functional] Make sure missing language values are handled properly
  [task/functional] Increase code coverage for functional tests
This commit is contained in:
Nils Adermann
2012-05-22 18:10:21 +02:00
4 changed files with 169 additions and 1 deletions

View File

@@ -6,6 +6,7 @@
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
use Symfony\Component\BrowserKit\CookieJar;
require_once __DIR__ . '/../../phpBB/includes/functions_install.php';
@@ -14,6 +15,18 @@ class phpbb_functional_test_case extends phpbb_test_case
protected $client;
protected $root_url;
/**
* Session ID for current test's session (each test makes its own)
* @var string
*/
protected $sid;
/**
* Language array used by phpBB
* @var array
*/
protected $lang = array();
static protected $config = array();
static protected $already_installed = false;
@@ -34,8 +47,13 @@ class phpbb_functional_test_case extends phpbb_test_case
$this->markTestSkipped('phpbb_functional_url was not set in test_config and wasn\'t set as PHPBB_FUNCTIONAL_URL environment variable either.');
}
$this->client = new Goutte\Client();
$this->cookieJar = new CookieJar;
$this->client = new Goutte\Client(array(), array(), null, $this->cookieJar);
$this->root_url = self::$config['phpbb_functional_url'];
// Clear the language array so that things
// that were added in other tests are gone
$this->lang = array();
$this->add_lang('common');
}
public function request($method, $path)
@@ -161,4 +179,63 @@ class phpbb_functional_test_case extends phpbb_test_case
$db_conn_mgr = new phpbb_database_test_connection_manager($config);
$db_conn_mgr->recreate_db();
}
protected function login()
{
$this->add_lang('ucp');
$crawler = $this->request('GET', 'ucp.php');
$this->assertContains($this->lang('LOGIN_EXPLAIN_UCP'), $crawler->filter('html')->text());
$form = $crawler->selectButton($this->lang('LOGIN'))->form();
$login = $this->client->submit($form, array('username' => 'admin', 'password' => 'admin'));
$cookies = $this->cookieJar->all();
// The session id is stored in a cookie that ends with _sid - we assume there is only one such cookie
foreach ($cookies as $key => $cookie);
{
if (substr($key, -4) == '_sid')
{
$this->sid = $cookie->getValue();
}
}
}
protected function add_lang($lang_file)
{
if (is_array($lang_file))
{
foreach ($lang_file as $file)
{
$this->add_lang($file);
}
}
$lang_path = __DIR__ . "/../../phpBB/language/en/$lang_file.php";
$lang = array();
if (file_exists($lang_path))
{
include($lang_path);
}
$this->lang = array_merge($this->lang, $lang);
}
protected function lang()
{
$args = func_get_args();
$key = $args[0];
if (empty($this->lang[$key]))
{
throw new RuntimeException('Language key "' . $key . '" could not be found.');
}
$args[0] = $this->lang[$key];
return call_user_func_array('sprintf', $args);
}
}