diff options
| -rw-r--r-- | tests/functional/auth_test.php | 40 | ||||
| -rw-r--r-- | tests/functional/browse_test.php | 6 | ||||
| -rw-r--r-- | tests/functional/lang_test.php | 37 | ||||
| -rw-r--r-- | tests/test_framework/phpbb_functional_test_case.php | 77 | 
4 files changed, 159 insertions, 1 deletions
| diff --git a/tests/functional/auth_test.php b/tests/functional/auth_test.php new file mode 100644 index 0000000000..e955dcb4df --- /dev/null +++ b/tests/functional/auth_test.php @@ -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()); +	} +} diff --git a/tests/functional/browse_test.php b/tests/functional/browse_test.php index 723cf93232..26c18c4c1f 100644 --- a/tests/functional/browse_test.php +++ b/tests/functional/browse_test.php @@ -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()); +	}  } diff --git a/tests/functional/lang_test.php b/tests/functional/lang_test.php new file mode 100644 index 0000000000..f77dd511a3 --- /dev/null +++ b/tests/functional/lang_test.php @@ -0,0 +1,37 @@ +<?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')); +	} + +	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')); +	} +} diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index b5e6f7e377..f14e214a78 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -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'; @@ -13,6 +14,14 @@ class phpbb_functional_test_case extends phpbb_test_case  {  	protected $client;  	protected $root_url; +	/** +	* @var string Session ID for current test's session (each test makes its own) +	*/ +	protected $sid; +	/** +	* @var array Language array used by phpBB +	*/ +	private $lang = array();  	static protected $config = array();  	static protected $already_installed = false; @@ -34,8 +43,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 +175,65 @@ 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(); +		$sid = ''; +		// get the SID from the cookie +		foreach ($cookies as $key => $cookie); +		{ +			if (substr($key, -4) == '_sid') +			{ +				$this->sid = $cookie->getValue(); +			} +		} +	} + +	protected function add_lang($lang_file) +	{ +		global $phpbb_root_path, $phpEx; + +		if (is_array($lang_file)) +		{ +			foreach ($lang_file as $file) +			{ +				$this->add_lang($file); +			} +		} + +		$lang_path = "{$phpbb_root_path}language/en/$lang_file.$phpEx"; + +		$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 Exception('Language key "' . $key . '" could not be found.'); +		} + +		$args[0] = $this->lang[$key]; + +		return call_user_func_array('sprintf', $args); +	}  } | 
