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:
commit
5d5049710c
40
tests/functional/auth_test.php
Normal file
40
tests/functional/auth_test.php
Normal 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());
|
||||
}
|
||||
}
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
45
tests/functional/lang_test.php
Normal file
45
tests/functional/lang_test.php
Normal 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'));
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user