1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-04-20 15:53:14 +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
commit 5d5049710c
4 changed files with 169 additions and 1 deletions

View File

@ -0,0 +1,40 @@
<?php
/**
*
* @package testing
* @copyright (c) 2012 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
/**
* @group functional
*/
class phpbb_functional_auth_test extends phpbb_functional_test_case
{
public function test_login()
{
$this->login();
// check for logout link
$crawler = $this->request('GET', 'index.php');
$this->assertContains($this->lang('LOGOUT_USER', 'admin'), $crawler->filter('.navbar')->text());
}
/**
* @depends test_login
*/
public function test_logout()
{
$this->login();
$this->add_lang('ucp');
// logout
$crawler = $this->request('GET', 'ucp.php?sid=' . $this->sid . '&mode=logout');
$this->assertContains($this->lang('LOGOUT_REDIRECT'), $crawler->filter('#message')->text());
// look for a register link, which should be visible only when logged out
$crawler = $this->request('GET', 'index.php');
$this->assertContains($this->lang('REGISTER'), $crawler->filter('.navbar')->text());
}
}

View File

@ -23,4 +23,10 @@ class phpbb_functional_browse_test extends phpbb_functional_test_case
$crawler = $this->request('GET', 'viewforum.php?f=2');
$this->assertGreaterThan(0, $crawler->filter('.topiclist')->count());
}
public function test_viewtopic()
{
$crawler = $this->request('GET', 'viewtopic.php?t=1');
$this->assertGreaterThan(0, $crawler->filter('.postbody')->count());
}
}

View File

@ -0,0 +1,45 @@
<?php
/**
*
* @package testing
* @copyright (c) 2012 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/
/**
* @group functional
*/
class phpbb_functional_lang_test extends phpbb_functional_test_case
{
public function test_lang()
{
// Test a language string present in the common language file
$this->assertEquals('Board index', $this->lang('FORUM_INDEX'));
}
/**
* @expectedException RuntimeException
*/
public function test_lang_missing()
{
$this->assertEquals('Your account has now been activated. Thank you for registering.', $this->lang('ACCOUNT_ACTIVE'));
}
public function test_add_lang()
{
$this->add_lang('ucp');
// Test a language string present only in the UCP language file
$this->assertEquals('Your account has now been activated. Thank you for registering.', $this->lang('ACCOUNT_ACTIVE'));
}
public function test_add_langs()
{
$this->add_lang(array('groups', 'memberlist'));
// Test a language string from each UCP and memberlist
$this->assertEquals('The selected group is already your default group.', $this->lang('ALREADY_DEFAULT_GROUP'));
$this->assertEquals('Profile', $this->lang('ABOUT_USER'));
}
}

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);
}
}