From 679183385fc070269ea2356722eff0f3b6defdfc Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Mon, 29 Apr 2013 02:25:22 +0530
Subject: [ticket/10820] add unit tests for phpbb_is_greater_ie7

PHPBB3-10820
---
 tests/download/http_user_agent_test.php | 65 +++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 tests/download/http_user_agent_test.php

(limited to 'tests')

diff --git a/tests/download/http_user_agent_test.php b/tests/download/http_user_agent_test.php
new file mode 100644
index 0000000000..601561f44e
--- /dev/null
+++ b/tests/download/http_user_agent_test.php
@@ -0,0 +1,65 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2010 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_download.php';
+
+class phpbb_download_http_user_agent_test extends phpbb_test_case
+{
+	public function user_agents()
+	{
+		return array(
+			// user agent
+			// expected
+			array(
+				'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
+				true,
+			),
+			array(
+				'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
+				true,
+			),
+			array(
+				'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)',
+				true,
+			),
+			array(
+				'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)',
+				false,
+			),
+			array(
+				'Mozilla/4.0 (compatible; MSIE 6.1; Windows XP; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
+				false,
+			),
+			array(
+				'Mozilla/4.0 (compatible; MSIE 6.01; Windows NT 6.0)',
+				false,
+			),
+			array(
+				'Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)',
+				false,
+			),
+			array(
+				'Mozilla/5.0 (Windows NT 6.2; Win64; x64;) Gecko/20100101 Firefox/20.0',
+				false,
+			),
+			array(
+				'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36',
+				false,
+			),
+		);
+	}
+
+	/**
+	* @dataProvider user_agents
+	*/
+	public function test_is_greater_ie7($user_agent, $expected)
+	{
+		$this->assertEquals($expected, phpbb_is_greater_ie7($user_agent));
+	}
+}
-- 
cgit v1.2.1


From bcd6f79d5c3e3db5ae60098526d93b477cc9eed9 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Sun, 12 May 2013 15:57:13 +0530
Subject: [ticket/10820] Add test cases

PHPBB3-10325
---
 tests/download/http_user_agent_test.php | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

(limited to 'tests')

diff --git a/tests/download/http_user_agent_test.php b/tests/download/http_user_agent_test.php
index 601561f44e..e08fb7a3f1 100644
--- a/tests/download/http_user_agent_test.php
+++ b/tests/download/http_user_agent_test.php
@@ -52,6 +52,38 @@ class phpbb_download_http_user_agent_test extends phpbb_test_case
 				'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36',
 				false,
 			),
+			array(
+				'Googlebot-Image/1.0',
+				false,
+			),
+			array(
+				'Googlebot/2.1 ( http://www.google.com/bot.html)',
+				false,
+			),
+			array(
+				'Lynx/2.8.3dev.9 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6',
+				false,
+			),
+			array(
+				'Links (0.9x; Linux 2.4.7-10 i686)',
+				false,
+			),
+			array(
+				'Opera/9.60 (Windows NT 5.1; U; de) Presto/2.1.1',
+				false,
+			),
+			array(
+				'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT;)',
+				false,
+			),
+			array(
+				'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.01 [en]',
+				false,
+			),
+			array(
+				'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.24',
+				false,
+			),
 		);
 	}
 
-- 
cgit v1.2.1


From 3d625ab0cf9fe8d1869fbdd66a4602553bb744d4 Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Wed, 29 May 2013 18:24:54 +0200
Subject: [ticket/11579] Add basic set of unit tests for validate_data()

This currently includes tests for the string, num, date, match, and
language iso validation functions.

PHPBB3-11579
---
 tests/functions/validate_data_test.php | 252 +++++++++++++++++++++++++++++++++
 1 file changed, 252 insertions(+)
 create mode 100644 tests/functions/validate_data_test.php

(limited to 'tests')

diff --git a/tests/functions/validate_data_test.php b/tests/functions/validate_data_test.php
new file mode 100644
index 0000000000..6a429a5529
--- /dev/null
+++ b/tests/functions/validate_data_test.php
@@ -0,0 +1,252 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
+
+class phpbb_functions_validate_data_test extends phpbb_database_test_case
+{
+	/*
+	* Types to test
+	* - username
+	*	. 
+	* - password
+	* - email
+	* - jabber
+	*/
+
+	public function getDataSet()
+	{
+		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/language_select.xml');
+	}
+
+	/**
+	* Test provided input data with supplied checks and compare to expected
+	* results
+	*
+	* @param array $input Input data with specific array keys that need to
+	*		be matched by the ones in the other 2 params
+	* @param array $validate_check Array containing validate_data check
+	*		settings, i.e. array('foobar' => array('string'))
+	* @param array $expected Array containing the expected results. Either
+	*		an array containing the error message or the an empty
+	*		array if input is correct
+	*/
+	public function validate_data_check($input, $validate_check, $expected)
+	{
+		foreach ($input as $key => $data)
+		{
+			$this->assertEquals($expected[$key], validate_data(array($data), array($validate_check[$key])));
+		}
+	}
+
+	/*
+	* Types to test
+	* - string:
+	*	empty + optional = true --> good
+	*	empty + optional = false --> good (min = 0)
+	*	'foobar' --> good
+	*	'foobar' + optional = false|true + min = 2 + max = 6 --> good
+	*	'foobar' + "			    + min = 7 + max = 9 --> TOO_SHORT
+	*	'foobar' + "			    + min = 2 + max = 5 --> TOO_LONG
+	*	''	   + optional = false	    + min = 1 + max = 6 --> TOO_SHORT
+	*	''	   + optional = true	    + min = 1 + max = 6 --> good
+	*/
+	public function test_validate_string()
+	{
+		$this->validate_data_check(array(
+			'empty_opt'		=> '',
+			'empty'			=> '',
+			'foo'			=> 'foobar',
+			'foo_minmax_correct'	=> 'foobar',
+			'foo_minmax_short'	=> 'foobar',
+			'foo_minmax_long'	=> 'foobar',
+			'empty_short'		=> '',
+			'empty_length_opt'	=> '',
+		),
+		array(
+			'empty_opt'		=> array('string', true),
+			'empty'			=> array('string'),
+			'foo'			=> array('string'),
+			'foo_minmax_correct'	=> array('string', false, 2, 6),
+			'foo_minmax_short'	=> array('string', false, 7, 9),
+			'foo_minmax_long'	=> array('string', false, 2, 5),
+			'empty_short'		=> array('string', false, 1, 6),
+			'empty_length_opt'	=> array('string', true, 1, 6),
+		),
+		array(
+			'empty_opt'		=> array(),
+			'empty'			=> array(),
+			'foo'			=> array(),
+			'foo_minmax_correct'	=> array(),
+			'foo_minmax_short'	=> array('TOO_SHORT'),
+			'foo_minmax_long'	=> array('TOO_LONG'),
+			'empty_short'		=> array('TOO_SHORT'),
+			'empty_length_opt'	=> array(),
+		));
+	}
+
+	/*
+	* Types to test
+	* - num
+	*	empty + optional = true|false --> good
+	*	0	--> good
+	*	5 + optional = false|true + min = 2 + max = 6 --> good
+	*	5 + optional = false|true + min = 7 + max = 10 --> TOO_SMALL
+	*	5 + optional = false|true + min = 2 + max = 3 --> TOO_LARGE
+	*	'foobar' --> should fail with WRONG_DATA_NUMERIC !!!
+	*/
+	public function test_validate_num()
+	{
+		$this->validate_data_check(array(
+			'empty'			=> '',
+			'zero'			=> 0,
+			'five_minmax_correct'	=> 5,
+			'five_minmax_short'	=> 5,
+			'five_minmax_long'	=> 5,
+			'string'		=> 'foobar',
+		),
+		array(
+			'empty'			=> array('num'),
+			'zero'			=> array('num'),
+			'five_minmax_correct'	=> array('num', false, 2, 6),
+			'five_minmax_short'	=> array('num', false, 7, 10),
+			'five_minmax_long'	=> array('num', false, 2, 3),
+			'string'		=> array('num'),
+		),
+		array(
+			'empty'			=> array(),
+			'zero'			=> array(),
+			'five_minmax_correct'	=> array(),
+			'five_minmax_short'	=> array('TOO_SMALL'),
+			'five_minmax_long'	=> array('TOO_LARGE'),
+			'string'	=> array(),
+		));
+	}
+
+	/*
+	* Types to test
+	* - date
+	*	. ''	--> invalid
+	*	. '' + optional = true --> good
+	*	. 17-06-1990 --> good
+	*	. 05-05-1990 --> good
+	*	. 17-12-1990 --> good
+	*	. 01-01-0000 --> good!!!
+	*	. 17-17-1990 --> invalid
+	*	. 00-12-1990 --> invalid
+	*	. 01-00-1990 --> invalid
+	*/
+	public function test_validate_date()
+	{
+		$this->validate_data_check(array(
+			'empty'			=> '',
+			'empty_opt'		=> '',
+			'double_single'		=> '17-06-1990',
+			'single_single'		=> '05-05-2009',
+			'double_double'		=> '17-12-1990',
+			// Currently fails
+			//'zero_year'		=> '01-01-0000',
+			'month_high'		=> '17-17-1990',
+			'month_low'		=> '01-00-1990',
+			'day_high'		=> '64-01-1990',
+			'day_low'		=> '00-12-1990',
+		),
+		array(
+			'empty'			=> array('date'),
+			'empty_opt'		=> array('date', true),
+			'double_single'		=> array('date'),
+			'single_single'		=> array('date'),
+			'double_double'		=> array('date'),
+			// Currently fails
+			//'zero_year'		=> array('date'),
+			'month_high'		=> array('date'),
+			'month_low'		=> array('date'),
+			'day_high'		=> array('date'),
+			'day_low'		=> array('date'),
+		),
+		array(
+			'empty'			=> array('INVALID'),
+			'empty_opt'		=> array(),
+			'double_single'		=> array(),
+			'single_single'		=> array(),
+			'double_double'		=> array(),
+			// Currently fails
+			//'zero_year'		=> array(),
+			'month_high'		=> array('INVALID'),
+			'month_low'		=> array('INVALID'),
+			'day_high'		=> array('INVALID'),
+			'day_low'		=> array('INVALID'),
+		));
+	}
+
+	/*
+	* Types to test
+	* - match
+	*	. empty + optional = true --> good
+	*	. empty + empty match --> good
+	*	. 'test' + optional = true|false + match = '/[a-z]/' --> good
+	*	. 'test123' + optional = true|false + match = '/[a-z]/' --> WRONG_DATA_MATCH
+	*/
+	public function test_validate_match()
+	{
+		$this->validate_data_check(array(
+			'empty_opt'		=> '',
+			'empty_empty_match'	=> '',
+			'foobar'		=> 'foobar',
+			'foobar_fail'		=> 'foobar123',
+		),
+		array(
+			'empty_opt'		=> array('match', true, '/[a-z]$/'),
+			'empty_empty_match'	=> array('match'),
+			'foobar'		=> array('match', false, '/[a-z]$/'),
+			'foobar_fail'		=> array('match', false, '/[a-z]$/'),
+		),
+		array(
+			'empty_opt'		=> array(),
+			'empty_empty_match'	=> array(),
+			'foobar'		=> array(),
+			'foobar_fail'		=> array('WRONG_DATA'),
+		));
+	}
+
+	/*
+	* Types to test
+	* - language_iso_name
+	*	. empty --> WRONG_DATA
+	*	. 'en' --> good
+	*	. 'cs' --> good
+	*	. 'de' --> WRONG_DATA (won't exist)
+	*/
+	public function test_validate_lang_iso()
+	{
+		global $db;
+
+		$db = $this->new_dbal();
+
+		$this->validate_data_check(array(
+			'empty'		=> '',
+			'en'		=> 'en',
+			'cs'		=> 'cs',
+			'de'		=> 'de',
+		),
+		array(
+			'empty'		=> array('language_iso_name'),
+			'en'		=> array('language_iso_name'),
+			'cs'		=> array('language_iso_name'),
+			'de'		=> array('language_iso_name'),
+		),
+		array(
+			'empty'		=> array('WRONG_DATA'),
+			'en'		=> array(),
+			'cs'		=> array(),
+			'de'		=> array('WRONG_DATA'),
+		));
+	}
+}
-- 
cgit v1.2.1


From 3f657bc63e6649da43d860be1848116c42214a65 Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Thu, 30 May 2013 16:05:19 +0200
Subject: [ticket/11579] Add remaining unit tests for validate_data functions

This now includes tests for usernames, passwords, emails, and jabber
addresses. A few small changes had to be applied to phpbb_mock_cache
and phpbb_mock_user in order to incorporate needed methods.

PHPBB3-11579
---
 tests/functions/fixtures/validate_data.xml |  59 +++++
 tests/functions/validate_data_test.php     | 350 ++++++++++++++++++++++++-----
 tests/mock/cache.php                       |  15 ++
 tests/mock/user.php                        |  13 ++
 4 files changed, 375 insertions(+), 62 deletions(-)
 create mode 100644 tests/functions/fixtures/validate_data.xml

(limited to 'tests')

diff --git a/tests/functions/fixtures/validate_data.xml b/tests/functions/fixtures/validate_data.xml
new file mode 100644
index 0000000000..38ecae6ad2
--- /dev/null
+++ b/tests/functions/fixtures/validate_data.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dataset>
+	<table name="phpbb_groups">
+		<column>group_name</column>
+		<column>group_desc</column>
+		<row>
+			<value>foobar_group</value>
+			<value>test123</value>
+		</row>
+	</table>
+	<table name="phpbb_lang">
+		<column>lang_id</column>
+		<column>lang_iso</column>
+		<column>lang_local_name</column>
+		<column>lang_english_name</column>
+		<row>
+			<value>1</value>
+			<value>en</value>
+			<value>English</value>
+			<value>English</value>
+		</row>
+		<row>
+			<value>2</value>
+			<value>cs</value>
+			<value>Čeština</value>
+			<value>Czech</value>
+		</row>
+	</table>
+	<table name="phpbb_users">
+		<column>user_id</column>
+		<column>username</column>
+		<column>username_clean</column>
+		<column>user_permissions</column>
+		<column>user_sig</column>
+		<column>user_occ</column>
+		<column>user_interests</column>
+		<column>user_email_hash</column>
+		<row>
+			<value>1</value>
+			<value>admin</value>
+			<value>admin</value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value>143317126117</value>
+		</row>
+		<row>
+			<value>2</value>
+			<value>moderator</value>
+			<value>moderator</value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value>0</value>
+		</row>
+	</table>
+</dataset>
diff --git a/tests/functions/validate_data_test.php b/tests/functions/validate_data_test.php
index 6a429a5529..ed91f782ba 100644
--- a/tests/functions/validate_data_test.php
+++ b/tests/functions/validate_data_test.php
@@ -7,23 +7,30 @@
 *
 */
 
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
 require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
 require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
+require_once dirname(__FILE__) . '/../mock/cache.php';
+require_once dirname(__FILE__) . '/../mock/user.php';
 
 class phpbb_functions_validate_data_test extends phpbb_database_test_case
 {
-	/*
-	* Types to test
-	* - username
-	*	. 
-	* - password
-	* - email
-	* - jabber
-	*/
+	protected $db;
+	protected $cache;
+	protected $user;
 
 	public function getDataSet()
 	{
-		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/language_select.xml');
+		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/validate_data.xml');
+	}
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->db = $this->new_dbal();
+		$this->cache = new phpbb_mock_cache;
+		$this->user = new phpbb_mock_user;
 	}
 
 	/**
@@ -42,22 +49,15 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 	{
 		foreach ($input as $key => $data)
 		{
-			$this->assertEquals($expected[$key], validate_data(array($data), array($validate_check[$key])));
+			$test = validate_data(array($data), array($validate_check[$key]));
+			if ($test != $expected[$key])
+			{
+				var_dump($key, $data, $test, $expected[$key]);
+			}
+			$this->assertEquals($expected[$key], $test);
 		}
 	}
 
-	/*
-	* Types to test
-	* - string:
-	*	empty + optional = true --> good
-	*	empty + optional = false --> good (min = 0)
-	*	'foobar' --> good
-	*	'foobar' + optional = false|true + min = 2 + max = 6 --> good
-	*	'foobar' + "			    + min = 7 + max = 9 --> TOO_SHORT
-	*	'foobar' + "			    + min = 2 + max = 5 --> TOO_LONG
-	*	''	   + optional = false	    + min = 1 + max = 6 --> TOO_SHORT
-	*	''	   + optional = true	    + min = 1 + max = 6 --> good
-	*/
 	public function test_validate_string()
 	{
 		$this->validate_data_check(array(
@@ -92,16 +92,6 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 		));
 	}
 
-	/*
-	* Types to test
-	* - num
-	*	empty + optional = true|false --> good
-	*	0	--> good
-	*	5 + optional = false|true + min = 2 + max = 6 --> good
-	*	5 + optional = false|true + min = 7 + max = 10 --> TOO_SMALL
-	*	5 + optional = false|true + min = 2 + max = 3 --> TOO_LARGE
-	*	'foobar' --> should fail with WRONG_DATA_NUMERIC !!!
-	*/
 	public function test_validate_num()
 	{
 		$this->validate_data_check(array(
@@ -130,19 +120,6 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 		));
 	}
 
-	/*
-	* Types to test
-	* - date
-	*	. ''	--> invalid
-	*	. '' + optional = true --> good
-	*	. 17-06-1990 --> good
-	*	. 05-05-1990 --> good
-	*	. 17-12-1990 --> good
-	*	. 01-01-0000 --> good!!!
-	*	. 17-17-1990 --> invalid
-	*	. 00-12-1990 --> invalid
-	*	. 01-00-1990 --> invalid
-	*/
 	public function test_validate_date()
 	{
 		$this->validate_data_check(array(
@@ -186,14 +163,6 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 		));
 	}
 
-	/*
-	* Types to test
-	* - match
-	*	. empty + optional = true --> good
-	*	. empty + empty match --> good
-	*	. 'test' + optional = true|false + match = '/[a-z]/' --> good
-	*	. 'test123' + optional = true|false + match = '/[a-z]/' --> WRONG_DATA_MATCH
-	*/
 	public function test_validate_match()
 	{
 		$this->validate_data_check(array(
@@ -216,19 +185,11 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 		));
 	}
 
-	/*
-	* Types to test
-	* - language_iso_name
-	*	. empty --> WRONG_DATA
-	*	. 'en' --> good
-	*	. 'cs' --> good
-	*	. 'de' --> WRONG_DATA (won't exist)
-	*/
 	public function test_validate_lang_iso()
 	{
 		global $db;
 
-		$db = $this->new_dbal();
+		$db = $this->db;
 
 		$this->validate_data_check(array(
 			'empty'		=> '',
@@ -249,4 +210,269 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 			'de'		=> array('WRONG_DATA'),
 		));
 	}
+
+	public function validate_username_data()
+	{
+		return array(
+			array('USERNAME_CHARS_ANY', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array(),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array(),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('USERNAME_TAKEN')
+			)),
+			array('USERNAME_ALPHA_ONLY', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array('INVALID_CHARS'),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('INVALID_CHARS')
+			)),
+			array('USERNAME_ALPHA_SPACERS', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array(),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('USERNAME_TAKEN')
+			)),
+			array('USERNAME_LETTER_NUM', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array('INVALID_CHARS'),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('INVALID_CHARS')
+			)),
+			array('USERNAME_LETTER_NUM_SPACERS', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array(),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array(),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('USERNAME_TAKEN')
+			)),
+			array('USERNAME_ASCII', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array(),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('USERNAME_TAKEN')
+			)),
+		);
+	}
+
+	/**
+	* @dataProvider validate_username_data
+	*/
+	public function test_validate_username($allow_name_chars, $expected)
+	{
+		global $cache, $config, $db;
+
+		$db = $this->db;
+		$cache = $this->cache;
+		$cache->put('_disallowed_usernames', array('barfoo'));
+
+		$config['allow_name_chars'] = $allow_name_chars;
+
+		$this->validate_data_check(array(
+			'foobar_allow'		=> 'foobar',
+			'foobar_ascii'		=> 'foobar',
+			'foobar_any'		=> 'f*~*^=oo_bar1',
+			'foobar_alpha'		=> 'fo0Bar',
+			'foobar_alpha_spacers'	=> 'Fo0-[B]_a+ R',
+			'foobar_letter_num'	=> 'fo0Bar0',
+			'foobar_letter_num_sp'	=> 'Fö0-[B]_a+ R',
+			'foobar_quot'		=> '"foobar"',
+			'barfoo_disallow'	=> 'barfoo',
+			'admin_taken'		=> 'admin',
+			'group_taken'		=> 'foobar_group',
+		),
+		array(
+			'foobar_allow'		=> array('username', 'foobar'),
+			'foobar_ascii'		=> array('username'),
+			'foobar_any'		=> array('username'),
+			'foobar_alpha'		=> array('username'),
+			'foobar_alpha_spacers'	=> array('username'),
+			'foobar_letter_num'	=> array('username'),
+			'foobar_letter_num_sp'	=> array('username'),
+			'foobar_quot'		=> array('username'),
+			'barfoo_disallow'	=> array('username'),
+			'admin_taken'		=> array('username'),
+			'group_taken'		=> array('username'),
+		),
+		$expected);
+	}
+
+	public function validate_password_data()
+	{
+		return array(
+			array('PASS_TYPE_ANY', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array(),
+				'foobar_mixed'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_CASE', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_ALPHA', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_SYMBOL', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array('INVALID_CHARS'),
+				'foobar_symbol'		=> array(),
+			)),
+		);
+	}
+
+	/**
+	* @dataProvider validate_password_data
+	*/
+	public function test_validate_password($pass_complexity, $expected)
+	{
+		global $config;
+
+		// Set complexity to mixed case letters, numbers and symbols
+		$config['pass_complex'] = $pass_complexity;
+
+		$this->validate_data_check(array(
+			'empty'			=> '',
+			'foobar_any'		=> 'foobar',
+			'foobar_mixed'		=> 'FooBar',
+			'foobar_alpha'		=> 'F00bar',
+			'foobar_symbol'		=> 'fooBar123*',
+		),
+		array(
+			'empty'			=> array('password'),
+			'foobar_any'		=> array('password'),
+			'foobar_mixed'		=> array('password'),
+			'foobar_alpha'		=> array('password'),
+			'foobar_symbol'		=> array('password'),
+		),
+		$expected);
+	}
+
+	public function test_validate_email()
+	{
+		global $config, $db, $user;
+
+		$config['email_check_mx'] = true;
+		$db = $this->db;
+		$user = $this->user;
+		$user->optionset('banned_users', array('banned@example.com'));
+
+		$this->validate_data_check(array(
+			'empty'			=> '',
+			'allowed'		=> 'foobar@example.com',
+			'invalid'		=> 'fööbar@example.com',
+			'valid_complex'		=> "'%$~test@example.com",
+			'taken'			=> 'admin@example.com',
+			'banned'		=> 'banned@example.com',
+			'no_mx'			=> 'test@wwrrrhhghgghgh.ttv',
+		),
+		array(
+			'empty'			=> array('email'),
+			'allowed'		=> array('email', 'foobar@example.com'),
+			'invalid'		=> array('email'),
+			'valid_complex'		=> array('email'),
+			'taken'			=> array('email'),
+			'banned'		=> array('email'),
+			'no_mx'			=> array('email'),
+		),
+		array(
+			'empty'			=> array(),
+			'allowed'		=> array(),
+			'invalid'		=> array('EMAIL_INVALID'),
+			'valid_complex'		=> array(),
+			'taken'			=> array('EMAIL_TAKEN'),
+			'banned'		=> array('EMAIL_BANNED'),
+			'no_mx'			=> array('DOMAIN_NO_MX_RECORD'),
+		));
+	}
+
+	public function test_validate_jabber()
+	{
+		$this->validate_data_check(array(
+			'empty'			=> '',
+			'no_seperator'		=> 'testjabber.ccc',
+			'no_user'		=> '@jabber.ccc',
+			'no_realm'		=> 'user@',
+			'dot_realm'		=> 'user@.....',
+			'-realm'		=> 'user@-jabber.ccc',
+			'realm-'		=> 'user@jabber.ccc-',
+			'correct'		=> 'user@jabber.09A-z.org',
+			'prohibited'		=> 'u@ser@jabber.ccc.org',
+			'prohibited_char'	=> 'u<s>er@jabber.ccc.org',
+		),
+		array(
+			'empty'			=> array('jabber'),
+			'no_seperator'		=> array('jabber'),
+			'no_user'		=> array('jabber'),
+			'no_realm'		=> array('jabber'),
+			'dot_realm'		=> array('jabber'),
+			'-realm'		=> array('jabber'),
+			'realm-'		=> array('jabber'),
+			'correct'		=> array('jabber'),
+			'prohibited'		=> array('jabber'),
+			'prohibited_char'	=> array('jabber'),
+		),
+		array(
+			'empty'			=> array(),
+			'no_seperator'		=> array('WRONG_DATA'),
+			'no_user'		=> array('WRONG_DATA'),
+			'no_realm'		=> array('WRONG_DATA'),
+			'dot_realm'		=> array('WRONG_DATA'),
+			'-realm'		=> array('WRONG_DATA'),
+			'realm-'		=> array('WRONG_DATA'),
+			'correct'		=> array(),
+			'prohibited'		=> array('WRONG_DATA'),
+			'prohibited_char'	=> array('WRONG_DATA'),
+		));
+	}
 }
diff --git a/tests/mock/cache.php b/tests/mock/cache.php
index aa0db5ab20..acf4288319 100644
--- a/tests/mock/cache.php
+++ b/tests/mock/cache.php
@@ -74,6 +74,21 @@ class phpbb_mock_cache
 		);
 	}
 
+	/**
+	* Obtain disallowed usernames. Input data via standard put method.
+	*/
+	public function obtain_disallowed_usernames()
+	{
+		if (($usernames = $this->get('_disallowed_usernames')) !== false)
+		{
+			return $usernames;
+		}
+		else
+		{
+			return array();
+		}
+	}
+
 	public function set_bots($bots)
 	{
 		$this->data['_bots'] = $bots;
diff --git a/tests/mock/user.php b/tests/mock/user.php
index ec14ce430e..bd547b3973 100644
--- a/tests/mock/user.php
+++ b/tests/mock/user.php
@@ -33,4 +33,17 @@ class phpbb_mock_user
 	{
 		$this->options[$item] = $value;
 	}
+
+	public function check_ban($user_id = false, $user_ips = false, $user_email = false, $return = false)
+	{
+		$banned_users = $this->optionget('banned_users');
+		foreach ($banned_users as $banned)
+		{
+			if ($banned == $user_id || $banned == $user_ips || $banned == $user_email)
+			{
+				return true;
+			}
+		}
+		return false;
+	}
 }
-- 
cgit v1.2.1


From 33a0859f4ac3454c12dda651f708e16fc6c45adb Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Thu, 30 May 2013 20:34:21 +0200
Subject: [ticket/11579] Move tests into seperate files depending on needed
 fixture

PHPBB3-11579
---
 tests/functions/common_validate_data.php       |  31 ++
 tests/functions/fixtures/validate_data.xml     |  59 ---
 tests/functions/fixtures/validate_email.xml    |  23 ++
 tests/functions/fixtures/validate_username.xml |  38 ++
 tests/functions/validate_data_simple_test.php  | 252 +++++++++++++
 tests/functions/validate_data_test.php         | 478 -------------------------
 tests/functions/validate_email_test.php        |  72 ++++
 tests/functions/validate_lang_iso_test.php     |  56 +++
 tests/functions/validate_username_test.php     | 160 +++++++++
 9 files changed, 632 insertions(+), 537 deletions(-)
 create mode 100644 tests/functions/common_validate_data.php
 delete mode 100644 tests/functions/fixtures/validate_data.xml
 create mode 100644 tests/functions/fixtures/validate_email.xml
 create mode 100644 tests/functions/fixtures/validate_username.xml
 create mode 100644 tests/functions/validate_data_simple_test.php
 delete mode 100644 tests/functions/validate_data_test.php
 create mode 100644 tests/functions/validate_email_test.php
 create mode 100644 tests/functions/validate_lang_iso_test.php
 create mode 100644 tests/functions/validate_username_test.php

(limited to 'tests')

diff --git a/tests/functions/common_validate_data.php b/tests/functions/common_validate_data.php
new file mode 100644
index 0000000000..64c9499ac3
--- /dev/null
+++ b/tests/functions/common_validate_data.php
@@ -0,0 +1,31 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+class phpbb_functions_common_validate_data extends phpbb_test_case
+{
+	/**
+	* Test provided input data with supplied checks and compare to expected
+	* results
+	*
+	* @param array $input Input data with specific array keys that need to
+	*		be matched by the ones in the other 2 params
+	* @param array $validate_check Array containing validate_data check
+	*		settings, i.e. array('foobar' => array('string'))
+	* @param array $expected Array containing the expected results. Either
+	*		an array containing the error message or the an empty
+	*		array if input is correct
+	*/
+	public function validate_data_check($input, $validate_check, $expected)
+	{
+		foreach ($input as $key => $data)
+		{
+			$this->assertEquals($expected[$key], validate_data(array($data), array($validate_check[$key])));
+		}
+	}
+}
diff --git a/tests/functions/fixtures/validate_data.xml b/tests/functions/fixtures/validate_data.xml
deleted file mode 100644
index 38ecae6ad2..0000000000
--- a/tests/functions/fixtures/validate_data.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<dataset>
-	<table name="phpbb_groups">
-		<column>group_name</column>
-		<column>group_desc</column>
-		<row>
-			<value>foobar_group</value>
-			<value>test123</value>
-		</row>
-	</table>
-	<table name="phpbb_lang">
-		<column>lang_id</column>
-		<column>lang_iso</column>
-		<column>lang_local_name</column>
-		<column>lang_english_name</column>
-		<row>
-			<value>1</value>
-			<value>en</value>
-			<value>English</value>
-			<value>English</value>
-		</row>
-		<row>
-			<value>2</value>
-			<value>cs</value>
-			<value>Čeština</value>
-			<value>Czech</value>
-		</row>
-	</table>
-	<table name="phpbb_users">
-		<column>user_id</column>
-		<column>username</column>
-		<column>username_clean</column>
-		<column>user_permissions</column>
-		<column>user_sig</column>
-		<column>user_occ</column>
-		<column>user_interests</column>
-		<column>user_email_hash</column>
-		<row>
-			<value>1</value>
-			<value>admin</value>
-			<value>admin</value>
-			<value></value>
-			<value></value>
-			<value></value>
-			<value></value>
-			<value>143317126117</value>
-		</row>
-		<row>
-			<value>2</value>
-			<value>moderator</value>
-			<value>moderator</value>
-			<value></value>
-			<value></value>
-			<value></value>
-			<value></value>
-			<value>0</value>
-		</row>
-	</table>
-</dataset>
diff --git a/tests/functions/fixtures/validate_email.xml b/tests/functions/fixtures/validate_email.xml
new file mode 100644
index 0000000000..de7fce8a08
--- /dev/null
+++ b/tests/functions/fixtures/validate_email.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dataset>
+	<table name="phpbb_users">
+		<column>user_id</column>
+		<column>username</column>
+		<column>username_clean</column>
+		<column>user_permissions</column>
+		<column>user_sig</column>
+		<column>user_occ</column>
+		<column>user_interests</column>
+		<column>user_email_hash</column>
+		<row>
+			<value>1</value>
+			<value>admin</value>
+			<value>admin</value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value>143317126117</value>
+		</row>
+	</table>
+</dataset>
diff --git a/tests/functions/fixtures/validate_username.xml b/tests/functions/fixtures/validate_username.xml
new file mode 100644
index 0000000000..fbe398469c
--- /dev/null
+++ b/tests/functions/fixtures/validate_username.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dataset>
+	<table name="phpbb_groups">
+		<column>group_name</column>
+		<column>group_desc</column>
+		<row>
+			<value>foobar_group</value>
+			<value>test123</value>
+		</row>
+	</table>
+	<table name="phpbb_users">
+		<column>user_id</column>
+		<column>username</column>
+		<column>username_clean</column>
+		<column>user_permissions</column>
+		<column>user_sig</column>
+		<column>user_occ</column>
+		<column>user_interests</column>
+		<row>
+			<value>1</value>
+			<value>admin</value>
+			<value>admin</value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value></value>
+		</row>
+		<row>
+			<value>2</value>
+			<value>moderator</value>
+			<value>moderator</value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value></value>
+		</row>
+	</table>
+</dataset>
diff --git a/tests/functions/validate_data_simple_test.php b/tests/functions/validate_data_simple_test.php
new file mode 100644
index 0000000000..002b1f2298
--- /dev/null
+++ b/tests/functions/validate_data_simple_test.php
@@ -0,0 +1,252 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
+require_once dirname(__FILE__) . '/common_validate_data.php';
+
+class phpbb_functions_validate_data_simple_test extends phpbb_test_case
+{
+	protected $common;
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->common = new phpbb_functions_common_validate_data;
+	}
+
+	public function test_validate_string()
+	{
+		$this->common->validate_data_check(array(
+			'empty_opt'		=> '',
+			'empty'			=> '',
+			'foo'			=> 'foobar',
+			'foo_minmax_correct'	=> 'foobar',
+			'foo_minmax_short'	=> 'foobar',
+			'foo_minmax_long'	=> 'foobar',
+			'empty_short'		=> '',
+			'empty_length_opt'	=> '',
+		),
+		array(
+			'empty_opt'		=> array('string', true),
+			'empty'			=> array('string'),
+			'foo'			=> array('string'),
+			'foo_minmax_correct'	=> array('string', false, 2, 6),
+			'foo_minmax_short'	=> array('string', false, 7, 9),
+			'foo_minmax_long'	=> array('string', false, 2, 5),
+			'empty_short'		=> array('string', false, 1, 6),
+			'empty_length_opt'	=> array('string', true, 1, 6),
+		),
+		array(
+			'empty_opt'		=> array(),
+			'empty'			=> array(),
+			'foo'			=> array(),
+			'foo_minmax_correct'	=> array(),
+			'foo_minmax_short'	=> array('TOO_SHORT'),
+			'foo_minmax_long'	=> array('TOO_LONG'),
+			'empty_short'		=> array('TOO_SHORT'),
+			'empty_length_opt'	=> array(),
+		));
+	}
+
+	public function test_validate_num()
+	{
+		$this->common->validate_data_check(array(
+			'empty'			=> '',
+			'zero'			=> 0,
+			'five_minmax_correct'	=> 5,
+			'five_minmax_short'	=> 5,
+			'five_minmax_long'	=> 5,
+			'string'		=> 'foobar',
+		),
+		array(
+			'empty'			=> array('num'),
+			'zero'			=> array('num'),
+			'five_minmax_correct'	=> array('num', false, 2, 6),
+			'five_minmax_short'	=> array('num', false, 7, 10),
+			'five_minmax_long'	=> array('num', false, 2, 3),
+			'string'		=> array('num'),
+		),
+		array(
+			'empty'			=> array(),
+			'zero'			=> array(),
+			'five_minmax_correct'	=> array(),
+			'five_minmax_short'	=> array('TOO_SMALL'),
+			'five_minmax_long'	=> array('TOO_LARGE'),
+			'string'	=> array(),
+		));
+	}
+
+	public function test_validate_date()
+	{
+		$this->common->validate_data_check(array(
+			'empty'			=> '',
+			'empty_opt'		=> '',
+			'double_single'		=> '17-06-1990',
+			'single_single'		=> '05-05-2009',
+			'double_double'		=> '17-12-1990',
+			// Currently fails
+			//'zero_year'		=> '01-01-0000',
+			'month_high'		=> '17-17-1990',
+			'month_low'		=> '01-00-1990',
+			'day_high'		=> '64-01-1990',
+			'day_low'		=> '00-12-1990',
+		),
+		array(
+			'empty'			=> array('date'),
+			'empty_opt'		=> array('date', true),
+			'double_single'		=> array('date'),
+			'single_single'		=> array('date'),
+			'double_double'		=> array('date'),
+			// Currently fails
+			//'zero_year'		=> array('date'),
+			'month_high'		=> array('date'),
+			'month_low'		=> array('date'),
+			'day_high'		=> array('date'),
+			'day_low'		=> array('date'),
+		),
+		array(
+			'empty'			=> array('INVALID'),
+			'empty_opt'		=> array(),
+			'double_single'		=> array(),
+			'single_single'		=> array(),
+			'double_double'		=> array(),
+			// Currently fails
+			//'zero_year'		=> array(),
+			'month_high'		=> array('INVALID'),
+			'month_low'		=> array('INVALID'),
+			'day_high'		=> array('INVALID'),
+			'day_low'		=> array('INVALID'),
+		));
+	}
+
+	public function test_validate_match()
+	{
+		$this->common->validate_data_check(array(
+			'empty_opt'		=> '',
+			'empty_empty_match'	=> '',
+			'foobar'		=> 'foobar',
+			'foobar_fail'		=> 'foobar123',
+		),
+		array(
+			'empty_opt'		=> array('match', true, '/[a-z]$/'),
+			'empty_empty_match'	=> array('match'),
+			'foobar'		=> array('match', false, '/[a-z]$/'),
+			'foobar_fail'		=> array('match', false, '/[a-z]$/'),
+		),
+		array(
+			'empty_opt'		=> array(),
+			'empty_empty_match'	=> array(),
+			'foobar'		=> array(),
+			'foobar_fail'		=> array('WRONG_DATA'),
+		));
+	}
+
+	public function validate_password_data()
+	{
+		return array(
+			array('PASS_TYPE_ANY', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array(),
+				'foobar_mixed'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_CASE', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_ALPHA', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_SYMBOL', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array('INVALID_CHARS'),
+				'foobar_symbol'		=> array(),
+			)),
+		);
+	}
+
+	/**
+	* @dataProvider validate_password_data
+	*/
+	public function test_validate_password($pass_complexity, $expected)
+	{
+		global $config;
+
+		// Set complexity to mixed case letters, numbers and symbols
+		$config['pass_complex'] = $pass_complexity;
+
+		$this->common->validate_data_check(array(
+			'empty'			=> '',
+			'foobar_any'		=> 'foobar',
+			'foobar_mixed'		=> 'FooBar',
+			'foobar_alpha'		=> 'F00bar',
+			'foobar_symbol'		=> 'fooBar123*',
+		),
+		array(
+			'empty'			=> array('password'),
+			'foobar_any'		=> array('password'),
+			'foobar_mixed'		=> array('password'),
+			'foobar_alpha'		=> array('password'),
+			'foobar_symbol'		=> array('password'),
+		),
+		$expected);
+	}
+
+	public function test_validate_jabber()
+	{
+		$this->common->validate_data_check(array(
+			'empty'			=> '',
+			'no_seperator'		=> 'testjabber.ccc',
+			'no_user'		=> '@jabber.ccc',
+			'no_realm'		=> 'user@',
+			'dot_realm'		=> 'user@.....',
+			'-realm'		=> 'user@-jabber.ccc',
+			'realm-'		=> 'user@jabber.ccc-',
+			'correct'		=> 'user@jabber.09A-z.org',
+			'prohibited'		=> 'u@ser@jabber.ccc.org',
+			'prohibited_char'	=> 'u<s>er@jabber.ccc.org',
+		),
+		array(
+			'empty'			=> array('jabber'),
+			'no_seperator'		=> array('jabber'),
+			'no_user'		=> array('jabber'),
+			'no_realm'		=> array('jabber'),
+			'dot_realm'		=> array('jabber'),
+			'-realm'		=> array('jabber'),
+			'realm-'		=> array('jabber'),
+			'correct'		=> array('jabber'),
+			'prohibited'		=> array('jabber'),
+			'prohibited_char'	=> array('jabber'),
+		),
+		array(
+			'empty'			=> array(),
+			'no_seperator'		=> array('WRONG_DATA'),
+			'no_user'		=> array('WRONG_DATA'),
+			'no_realm'		=> array('WRONG_DATA'),
+			'dot_realm'		=> array('WRONG_DATA'),
+			'-realm'		=> array('WRONG_DATA'),
+			'realm-'		=> array('WRONG_DATA'),
+			'correct'		=> array(),
+			'prohibited'		=> array('WRONG_DATA'),
+			'prohibited_char'	=> array('WRONG_DATA'),
+		));
+	}
+}
diff --git a/tests/functions/validate_data_test.php b/tests/functions/validate_data_test.php
deleted file mode 100644
index ed91f782ba..0000000000
--- a/tests/functions/validate_data_test.php
+++ /dev/null
@@ -1,478 +0,0 @@
-<?php
-/**
-*
-* @package testing
-* @copyright (c) 2013 phpBB Group
-* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
-*
-*/
-
-require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
-require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
-require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
-require_once dirname(__FILE__) . '/../mock/cache.php';
-require_once dirname(__FILE__) . '/../mock/user.php';
-
-class phpbb_functions_validate_data_test extends phpbb_database_test_case
-{
-	protected $db;
-	protected $cache;
-	protected $user;
-
-	public function getDataSet()
-	{
-		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/validate_data.xml');
-	}
-
-	protected function setUp()
-	{
-		parent::setUp();
-
-		$this->db = $this->new_dbal();
-		$this->cache = new phpbb_mock_cache;
-		$this->user = new phpbb_mock_user;
-	}
-
-	/**
-	* Test provided input data with supplied checks and compare to expected
-	* results
-	*
-	* @param array $input Input data with specific array keys that need to
-	*		be matched by the ones in the other 2 params
-	* @param array $validate_check Array containing validate_data check
-	*		settings, i.e. array('foobar' => array('string'))
-	* @param array $expected Array containing the expected results. Either
-	*		an array containing the error message or the an empty
-	*		array if input is correct
-	*/
-	public function validate_data_check($input, $validate_check, $expected)
-	{
-		foreach ($input as $key => $data)
-		{
-			$test = validate_data(array($data), array($validate_check[$key]));
-			if ($test != $expected[$key])
-			{
-				var_dump($key, $data, $test, $expected[$key]);
-			}
-			$this->assertEquals($expected[$key], $test);
-		}
-	}
-
-	public function test_validate_string()
-	{
-		$this->validate_data_check(array(
-			'empty_opt'		=> '',
-			'empty'			=> '',
-			'foo'			=> 'foobar',
-			'foo_minmax_correct'	=> 'foobar',
-			'foo_minmax_short'	=> 'foobar',
-			'foo_minmax_long'	=> 'foobar',
-			'empty_short'		=> '',
-			'empty_length_opt'	=> '',
-		),
-		array(
-			'empty_opt'		=> array('string', true),
-			'empty'			=> array('string'),
-			'foo'			=> array('string'),
-			'foo_minmax_correct'	=> array('string', false, 2, 6),
-			'foo_minmax_short'	=> array('string', false, 7, 9),
-			'foo_minmax_long'	=> array('string', false, 2, 5),
-			'empty_short'		=> array('string', false, 1, 6),
-			'empty_length_opt'	=> array('string', true, 1, 6),
-		),
-		array(
-			'empty_opt'		=> array(),
-			'empty'			=> array(),
-			'foo'			=> array(),
-			'foo_minmax_correct'	=> array(),
-			'foo_minmax_short'	=> array('TOO_SHORT'),
-			'foo_minmax_long'	=> array('TOO_LONG'),
-			'empty_short'		=> array('TOO_SHORT'),
-			'empty_length_opt'	=> array(),
-		));
-	}
-
-	public function test_validate_num()
-	{
-		$this->validate_data_check(array(
-			'empty'			=> '',
-			'zero'			=> 0,
-			'five_minmax_correct'	=> 5,
-			'five_minmax_short'	=> 5,
-			'five_minmax_long'	=> 5,
-			'string'		=> 'foobar',
-		),
-		array(
-			'empty'			=> array('num'),
-			'zero'			=> array('num'),
-			'five_minmax_correct'	=> array('num', false, 2, 6),
-			'five_minmax_short'	=> array('num', false, 7, 10),
-			'five_minmax_long'	=> array('num', false, 2, 3),
-			'string'		=> array('num'),
-		),
-		array(
-			'empty'			=> array(),
-			'zero'			=> array(),
-			'five_minmax_correct'	=> array(),
-			'five_minmax_short'	=> array('TOO_SMALL'),
-			'five_minmax_long'	=> array('TOO_LARGE'),
-			'string'	=> array(),
-		));
-	}
-
-	public function test_validate_date()
-	{
-		$this->validate_data_check(array(
-			'empty'			=> '',
-			'empty_opt'		=> '',
-			'double_single'		=> '17-06-1990',
-			'single_single'		=> '05-05-2009',
-			'double_double'		=> '17-12-1990',
-			// Currently fails
-			//'zero_year'		=> '01-01-0000',
-			'month_high'		=> '17-17-1990',
-			'month_low'		=> '01-00-1990',
-			'day_high'		=> '64-01-1990',
-			'day_low'		=> '00-12-1990',
-		),
-		array(
-			'empty'			=> array('date'),
-			'empty_opt'		=> array('date', true),
-			'double_single'		=> array('date'),
-			'single_single'		=> array('date'),
-			'double_double'		=> array('date'),
-			// Currently fails
-			//'zero_year'		=> array('date'),
-			'month_high'		=> array('date'),
-			'month_low'		=> array('date'),
-			'day_high'		=> array('date'),
-			'day_low'		=> array('date'),
-		),
-		array(
-			'empty'			=> array('INVALID'),
-			'empty_opt'		=> array(),
-			'double_single'		=> array(),
-			'single_single'		=> array(),
-			'double_double'		=> array(),
-			// Currently fails
-			//'zero_year'		=> array(),
-			'month_high'		=> array('INVALID'),
-			'month_low'		=> array('INVALID'),
-			'day_high'		=> array('INVALID'),
-			'day_low'		=> array('INVALID'),
-		));
-	}
-
-	public function test_validate_match()
-	{
-		$this->validate_data_check(array(
-			'empty_opt'		=> '',
-			'empty_empty_match'	=> '',
-			'foobar'		=> 'foobar',
-			'foobar_fail'		=> 'foobar123',
-		),
-		array(
-			'empty_opt'		=> array('match', true, '/[a-z]$/'),
-			'empty_empty_match'	=> array('match'),
-			'foobar'		=> array('match', false, '/[a-z]$/'),
-			'foobar_fail'		=> array('match', false, '/[a-z]$/'),
-		),
-		array(
-			'empty_opt'		=> array(),
-			'empty_empty_match'	=> array(),
-			'foobar'		=> array(),
-			'foobar_fail'		=> array('WRONG_DATA'),
-		));
-	}
-
-	public function test_validate_lang_iso()
-	{
-		global $db;
-
-		$db = $this->db;
-
-		$this->validate_data_check(array(
-			'empty'		=> '',
-			'en'		=> 'en',
-			'cs'		=> 'cs',
-			'de'		=> 'de',
-		),
-		array(
-			'empty'		=> array('language_iso_name'),
-			'en'		=> array('language_iso_name'),
-			'cs'		=> array('language_iso_name'),
-			'de'		=> array('language_iso_name'),
-		),
-		array(
-			'empty'		=> array('WRONG_DATA'),
-			'en'		=> array(),
-			'cs'		=> array(),
-			'de'		=> array('WRONG_DATA'),
-		));
-	}
-
-	public function validate_username_data()
-	{
-		return array(
-			array('USERNAME_CHARS_ANY', array(
-				'foobar_allow'		=> array(),
-				'foobar_ascii'		=> array(),
-				'foobar_any'		=> array(),
-				'foobar_alpha'		=> array(),
-				'foobar_alpha_spacers'	=> array(),
-				'foobar_letter_num'	=> array(),
-				'foobar_letter_num_sp'	=> array(),
-				'foobar_quot'		=> array('INVALID_CHARS'),
-				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
-				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('USERNAME_TAKEN')
-			)),
-			array('USERNAME_ALPHA_ONLY', array(
-				'foobar_allow'		=> array(),
-				'foobar_ascii'		=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_alpha'		=> array(),
-				'foobar_alpha_spacers'	=> array('INVALID_CHARS'),
-				'foobar_letter_num'	=> array(),
-				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
-				'foobar_quot'		=> array('INVALID_CHARS'),
-				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
-				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('INVALID_CHARS')
-			)),
-			array('USERNAME_ALPHA_SPACERS', array(
-				'foobar_allow'		=> array(),
-				'foobar_ascii'		=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_alpha'		=> array(),
-				'foobar_alpha_spacers'	=> array(),
-				'foobar_letter_num'	=> array(),
-				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
-				'foobar_quot'		=> array('INVALID_CHARS'),
-				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
-				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('USERNAME_TAKEN')
-			)),
-			array('USERNAME_LETTER_NUM', array(
-				'foobar_allow'		=> array(),
-				'foobar_ascii'		=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_alpha'		=> array(),
-				'foobar_alpha_spacers'	=> array('INVALID_CHARS'),
-				'foobar_letter_num'	=> array(),
-				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
-				'foobar_quot'		=> array('INVALID_CHARS'),
-				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
-				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('INVALID_CHARS')
-			)),
-			array('USERNAME_LETTER_NUM_SPACERS', array(
-				'foobar_allow'		=> array(),
-				'foobar_ascii'		=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_alpha'		=> array(),
-				'foobar_alpha_spacers'	=> array(),
-				'foobar_letter_num'	=> array(),
-				'foobar_letter_num_sp'	=> array(),
-				'foobar_quot'		=> array('INVALID_CHARS'),
-				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
-				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('USERNAME_TAKEN')
-			)),
-			array('USERNAME_ASCII', array(
-				'foobar_allow'		=> array(),
-				'foobar_ascii'		=> array(),
-				'foobar_any'		=> array(),
-				'foobar_alpha'		=> array(),
-				'foobar_alpha_spacers'	=> array(),
-				'foobar_letter_num'	=> array(),
-				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
-				'foobar_quot'		=> array('INVALID_CHARS'),
-				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
-				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('USERNAME_TAKEN')
-			)),
-		);
-	}
-
-	/**
-	* @dataProvider validate_username_data
-	*/
-	public function test_validate_username($allow_name_chars, $expected)
-	{
-		global $cache, $config, $db;
-
-		$db = $this->db;
-		$cache = $this->cache;
-		$cache->put('_disallowed_usernames', array('barfoo'));
-
-		$config['allow_name_chars'] = $allow_name_chars;
-
-		$this->validate_data_check(array(
-			'foobar_allow'		=> 'foobar',
-			'foobar_ascii'		=> 'foobar',
-			'foobar_any'		=> 'f*~*^=oo_bar1',
-			'foobar_alpha'		=> 'fo0Bar',
-			'foobar_alpha_spacers'	=> 'Fo0-[B]_a+ R',
-			'foobar_letter_num'	=> 'fo0Bar0',
-			'foobar_letter_num_sp'	=> 'Fö0-[B]_a+ R',
-			'foobar_quot'		=> '"foobar"',
-			'barfoo_disallow'	=> 'barfoo',
-			'admin_taken'		=> 'admin',
-			'group_taken'		=> 'foobar_group',
-		),
-		array(
-			'foobar_allow'		=> array('username', 'foobar'),
-			'foobar_ascii'		=> array('username'),
-			'foobar_any'		=> array('username'),
-			'foobar_alpha'		=> array('username'),
-			'foobar_alpha_spacers'	=> array('username'),
-			'foobar_letter_num'	=> array('username'),
-			'foobar_letter_num_sp'	=> array('username'),
-			'foobar_quot'		=> array('username'),
-			'barfoo_disallow'	=> array('username'),
-			'admin_taken'		=> array('username'),
-			'group_taken'		=> array('username'),
-		),
-		$expected);
-	}
-
-	public function validate_password_data()
-	{
-		return array(
-			array('PASS_TYPE_ANY', array(
-				'empty'			=> array(),
-				'foobar_any'		=> array(),
-				'foobar_mixed'		=> array(),
-				'foobar_alpha'		=> array(),
-				'foobar_symbol'		=> array(),
-			)),
-			array('PASS_TYPE_CASE', array(
-				'empty'			=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_mixed'		=> array(),
-				'foobar_alpha'		=> array(),
-				'foobar_symbol'		=> array(),
-			)),
-			array('PASS_TYPE_ALPHA', array(
-				'empty'			=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_mixed'		=> array('INVALID_CHARS'),
-				'foobar_alpha'		=> array(),
-				'foobar_symbol'		=> array(),
-			)),
-			array('PASS_TYPE_SYMBOL', array(
-				'empty'			=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_mixed'		=> array('INVALID_CHARS'),
-				'foobar_alpha'		=> array('INVALID_CHARS'),
-				'foobar_symbol'		=> array(),
-			)),
-		);
-	}
-
-	/**
-	* @dataProvider validate_password_data
-	*/
-	public function test_validate_password($pass_complexity, $expected)
-	{
-		global $config;
-
-		// Set complexity to mixed case letters, numbers and symbols
-		$config['pass_complex'] = $pass_complexity;
-
-		$this->validate_data_check(array(
-			'empty'			=> '',
-			'foobar_any'		=> 'foobar',
-			'foobar_mixed'		=> 'FooBar',
-			'foobar_alpha'		=> 'F00bar',
-			'foobar_symbol'		=> 'fooBar123*',
-		),
-		array(
-			'empty'			=> array('password'),
-			'foobar_any'		=> array('password'),
-			'foobar_mixed'		=> array('password'),
-			'foobar_alpha'		=> array('password'),
-			'foobar_symbol'		=> array('password'),
-		),
-		$expected);
-	}
-
-	public function test_validate_email()
-	{
-		global $config, $db, $user;
-
-		$config['email_check_mx'] = true;
-		$db = $this->db;
-		$user = $this->user;
-		$user->optionset('banned_users', array('banned@example.com'));
-
-		$this->validate_data_check(array(
-			'empty'			=> '',
-			'allowed'		=> 'foobar@example.com',
-			'invalid'		=> 'fööbar@example.com',
-			'valid_complex'		=> "'%$~test@example.com",
-			'taken'			=> 'admin@example.com',
-			'banned'		=> 'banned@example.com',
-			'no_mx'			=> 'test@wwrrrhhghgghgh.ttv',
-		),
-		array(
-			'empty'			=> array('email'),
-			'allowed'		=> array('email', 'foobar@example.com'),
-			'invalid'		=> array('email'),
-			'valid_complex'		=> array('email'),
-			'taken'			=> array('email'),
-			'banned'		=> array('email'),
-			'no_mx'			=> array('email'),
-		),
-		array(
-			'empty'			=> array(),
-			'allowed'		=> array(),
-			'invalid'		=> array('EMAIL_INVALID'),
-			'valid_complex'		=> array(),
-			'taken'			=> array('EMAIL_TAKEN'),
-			'banned'		=> array('EMAIL_BANNED'),
-			'no_mx'			=> array('DOMAIN_NO_MX_RECORD'),
-		));
-	}
-
-	public function test_validate_jabber()
-	{
-		$this->validate_data_check(array(
-			'empty'			=> '',
-			'no_seperator'		=> 'testjabber.ccc',
-			'no_user'		=> '@jabber.ccc',
-			'no_realm'		=> 'user@',
-			'dot_realm'		=> 'user@.....',
-			'-realm'		=> 'user@-jabber.ccc',
-			'realm-'		=> 'user@jabber.ccc-',
-			'correct'		=> 'user@jabber.09A-z.org',
-			'prohibited'		=> 'u@ser@jabber.ccc.org',
-			'prohibited_char'	=> 'u<s>er@jabber.ccc.org',
-		),
-		array(
-			'empty'			=> array('jabber'),
-			'no_seperator'		=> array('jabber'),
-			'no_user'		=> array('jabber'),
-			'no_realm'		=> array('jabber'),
-			'dot_realm'		=> array('jabber'),
-			'-realm'		=> array('jabber'),
-			'realm-'		=> array('jabber'),
-			'correct'		=> array('jabber'),
-			'prohibited'		=> array('jabber'),
-			'prohibited_char'	=> array('jabber'),
-		),
-		array(
-			'empty'			=> array(),
-			'no_seperator'		=> array('WRONG_DATA'),
-			'no_user'		=> array('WRONG_DATA'),
-			'no_realm'		=> array('WRONG_DATA'),
-			'dot_realm'		=> array('WRONG_DATA'),
-			'-realm'		=> array('WRONG_DATA'),
-			'realm-'		=> array('WRONG_DATA'),
-			'correct'		=> array(),
-			'prohibited'		=> array('WRONG_DATA'),
-			'prohibited_char'	=> array('WRONG_DATA'),
-		));
-	}
-}
diff --git a/tests/functions/validate_email_test.php b/tests/functions/validate_email_test.php
new file mode 100644
index 0000000000..47aa37e11f
--- /dev/null
+++ b/tests/functions/validate_email_test.php
@@ -0,0 +1,72 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/../mock/user.php';
+require_once dirname(__FILE__) . '/common_validate_data.php';
+
+class phpbb_functions_validate_email_test extends phpbb_database_test_case
+{
+	protected $db;
+	protected $user;
+	protected $common;
+
+	public function getDataSet()
+	{
+		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/validate_email.xml');
+	}
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->db = $this->new_dbal();
+		$this->user = new phpbb_mock_user;
+		$this->common = new phpbb_functions_common_validate_data;
+	}
+
+	public function test_validate_email()
+	{
+		global $config, $db, $user;
+
+		$config['email_check_mx'] = true;
+		$db = $this->db;
+		$user = $this->user;
+		$user->optionset('banned_users', array('banned@example.com'));
+
+		$this->common->validate_data_check(array(
+			'empty'			=> '',
+			'allowed'		=> 'foobar@example.com',
+			'invalid'		=> 'fööbar@example.com',
+			'valid_complex'		=> "'%$~test@example.com",
+			'taken'			=> 'admin@example.com',
+			'banned'		=> 'banned@example.com',
+			'no_mx'			=> 'test@wwrrrhhghgghgh.ttv',
+		),
+		array(
+			'empty'			=> array('email'),
+			'allowed'		=> array('email', 'foobar@example.com'),
+			'invalid'		=> array('email'),
+			'valid_complex'		=> array('email'),
+			'taken'			=> array('email'),
+			'banned'		=> array('email'),
+			'no_mx'			=> array('email'),
+		),
+		array(
+			'empty'			=> array(),
+			'allowed'		=> array(),
+			'invalid'		=> array('EMAIL_INVALID'),
+			'valid_complex'		=> array(),
+			'taken'			=> array('EMAIL_TAKEN'),
+			'banned'		=> array('EMAIL_BANNED'),
+			'no_mx'			=> array('DOMAIN_NO_MX_RECORD'),
+		));
+	}
+}
diff --git a/tests/functions/validate_lang_iso_test.php b/tests/functions/validate_lang_iso_test.php
new file mode 100644
index 0000000000..b8a1827432
--- /dev/null
+++ b/tests/functions/validate_lang_iso_test.php
@@ -0,0 +1,56 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/common_validate_data.php';
+
+class phpbb_functions_validate_lang_iso_test extends phpbb_database_test_case
+{
+	protected $db;
+	protected $common;
+
+	public function getDataSet()
+	{
+		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/language_select.xml');
+	}
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->db = $this->new_dbal();
+		$this->common = new phpbb_functions_common_validate_data;
+	}
+
+	public function test_validate_lang_iso()
+	{
+		global $db;
+
+		$db = $this->db;
+
+		$this->common->validate_data_check(array(
+			'empty'		=> '',
+			'en'		=> 'en',
+			'cs'		=> 'cs',
+			'de'		=> 'de',
+		),
+		array(
+			'empty'		=> array('language_iso_name'),
+			'en'		=> array('language_iso_name'),
+			'cs'		=> array('language_iso_name'),
+			'de'		=> array('language_iso_name'),
+		),
+		array(
+			'empty'		=> array('WRONG_DATA'),
+			'en'		=> array(),
+			'cs'		=> array(),
+			'de'		=> array('WRONG_DATA'),
+		));
+	}
+}
diff --git a/tests/functions/validate_username_test.php b/tests/functions/validate_username_test.php
new file mode 100644
index 0000000000..656248cec3
--- /dev/null
+++ b/tests/functions/validate_username_test.php
@@ -0,0 +1,160 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
+require_once dirname(__FILE__) . '/../mock/cache.php';
+require_once dirname(__FILE__) . '/common_validate_data.php';
+
+class phpbb_functions_validate_data_test extends phpbb_database_test_case
+{
+	protected $db;
+	protected $cache;
+	protected $common;
+
+	public function getDataSet()
+	{
+		return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/validate_username.xml');
+	}
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->db = $this->new_dbal();
+		$this->cache = new phpbb_mock_cache;
+		$this->common = new phpbb_functions_common_validate_data;
+	}
+
+	public function validate_username_data()
+	{
+		return array(
+			array('USERNAME_CHARS_ANY', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array(),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array(),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('USERNAME_TAKEN')
+			)),
+			array('USERNAME_ALPHA_ONLY', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array('INVALID_CHARS'),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('INVALID_CHARS')
+			)),
+			array('USERNAME_ALPHA_SPACERS', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array(),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('USERNAME_TAKEN')
+			)),
+			array('USERNAME_LETTER_NUM', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array('INVALID_CHARS'),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('INVALID_CHARS')
+			)),
+			array('USERNAME_LETTER_NUM_SPACERS', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array(),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array(),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('USERNAME_TAKEN')
+			)),
+			array('USERNAME_ASCII', array(
+				'foobar_allow'		=> array(),
+				'foobar_ascii'		=> array(),
+				'foobar_any'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_alpha_spacers'	=> array(),
+				'foobar_letter_num'	=> array(),
+				'foobar_letter_num_sp'	=> array('INVALID_CHARS'),
+				'foobar_quot'		=> array('INVALID_CHARS'),
+				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
+				'admin_taken'		=> array('USERNAME_TAKEN'),
+				'group_taken'		=> array('USERNAME_TAKEN')
+			)),
+		);
+	}
+
+	/**
+	* @dataProvider validate_username_data
+	*/
+	public function test_validate_username($allow_name_chars, $expected)
+	{
+		global $cache, $config, $db;
+
+		$db = $this->db;
+		$cache = $this->cache;
+		$cache->put('_disallowed_usernames', array('barfoo'));
+
+		$config['allow_name_chars'] = $allow_name_chars;
+
+		$this->common->validate_data_check(array(
+			'foobar_allow'		=> 'foobar',
+			'foobar_ascii'		=> 'foobar',
+			'foobar_any'		=> 'f*~*^=oo_bar1',
+			'foobar_alpha'		=> 'fo0Bar',
+			'foobar_alpha_spacers'	=> 'Fo0-[B]_a+ R',
+			'foobar_letter_num'	=> 'fo0Bar0',
+			'foobar_letter_num_sp'	=> 'Fö0-[B]_a+ R',
+			'foobar_quot'		=> '"foobar"',
+			'barfoo_disallow'	=> 'barfoo',
+			'admin_taken'		=> 'admin',
+			'group_taken'		=> 'foobar_group',
+		),
+		array(
+			'foobar_allow'		=> array('username', 'foobar'),
+			'foobar_ascii'		=> array('username'),
+			'foobar_any'		=> array('username'),
+			'foobar_alpha'		=> array('username'),
+			'foobar_alpha_spacers'	=> array('username'),
+			'foobar_letter_num'	=> array('username'),
+			'foobar_letter_num_sp'	=> array('username'),
+			'foobar_quot'		=> array('username'),
+			'barfoo_disallow'	=> array('username'),
+			'admin_taken'		=> array('username'),
+			'group_taken'		=> array('username'),
+		),
+		$expected);
+	}
+}
-- 
cgit v1.2.1


From 3487b70cc066f090c55990a9082ed9684d438147 Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Mon, 3 Jun 2013 16:06:11 +0200
Subject: [ticket/11579] Use test case helper class and use assert prefix for
 method

PHPBB3-11579
---
 tests/functions/common_validate_data.php      |  31 -------
 tests/functions/validate_data_helper.php      |  38 ++++++++
 tests/functions/validate_data_simple_test.php | 119 +++++++++++++-------------
 tests/functions/validate_email_test.php       |  26 +++---
 tests/functions/validate_lang_iso_test.php    |  20 ++---
 tests/functions/validate_username_test.php    |  11 ++-
 6 files changed, 125 insertions(+), 120 deletions(-)
 delete mode 100644 tests/functions/common_validate_data.php
 create mode 100644 tests/functions/validate_data_helper.php

(limited to 'tests')

diff --git a/tests/functions/common_validate_data.php b/tests/functions/common_validate_data.php
deleted file mode 100644
index 64c9499ac3..0000000000
--- a/tests/functions/common_validate_data.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
-*
-* @package testing
-* @copyright (c) 2013 phpBB Group
-* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
-*
-*/
-
-class phpbb_functions_common_validate_data extends phpbb_test_case
-{
-	/**
-	* Test provided input data with supplied checks and compare to expected
-	* results
-	*
-	* @param array $input Input data with specific array keys that need to
-	*		be matched by the ones in the other 2 params
-	* @param array $validate_check Array containing validate_data check
-	*		settings, i.e. array('foobar' => array('string'))
-	* @param array $expected Array containing the expected results. Either
-	*		an array containing the error message or the an empty
-	*		array if input is correct
-	*/
-	public function validate_data_check($input, $validate_check, $expected)
-	{
-		foreach ($input as $key => $data)
-		{
-			$this->assertEquals($expected[$key], validate_data(array($data), array($validate_check[$key])));
-		}
-	}
-}
diff --git a/tests/functions/validate_data_helper.php b/tests/functions/validate_data_helper.php
new file mode 100644
index 0000000000..b8e8bfded3
--- /dev/null
+++ b/tests/functions/validate_data_helper.php
@@ -0,0 +1,38 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+class phpbb_functions_validate_data_helper extends PHPUnit_Framework_TestCase
+{
+	protected $test_case;
+
+	public function __construct($test_case)
+	{
+		$this->test_case = $test_case;
+	}
+
+	/**
+	* Test provided input data with supplied checks and compare to expected
+	* results
+	*
+	* @param array $expected Array containing the expected results. Either
+	*		an array containing the error message or the an empty
+	*		array if input is correct
+	* @param array $input Input data with specific array keys that need to
+	*		be matched by the ones in the other 2 params
+	* @param array $validate_check Array containing validate_data check
+	*		settings, i.e. array('foobar' => array('string'))
+	*/
+	public function assert_validate_data($expected, $input, $validate_check)
+	{
+		foreach ($input as $key => $data)
+		{
+			$this->test_case->assertEquals($expected[$key], validate_data(array($data), array($validate_check[$key])));
+		}
+	}
+}
diff --git a/tests/functions/validate_data_simple_test.php b/tests/functions/validate_data_simple_test.php
index 002b1f2298..db4f218eed 100644
--- a/tests/functions/validate_data_simple_test.php
+++ b/tests/functions/validate_data_simple_test.php
@@ -9,22 +9,32 @@
 
 require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
 require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
-require_once dirname(__FILE__) . '/common_validate_data.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
 
 class phpbb_functions_validate_data_simple_test extends phpbb_test_case
 {
-	protected $common;
+	protected $helper;
 
 	protected function setUp()
 	{
 		parent::setUp();
 
-		$this->common = new phpbb_functions_common_validate_data;
+		$this->helper = new phpbb_functions_validate_data_helper($this);
 	}
 
 	public function test_validate_string()
 	{
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data(array(
+			'empty_opt'		=> array(),
+			'empty'			=> array(),
+			'foo'			=> array(),
+			'foo_minmax_correct'	=> array(),
+			'foo_minmax_short'	=> array('TOO_SHORT'),
+			'foo_minmax_long'	=> array('TOO_LONG'),
+			'empty_short'		=> array('TOO_SHORT'),
+			'empty_length_opt'	=> array(),
+		),
+		array(
 			'empty_opt'		=> '',
 			'empty'			=> '',
 			'foo'			=> 'foobar',
@@ -43,22 +53,20 @@ class phpbb_functions_validate_data_simple_test extends phpbb_test_case
 			'foo_minmax_long'	=> array('string', false, 2, 5),
 			'empty_short'		=> array('string', false, 1, 6),
 			'empty_length_opt'	=> array('string', true, 1, 6),
-		),
-		array(
-			'empty_opt'		=> array(),
-			'empty'			=> array(),
-			'foo'			=> array(),
-			'foo_minmax_correct'	=> array(),
-			'foo_minmax_short'	=> array('TOO_SHORT'),
-			'foo_minmax_long'	=> array('TOO_LONG'),
-			'empty_short'		=> array('TOO_SHORT'),
-			'empty_length_opt'	=> array(),
 		));
 	}
 
 	public function test_validate_num()
 	{
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data(array(
+			'empty'			=> array(),
+			'zero'			=> array(),
+			'five_minmax_correct'	=> array(),
+			'five_minmax_short'	=> array('TOO_SMALL'),
+			'five_minmax_long'	=> array('TOO_LARGE'),
+			'string'		=> array(),
+		),
+		array(
 			'empty'			=> '',
 			'zero'			=> 0,
 			'five_minmax_correct'	=> 5,
@@ -73,20 +81,25 @@ class phpbb_functions_validate_data_simple_test extends phpbb_test_case
 			'five_minmax_short'	=> array('num', false, 7, 10),
 			'five_minmax_long'	=> array('num', false, 2, 3),
 			'string'		=> array('num'),
-		),
-		array(
-			'empty'			=> array(),
-			'zero'			=> array(),
-			'five_minmax_correct'	=> array(),
-			'five_minmax_short'	=> array('TOO_SMALL'),
-			'five_minmax_long'	=> array('TOO_LARGE'),
-			'string'	=> array(),
 		));
 	}
 
 	public function test_validate_date()
 	{
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data(array(
+			'empty'			=> array('INVALID'),
+			'empty_opt'		=> array(),
+			'double_single'		=> array(),
+			'single_single'		=> array(),
+			'double_double'		=> array(),
+			// Currently fails
+			//'zero_year'		=> array(),
+			'month_high'		=> array('INVALID'),
+			'month_low'		=> array('INVALID'),
+			'day_high'		=> array('INVALID'),
+			'day_low'		=> array('INVALID'),
+		),
+		array(
 			'empty'			=> '',
 			'empty_opt'		=> '',
 			'double_single'		=> '17-06-1990',
@@ -111,25 +124,18 @@ class phpbb_functions_validate_data_simple_test extends phpbb_test_case
 			'month_low'		=> array('date'),
 			'day_high'		=> array('date'),
 			'day_low'		=> array('date'),
-		),
-		array(
-			'empty'			=> array('INVALID'),
-			'empty_opt'		=> array(),
-			'double_single'		=> array(),
-			'single_single'		=> array(),
-			'double_double'		=> array(),
-			// Currently fails
-			//'zero_year'		=> array(),
-			'month_high'		=> array('INVALID'),
-			'month_low'		=> array('INVALID'),
-			'day_high'		=> array('INVALID'),
-			'day_low'		=> array('INVALID'),
 		));
 	}
 
 	public function test_validate_match()
 	{
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data(array(
+			'empty_opt'		=> array(),
+			'empty_empty_match'	=> array(),
+			'foobar'		=> array(),
+			'foobar_fail'		=> array('WRONG_DATA'),
+		),
+		array(
 			'empty_opt'		=> '',
 			'empty_empty_match'	=> '',
 			'foobar'		=> 'foobar',
@@ -140,12 +146,6 @@ class phpbb_functions_validate_data_simple_test extends phpbb_test_case
 			'empty_empty_match'	=> array('match'),
 			'foobar'		=> array('match', false, '/[a-z]$/'),
 			'foobar_fail'		=> array('match', false, '/[a-z]$/'),
-		),
-		array(
-			'empty_opt'		=> array(),
-			'empty_empty_match'	=> array(),
-			'foobar'		=> array(),
-			'foobar_fail'		=> array('WRONG_DATA'),
 		));
 	}
 
@@ -193,7 +193,7 @@ class phpbb_functions_validate_data_simple_test extends phpbb_test_case
 		// Set complexity to mixed case letters, numbers and symbols
 		$config['pass_complex'] = $pass_complexity;
 
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data($expected, array(
 			'empty'			=> '',
 			'foobar_any'		=> 'foobar',
 			'foobar_mixed'		=> 'FooBar',
@@ -206,13 +206,24 @@ class phpbb_functions_validate_data_simple_test extends phpbb_test_case
 			'foobar_mixed'		=> array('password'),
 			'foobar_alpha'		=> array('password'),
 			'foobar_symbol'		=> array('password'),
-		),
-		$expected);
+		));
 	}
 
 	public function test_validate_jabber()
 	{
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data(array(
+			'empty'			=> array(),
+			'no_seperator'		=> array('WRONG_DATA'),
+			'no_user'		=> array('WRONG_DATA'),
+			'no_realm'		=> array('WRONG_DATA'),
+			'dot_realm'		=> array('WRONG_DATA'),
+			'-realm'		=> array('WRONG_DATA'),
+			'realm-'		=> array('WRONG_DATA'),
+			'correct'		=> array(),
+			'prohibited'		=> array('WRONG_DATA'),
+			'prohibited_char'	=> array('WRONG_DATA'),
+		),
+		array(
 			'empty'			=> '',
 			'no_seperator'		=> 'testjabber.ccc',
 			'no_user'		=> '@jabber.ccc',
@@ -235,18 +246,6 @@ class phpbb_functions_validate_data_simple_test extends phpbb_test_case
 			'correct'		=> array('jabber'),
 			'prohibited'		=> array('jabber'),
 			'prohibited_char'	=> array('jabber'),
-		),
-		array(
-			'empty'			=> array(),
-			'no_seperator'		=> array('WRONG_DATA'),
-			'no_user'		=> array('WRONG_DATA'),
-			'no_realm'		=> array('WRONG_DATA'),
-			'dot_realm'		=> array('WRONG_DATA'),
-			'-realm'		=> array('WRONG_DATA'),
-			'realm-'		=> array('WRONG_DATA'),
-			'correct'		=> array(),
-			'prohibited'		=> array('WRONG_DATA'),
-			'prohibited_char'	=> array('WRONG_DATA'),
 		));
 	}
 }
diff --git a/tests/functions/validate_email_test.php b/tests/functions/validate_email_test.php
index 47aa37e11f..2e81d3277e 100644
--- a/tests/functions/validate_email_test.php
+++ b/tests/functions/validate_email_test.php
@@ -10,13 +10,13 @@
 require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
 require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
 require_once dirname(__FILE__) . '/../mock/user.php';
-require_once dirname(__FILE__) . '/common_validate_data.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
 
 class phpbb_functions_validate_email_test extends phpbb_database_test_case
 {
 	protected $db;
 	protected $user;
-	protected $common;
+	protected $helper;
 
 	public function getDataSet()
 	{
@@ -29,7 +29,7 @@ class phpbb_functions_validate_email_test extends phpbb_database_test_case
 
 		$this->db = $this->new_dbal();
 		$this->user = new phpbb_mock_user;
-		$this->common = new phpbb_functions_common_validate_data;
+		$this->helper = new phpbb_functions_validate_data_helper($this);
 	}
 
 	public function test_validate_email()
@@ -41,7 +41,16 @@ class phpbb_functions_validate_email_test extends phpbb_database_test_case
 		$user = $this->user;
 		$user->optionset('banned_users', array('banned@example.com'));
 
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data(array(
+			'empty'			=> array(),
+			'allowed'		=> array(),
+			'invalid'		=> array('EMAIL_INVALID'),
+			'valid_complex'		=> array(),
+			'taken'			=> array('EMAIL_TAKEN'),
+			'banned'		=> array('EMAIL_BANNED'),
+			'no_mx'			=> array('DOMAIN_NO_MX_RECORD'),
+		),
+		array(
 			'empty'			=> '',
 			'allowed'		=> 'foobar@example.com',
 			'invalid'		=> 'fööbar@example.com',
@@ -58,15 +67,6 @@ class phpbb_functions_validate_email_test extends phpbb_database_test_case
 			'taken'			=> array('email'),
 			'banned'		=> array('email'),
 			'no_mx'			=> array('email'),
-		),
-		array(
-			'empty'			=> array(),
-			'allowed'		=> array(),
-			'invalid'		=> array('EMAIL_INVALID'),
-			'valid_complex'		=> array(),
-			'taken'			=> array('EMAIL_TAKEN'),
-			'banned'		=> array('EMAIL_BANNED'),
-			'no_mx'			=> array('DOMAIN_NO_MX_RECORD'),
 		));
 	}
 }
diff --git a/tests/functions/validate_lang_iso_test.php b/tests/functions/validate_lang_iso_test.php
index b8a1827432..baf75108b7 100644
--- a/tests/functions/validate_lang_iso_test.php
+++ b/tests/functions/validate_lang_iso_test.php
@@ -8,12 +8,12 @@
 */
 
 require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
-require_once dirname(__FILE__) . '/common_validate_data.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
 
 class phpbb_functions_validate_lang_iso_test extends phpbb_database_test_case
 {
 	protected $db;
-	protected $common;
+	protected $helper;
 
 	public function getDataSet()
 	{
@@ -25,7 +25,7 @@ class phpbb_functions_validate_lang_iso_test extends phpbb_database_test_case
 		parent::setUp();
 
 		$this->db = $this->new_dbal();
-		$this->common = new phpbb_functions_common_validate_data;
+		$this->helper = new phpbb_functions_validate_data_helper($this);
 	}
 
 	public function test_validate_lang_iso()
@@ -34,7 +34,13 @@ class phpbb_functions_validate_lang_iso_test extends phpbb_database_test_case
 
 		$db = $this->db;
 
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data(array(
+			'empty'		=> array('WRONG_DATA'),
+			'en'		=> array(),
+			'cs'		=> array(),
+			'de'		=> array('WRONG_DATA'),
+		),
+		array(
 			'empty'		=> '',
 			'en'		=> 'en',
 			'cs'		=> 'cs',
@@ -45,12 +51,6 @@ class phpbb_functions_validate_lang_iso_test extends phpbb_database_test_case
 			'en'		=> array('language_iso_name'),
 			'cs'		=> array('language_iso_name'),
 			'de'		=> array('language_iso_name'),
-		),
-		array(
-			'empty'		=> array('WRONG_DATA'),
-			'en'		=> array(),
-			'cs'		=> array(),
-			'de'		=> array('WRONG_DATA'),
 		));
 	}
 }
diff --git a/tests/functions/validate_username_test.php b/tests/functions/validate_username_test.php
index 656248cec3..92c5ba6ee1 100644
--- a/tests/functions/validate_username_test.php
+++ b/tests/functions/validate_username_test.php
@@ -10,13 +10,13 @@
 require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
 require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
 require_once dirname(__FILE__) . '/../mock/cache.php';
-require_once dirname(__FILE__) . '/common_validate_data.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
 
 class phpbb_functions_validate_data_test extends phpbb_database_test_case
 {
 	protected $db;
 	protected $cache;
-	protected $common;
+	protected $helper;
 
 	public function getDataSet()
 	{
@@ -29,7 +29,7 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 
 		$this->db = $this->new_dbal();
 		$this->cache = new phpbb_mock_cache;
-		$this->common = new phpbb_functions_common_validate_data;
+		$this->helper = new phpbb_functions_validate_data_helper($this);
 	}
 
 	public function validate_username_data()
@@ -129,7 +129,7 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 
 		$config['allow_name_chars'] = $allow_name_chars;
 
-		$this->common->validate_data_check(array(
+		$this->helper->assert_validate_data($expected, array(
 			'foobar_allow'		=> 'foobar',
 			'foobar_ascii'		=> 'foobar',
 			'foobar_any'		=> 'f*~*^=oo_bar1',
@@ -154,7 +154,6 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 			'barfoo_disallow'	=> array('username'),
 			'admin_taken'		=> array('username'),
 			'group_taken'		=> array('username'),
-		),
-		$expected);
+		));
 	}
 }
-- 
cgit v1.2.1


From c2bc82ebfd54cebba03bd04dccaf5a8e317844ae Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Mon, 3 Jun 2013 16:15:08 +0200
Subject: [ticket/11579] Move simple tests into seperate files

PHPBB3-11579
---
 tests/functions/validate_data_simple_test.php | 251 --------------------------
 tests/functions/validate_date_test.php        |  66 +++++++
 tests/functions/validate_jabber_test.php      |  63 +++++++
 tests/functions/validate_match_test.php       |  45 +++++
 tests/functions/validate_num_test.php         |  51 ++++++
 tests/functions/validate_password_test.php    |  83 +++++++++
 tests/functions/validate_string_test.php      |  58 ++++++
 7 files changed, 366 insertions(+), 251 deletions(-)
 delete mode 100644 tests/functions/validate_data_simple_test.php
 create mode 100644 tests/functions/validate_date_test.php
 create mode 100644 tests/functions/validate_jabber_test.php
 create mode 100644 tests/functions/validate_match_test.php
 create mode 100644 tests/functions/validate_num_test.php
 create mode 100644 tests/functions/validate_password_test.php
 create mode 100644 tests/functions/validate_string_test.php

(limited to 'tests')

diff --git a/tests/functions/validate_data_simple_test.php b/tests/functions/validate_data_simple_test.php
deleted file mode 100644
index db4f218eed..0000000000
--- a/tests/functions/validate_data_simple_test.php
+++ /dev/null
@@ -1,251 +0,0 @@
-<?php
-/**
-*
-* @package testing
-* @copyright (c) 2013 phpBB Group
-* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
-*
-*/
-
-require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
-require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
-require_once dirname(__FILE__) . '/validate_data_helper.php';
-
-class phpbb_functions_validate_data_simple_test extends phpbb_test_case
-{
-	protected $helper;
-
-	protected function setUp()
-	{
-		parent::setUp();
-
-		$this->helper = new phpbb_functions_validate_data_helper($this);
-	}
-
-	public function test_validate_string()
-	{
-		$this->helper->assert_validate_data(array(
-			'empty_opt'		=> array(),
-			'empty'			=> array(),
-			'foo'			=> array(),
-			'foo_minmax_correct'	=> array(),
-			'foo_minmax_short'	=> array('TOO_SHORT'),
-			'foo_minmax_long'	=> array('TOO_LONG'),
-			'empty_short'		=> array('TOO_SHORT'),
-			'empty_length_opt'	=> array(),
-		),
-		array(
-			'empty_opt'		=> '',
-			'empty'			=> '',
-			'foo'			=> 'foobar',
-			'foo_minmax_correct'	=> 'foobar',
-			'foo_minmax_short'	=> 'foobar',
-			'foo_minmax_long'	=> 'foobar',
-			'empty_short'		=> '',
-			'empty_length_opt'	=> '',
-		),
-		array(
-			'empty_opt'		=> array('string', true),
-			'empty'			=> array('string'),
-			'foo'			=> array('string'),
-			'foo_minmax_correct'	=> array('string', false, 2, 6),
-			'foo_minmax_short'	=> array('string', false, 7, 9),
-			'foo_minmax_long'	=> array('string', false, 2, 5),
-			'empty_short'		=> array('string', false, 1, 6),
-			'empty_length_opt'	=> array('string', true, 1, 6),
-		));
-	}
-
-	public function test_validate_num()
-	{
-		$this->helper->assert_validate_data(array(
-			'empty'			=> array(),
-			'zero'			=> array(),
-			'five_minmax_correct'	=> array(),
-			'five_minmax_short'	=> array('TOO_SMALL'),
-			'five_minmax_long'	=> array('TOO_LARGE'),
-			'string'		=> array(),
-		),
-		array(
-			'empty'			=> '',
-			'zero'			=> 0,
-			'five_minmax_correct'	=> 5,
-			'five_minmax_short'	=> 5,
-			'five_minmax_long'	=> 5,
-			'string'		=> 'foobar',
-		),
-		array(
-			'empty'			=> array('num'),
-			'zero'			=> array('num'),
-			'five_minmax_correct'	=> array('num', false, 2, 6),
-			'five_minmax_short'	=> array('num', false, 7, 10),
-			'five_minmax_long'	=> array('num', false, 2, 3),
-			'string'		=> array('num'),
-		));
-	}
-
-	public function test_validate_date()
-	{
-		$this->helper->assert_validate_data(array(
-			'empty'			=> array('INVALID'),
-			'empty_opt'		=> array(),
-			'double_single'		=> array(),
-			'single_single'		=> array(),
-			'double_double'		=> array(),
-			// Currently fails
-			//'zero_year'		=> array(),
-			'month_high'		=> array('INVALID'),
-			'month_low'		=> array('INVALID'),
-			'day_high'		=> array('INVALID'),
-			'day_low'		=> array('INVALID'),
-		),
-		array(
-			'empty'			=> '',
-			'empty_opt'		=> '',
-			'double_single'		=> '17-06-1990',
-			'single_single'		=> '05-05-2009',
-			'double_double'		=> '17-12-1990',
-			// Currently fails
-			//'zero_year'		=> '01-01-0000',
-			'month_high'		=> '17-17-1990',
-			'month_low'		=> '01-00-1990',
-			'day_high'		=> '64-01-1990',
-			'day_low'		=> '00-12-1990',
-		),
-		array(
-			'empty'			=> array('date'),
-			'empty_opt'		=> array('date', true),
-			'double_single'		=> array('date'),
-			'single_single'		=> array('date'),
-			'double_double'		=> array('date'),
-			// Currently fails
-			//'zero_year'		=> array('date'),
-			'month_high'		=> array('date'),
-			'month_low'		=> array('date'),
-			'day_high'		=> array('date'),
-			'day_low'		=> array('date'),
-		));
-	}
-
-	public function test_validate_match()
-	{
-		$this->helper->assert_validate_data(array(
-			'empty_opt'		=> array(),
-			'empty_empty_match'	=> array(),
-			'foobar'		=> array(),
-			'foobar_fail'		=> array('WRONG_DATA'),
-		),
-		array(
-			'empty_opt'		=> '',
-			'empty_empty_match'	=> '',
-			'foobar'		=> 'foobar',
-			'foobar_fail'		=> 'foobar123',
-		),
-		array(
-			'empty_opt'		=> array('match', true, '/[a-z]$/'),
-			'empty_empty_match'	=> array('match'),
-			'foobar'		=> array('match', false, '/[a-z]$/'),
-			'foobar_fail'		=> array('match', false, '/[a-z]$/'),
-		));
-	}
-
-	public function validate_password_data()
-	{
-		return array(
-			array('PASS_TYPE_ANY', array(
-				'empty'			=> array(),
-				'foobar_any'		=> array(),
-				'foobar_mixed'		=> array(),
-				'foobar_alpha'		=> array(),
-				'foobar_symbol'		=> array(),
-			)),
-			array('PASS_TYPE_CASE', array(
-				'empty'			=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_mixed'		=> array(),
-				'foobar_alpha'		=> array(),
-				'foobar_symbol'		=> array(),
-			)),
-			array('PASS_TYPE_ALPHA', array(
-				'empty'			=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_mixed'		=> array('INVALID_CHARS'),
-				'foobar_alpha'		=> array(),
-				'foobar_symbol'		=> array(),
-			)),
-			array('PASS_TYPE_SYMBOL', array(
-				'empty'			=> array(),
-				'foobar_any'		=> array('INVALID_CHARS'),
-				'foobar_mixed'		=> array('INVALID_CHARS'),
-				'foobar_alpha'		=> array('INVALID_CHARS'),
-				'foobar_symbol'		=> array(),
-			)),
-		);
-	}
-
-	/**
-	* @dataProvider validate_password_data
-	*/
-	public function test_validate_password($pass_complexity, $expected)
-	{
-		global $config;
-
-		// Set complexity to mixed case letters, numbers and symbols
-		$config['pass_complex'] = $pass_complexity;
-
-		$this->helper->assert_validate_data($expected, array(
-			'empty'			=> '',
-			'foobar_any'		=> 'foobar',
-			'foobar_mixed'		=> 'FooBar',
-			'foobar_alpha'		=> 'F00bar',
-			'foobar_symbol'		=> 'fooBar123*',
-		),
-		array(
-			'empty'			=> array('password'),
-			'foobar_any'		=> array('password'),
-			'foobar_mixed'		=> array('password'),
-			'foobar_alpha'		=> array('password'),
-			'foobar_symbol'		=> array('password'),
-		));
-	}
-
-	public function test_validate_jabber()
-	{
-		$this->helper->assert_validate_data(array(
-			'empty'			=> array(),
-			'no_seperator'		=> array('WRONG_DATA'),
-			'no_user'		=> array('WRONG_DATA'),
-			'no_realm'		=> array('WRONG_DATA'),
-			'dot_realm'		=> array('WRONG_DATA'),
-			'-realm'		=> array('WRONG_DATA'),
-			'realm-'		=> array('WRONG_DATA'),
-			'correct'		=> array(),
-			'prohibited'		=> array('WRONG_DATA'),
-			'prohibited_char'	=> array('WRONG_DATA'),
-		),
-		array(
-			'empty'			=> '',
-			'no_seperator'		=> 'testjabber.ccc',
-			'no_user'		=> '@jabber.ccc',
-			'no_realm'		=> 'user@',
-			'dot_realm'		=> 'user@.....',
-			'-realm'		=> 'user@-jabber.ccc',
-			'realm-'		=> 'user@jabber.ccc-',
-			'correct'		=> 'user@jabber.09A-z.org',
-			'prohibited'		=> 'u@ser@jabber.ccc.org',
-			'prohibited_char'	=> 'u<s>er@jabber.ccc.org',
-		),
-		array(
-			'empty'			=> array('jabber'),
-			'no_seperator'		=> array('jabber'),
-			'no_user'		=> array('jabber'),
-			'no_realm'		=> array('jabber'),
-			'dot_realm'		=> array('jabber'),
-			'-realm'		=> array('jabber'),
-			'realm-'		=> array('jabber'),
-			'correct'		=> array('jabber'),
-			'prohibited'		=> array('jabber'),
-			'prohibited_char'	=> array('jabber'),
-		));
-	}
-}
diff --git a/tests/functions/validate_date_test.php b/tests/functions/validate_date_test.php
new file mode 100644
index 0000000000..e7a279879c
--- /dev/null
+++ b/tests/functions/validate_date_test.php
@@ -0,0 +1,66 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
+
+class phpbb_functions_validate_date_test extends phpbb_test_case
+{
+	protected $helper;
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->helper = new phpbb_functions_validate_data_helper($this);
+	}
+
+	public function test_validate_date()
+	{
+		$this->helper->assert_validate_data(array(
+			'empty'			=> array('INVALID'),
+			'empty_opt'		=> array(),
+			'double_single'		=> array(),
+			'single_single'		=> array(),
+			'double_double'		=> array(),
+			// Currently fails
+			//'zero_year'		=> array(),
+			'month_high'		=> array('INVALID'),
+			'month_low'		=> array('INVALID'),
+			'day_high'		=> array('INVALID'),
+			'day_low'		=> array('INVALID'),
+		),
+		array(
+			'empty'			=> '',
+			'empty_opt'		=> '',
+			'double_single'		=> '17-06-1990',
+			'single_single'		=> '05-05-2009',
+			'double_double'		=> '17-12-1990',
+			// Currently fails
+			//'zero_year'		=> '01-01-0000',
+			'month_high'		=> '17-17-1990',
+			'month_low'		=> '01-00-1990',
+			'day_high'		=> '64-01-1990',
+			'day_low'		=> '00-12-1990',
+		),
+		array(
+			'empty'			=> array('date'),
+			'empty_opt'		=> array('date', true),
+			'double_single'		=> array('date'),
+			'single_single'		=> array('date'),
+			'double_double'		=> array('date'),
+			// Currently fails
+			//'zero_year'		=> array('date'),
+			'month_high'		=> array('date'),
+			'month_low'		=> array('date'),
+			'day_high'		=> array('date'),
+			'day_low'		=> array('date'),
+		));
+	}
+}
diff --git a/tests/functions/validate_jabber_test.php b/tests/functions/validate_jabber_test.php
new file mode 100644
index 0000000000..551b243f81
--- /dev/null
+++ b/tests/functions/validate_jabber_test.php
@@ -0,0 +1,63 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
+
+class phpbb_functions_validate_jabber_test extends phpbb_test_case
+{
+	protected $helper;
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->helper = new phpbb_functions_validate_data_helper($this);
+	}
+
+	public function test_validate_jabber()
+	{
+		$this->helper->assert_validate_data(array(
+			'empty'			=> array(),
+			'no_seperator'		=> array('WRONG_DATA'),
+			'no_user'		=> array('WRONG_DATA'),
+			'no_realm'		=> array('WRONG_DATA'),
+			'dot_realm'		=> array('WRONG_DATA'),
+			'-realm'		=> array('WRONG_DATA'),
+			'realm-'		=> array('WRONG_DATA'),
+			'correct'		=> array(),
+			'prohibited'		=> array('WRONG_DATA'),
+			'prohibited_char'	=> array('WRONG_DATA'),
+		),
+		array(
+			'empty'			=> '',
+			'no_seperator'		=> 'testjabber.ccc',
+			'no_user'		=> '@jabber.ccc',
+			'no_realm'		=> 'user@',
+			'dot_realm'		=> 'user@.....',
+			'-realm'		=> 'user@-jabber.ccc',
+			'realm-'		=> 'user@jabber.ccc-',
+			'correct'		=> 'user@jabber.09A-z.org',
+			'prohibited'		=> 'u@ser@jabber.ccc.org',
+			'prohibited_char'	=> 'u<s>er@jabber.ccc.org',
+		),
+		array(
+			'empty'			=> array('jabber'),
+			'no_seperator'		=> array('jabber'),
+			'no_user'		=> array('jabber'),
+			'no_realm'		=> array('jabber'),
+			'dot_realm'		=> array('jabber'),
+			'-realm'		=> array('jabber'),
+			'realm-'		=> array('jabber'),
+			'correct'		=> array('jabber'),
+			'prohibited'		=> array('jabber'),
+			'prohibited_char'	=> array('jabber'),
+		));
+	}
+}
diff --git a/tests/functions/validate_match_test.php b/tests/functions/validate_match_test.php
new file mode 100644
index 0000000000..5d44f1e00b
--- /dev/null
+++ b/tests/functions/validate_match_test.php
@@ -0,0 +1,45 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
+
+class phpbb_functions_validate_match_test extends phpbb_test_case
+{
+	protected $helper;
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->helper = new phpbb_functions_validate_data_helper($this);
+	}
+
+	public function test_validate_match()
+	{
+		$this->helper->assert_validate_data(array(
+			'empty_opt'		=> array(),
+			'empty_empty_match'	=> array(),
+			'foobar'		=> array(),
+			'foobar_fail'		=> array('WRONG_DATA'),
+		),
+		array(
+			'empty_opt'		=> '',
+			'empty_empty_match'	=> '',
+			'foobar'		=> 'foobar',
+			'foobar_fail'		=> 'foobar123',
+		),
+		array(
+			'empty_opt'		=> array('match', true, '/[a-z]$/'),
+			'empty_empty_match'	=> array('match'),
+			'foobar'		=> array('match', false, '/[a-z]$/'),
+			'foobar_fail'		=> array('match', false, '/[a-z]$/'),
+		));
+	}
+}
diff --git a/tests/functions/validate_num_test.php b/tests/functions/validate_num_test.php
new file mode 100644
index 0000000000..4e210ba29a
--- /dev/null
+++ b/tests/functions/validate_num_test.php
@@ -0,0 +1,51 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
+
+class phpbb_functions_validate_num_test extends phpbb_test_case
+{
+	protected $helper;
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->helper = new phpbb_functions_validate_data_helper($this);
+	}
+
+	public function test_validate_num()
+	{
+		$this->helper->assert_validate_data(array(
+			'empty'			=> array(),
+			'zero'			=> array(),
+			'five_minmax_correct'	=> array(),
+			'five_minmax_short'	=> array('TOO_SMALL'),
+			'five_minmax_long'	=> array('TOO_LARGE'),
+			'string'		=> array(),
+		),
+		array(
+			'empty'			=> '',
+			'zero'			=> 0,
+			'five_minmax_correct'	=> 5,
+			'five_minmax_short'	=> 5,
+			'five_minmax_long'	=> 5,
+			'string'		=> 'foobar',
+		),
+		array(
+			'empty'			=> array('num'),
+			'zero'			=> array('num'),
+			'five_minmax_correct'	=> array('num', false, 2, 6),
+			'five_minmax_short'	=> array('num', false, 7, 10),
+			'five_minmax_long'	=> array('num', false, 2, 3),
+			'string'		=> array('num'),
+		));
+	}
+}
diff --git a/tests/functions/validate_password_test.php b/tests/functions/validate_password_test.php
new file mode 100644
index 0000000000..e8dc7e0dea
--- /dev/null
+++ b/tests/functions/validate_password_test.php
@@ -0,0 +1,83 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
+
+class phpbb_functions_validate_password_test extends phpbb_test_case
+{
+	protected $helper;
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->helper = new phpbb_functions_validate_data_helper($this);
+	}
+
+	public function validate_password_data()
+	{
+		return array(
+			array('PASS_TYPE_ANY', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array(),
+				'foobar_mixed'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_CASE', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array(),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_ALPHA', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array(),
+				'foobar_symbol'		=> array(),
+			)),
+			array('PASS_TYPE_SYMBOL', array(
+				'empty'			=> array(),
+				'foobar_any'		=> array('INVALID_CHARS'),
+				'foobar_mixed'		=> array('INVALID_CHARS'),
+				'foobar_alpha'		=> array('INVALID_CHARS'),
+				'foobar_symbol'		=> array(),
+			)),
+		);
+	}
+
+	/**
+	* @dataProvider validate_password_data
+	*/
+	public function test_validate_password($pass_complexity, $expected)
+	{
+		global $config;
+
+		// Set complexity to mixed case letters, numbers and symbols
+		$config['pass_complex'] = $pass_complexity;
+
+		$this->helper->assert_validate_data($expected, array(
+			'empty'			=> '',
+			'foobar_any'		=> 'foobar',
+			'foobar_mixed'		=> 'FooBar',
+			'foobar_alpha'		=> 'F00bar',
+			'foobar_symbol'		=> 'fooBar123*',
+		),
+		array(
+			'empty'			=> array('password'),
+			'foobar_any'		=> array('password'),
+			'foobar_mixed'		=> array('password'),
+			'foobar_alpha'		=> array('password'),
+			'foobar_symbol'		=> array('password'),
+		));
+	}
+}
diff --git a/tests/functions/validate_string_test.php b/tests/functions/validate_string_test.php
new file mode 100644
index 0000000000..2b4f7321a6
--- /dev/null
+++ b/tests/functions/validate_string_test.php
@@ -0,0 +1,58 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../../phpBB/includes/functions_user.php';
+require_once dirname(__FILE__) . '/../../phpBB/includes/utf/utf_tools.php';
+require_once dirname(__FILE__) . '/validate_data_helper.php';
+
+class phpbb_functions_validate_string_test extends phpbb_test_case
+{
+	protected $helper;
+
+	protected function setUp()
+	{
+		parent::setUp();
+
+		$this->helper = new phpbb_functions_validate_data_helper($this);
+	}
+
+	public function test_validate_string()
+	{
+		$this->helper->assert_validate_data(array(
+			'empty_opt'		=> array(),
+			'empty'			=> array(),
+			'foo'			=> array(),
+			'foo_minmax_correct'	=> array(),
+			'foo_minmax_short'	=> array('TOO_SHORT'),
+			'foo_minmax_long'	=> array('TOO_LONG'),
+			'empty_short'		=> array('TOO_SHORT'),
+			'empty_length_opt'	=> array(),
+		),
+		array(
+			'empty_opt'		=> '',
+			'empty'			=> '',
+			'foo'			=> 'foobar',
+			'foo_minmax_correct'	=> 'foobar',
+			'foo_minmax_short'	=> 'foobar',
+			'foo_minmax_long'	=> 'foobar',
+			'empty_short'		=> '',
+			'empty_length_opt'	=> '',
+		),
+		array(
+			'empty_opt'		=> array('string', true),
+			'empty'			=> array('string'),
+			'foo'			=> array('string'),
+			'foo_minmax_correct'	=> array('string', false, 2, 6),
+			'foo_minmax_short'	=> array('string', false, 7, 9),
+			'foo_minmax_long'	=> array('string', false, 2, 5),
+			'empty_short'		=> array('string', false, 1, 6),
+			'empty_length_opt'	=> array('string', true, 1, 6),
+		));
+	}
+}
-- 
cgit v1.2.1


From 11678678b810c26376728166cf334550cbc30124 Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Mon, 3 Jun 2013 21:30:13 +0200
Subject: [ticket/11579] Rework calls to validate_data_helper

PHPBB3-11579
---
 tests/functions/validate_data_helper.php   | 18 +++---
 tests/functions/validate_date_test.php     | 90 ++++++++++++++++++------------
 tests/functions/validate_email_test.php    | 62 +++++++++++---------
 tests/functions/validate_jabber_test.php   | 86 ++++++++++++++++------------
 tests/functions/validate_lang_iso_test.php | 38 +++++++------
 tests/functions/validate_match_test.php    | 38 +++++++------
 tests/functions/validate_num_test.php      | 54 ++++++++++--------
 tests/functions/validate_password_test.php | 39 ++++++++-----
 tests/functions/validate_string_test.php   | 70 +++++++++++++----------
 tests/functions/validate_username_test.php | 81 ++++++++++++++++++---------
 10 files changed, 344 insertions(+), 232 deletions(-)

(limited to 'tests')

diff --git a/tests/functions/validate_data_helper.php b/tests/functions/validate_data_helper.php
index b8e8bfded3..94ddf60429 100644
--- a/tests/functions/validate_data_helper.php
+++ b/tests/functions/validate_data_helper.php
@@ -20,19 +20,17 @@ class phpbb_functions_validate_data_helper extends PHPUnit_Framework_TestCase
 	* Test provided input data with supplied checks and compare to expected
 	* results
 	*
-	* @param array $expected Array containing the expected results. Either
-	*		an array containing the error message or the an empty
-	*		array if input is correct
-	* @param array $input Input data with specific array keys that need to
-	*		be matched by the ones in the other 2 params
-	* @param array $validate_check Array containing validate_data check
-	*		settings, i.e. array('foobar' => array('string'))
+	* @param array $data Array containing one or more subarrays with the
+	*		test data. The first element of a subarray is the
+	*		expected result, the second one is the input, and the
+	*		third is the data that should be passed to the function
+	*		validate_data().
 	*/
-	public function assert_validate_data($expected, $input, $validate_check)
+	public function assert_valid_data($data)
 	{
-		foreach ($input as $key => $data)
+		foreach ($data as $key => $test)
 		{
-			$this->test_case->assertEquals($expected[$key], validate_data(array($data), array($validate_check[$key])));
+			$this->test_case->assertEquals($test[0], validate_data(array($test[1]), array($test[2])));
 		}
 	}
 }
diff --git a/tests/functions/validate_date_test.php b/tests/functions/validate_date_test.php
index e7a279879c..1dcd1361a2 100644
--- a/tests/functions/validate_date_test.php
+++ b/tests/functions/validate_date_test.php
@@ -23,44 +23,60 @@ class phpbb_functions_validate_date_test extends phpbb_test_case
 
 	public function test_validate_date()
 	{
-		$this->helper->assert_validate_data(array(
-			'empty'			=> array('INVALID'),
-			'empty_opt'		=> array(),
-			'double_single'		=> array(),
-			'single_single'		=> array(),
-			'double_double'		=> array(),
+		$this->helper->assert_valid_data(array(
+			'empty' => array(
+				array('INVALID'),
+				'',
+				array('date'),
+			),
+			'empty_opt' => array(
+				array(),
+				'',
+				array('date', true),
+			),
+			'double_single' => array(
+				array(),
+				'17-06-1990',
+				array('date'),
+			),
+			'single_single' => array(
+				array(),
+				'05-05-2009',
+				array('date'),
+			),
+			'double_double' => array(
+				array(),
+				'17-12-1990',
+				array('date'),
+			),
+			'month_high' => array(
+				array('INVALID'),
+				'17-17-1990',
+				array('date'),
+			),
+			'month_low' => array(
+				array('INVALID'),
+				'01-00-1990',
+				array('date'),
+			),
+			'day_high' => array(
+				array('INVALID'),
+				'64-01-1990',
+				array('date'),
+			),
+			'day_low' => array(
+				array('INVALID'),
+				'00-12-1990',
+				array('date'),
+			),
 			// Currently fails
-			//'zero_year'		=> array(),
-			'month_high'		=> array('INVALID'),
-			'month_low'		=> array('INVALID'),
-			'day_high'		=> array('INVALID'),
-			'day_low'		=> array('INVALID'),
-		),
-		array(
-			'empty'			=> '',
-			'empty_opt'		=> '',
-			'double_single'		=> '17-06-1990',
-			'single_single'		=> '05-05-2009',
-			'double_double'		=> '17-12-1990',
-			// Currently fails
-			//'zero_year'		=> '01-01-0000',
-			'month_high'		=> '17-17-1990',
-			'month_low'		=> '01-00-1990',
-			'day_high'		=> '64-01-1990',
-			'day_low'		=> '00-12-1990',
-		),
-		array(
-			'empty'			=> array('date'),
-			'empty_opt'		=> array('date', true),
-			'double_single'		=> array('date'),
-			'single_single'		=> array('date'),
-			'double_double'		=> array('date'),
-			// Currently fails
-			//'zero_year'		=> array('date'),
-			'month_high'		=> array('date'),
-			'month_low'		=> array('date'),
-			'day_high'		=> array('date'),
-			'day_low'		=> array('date'),
+			/*
+			'zero_year' => array(
+				array(),
+				'01-01-0000',
+				array('date'),
+			),
+			*/
 		));
 	}
 }
diff --git a/tests/functions/validate_email_test.php b/tests/functions/validate_email_test.php
index 2e81d3277e..93b5ba0896 100644
--- a/tests/functions/validate_email_test.php
+++ b/tests/functions/validate_email_test.php
@@ -41,32 +41,42 @@ class phpbb_functions_validate_email_test extends phpbb_database_test_case
 		$user = $this->user;
 		$user->optionset('banned_users', array('banned@example.com'));
 
-		$this->helper->assert_validate_data(array(
-			'empty'			=> array(),
-			'allowed'		=> array(),
-			'invalid'		=> array('EMAIL_INVALID'),
-			'valid_complex'		=> array(),
-			'taken'			=> array('EMAIL_TAKEN'),
-			'banned'		=> array('EMAIL_BANNED'),
-			'no_mx'			=> array('DOMAIN_NO_MX_RECORD'),
-		),
-		array(
-			'empty'			=> '',
-			'allowed'		=> 'foobar@example.com',
-			'invalid'		=> 'fööbar@example.com',
-			'valid_complex'		=> "'%$~test@example.com",
-			'taken'			=> 'admin@example.com',
-			'banned'		=> 'banned@example.com',
-			'no_mx'			=> 'test@wwrrrhhghgghgh.ttv',
-		),
-		array(
-			'empty'			=> array('email'),
-			'allowed'		=> array('email', 'foobar@example.com'),
-			'invalid'		=> array('email'),
-			'valid_complex'		=> array('email'),
-			'taken'			=> array('email'),
-			'banned'		=> array('email'),
-			'no_mx'			=> array('email'),
+		$this->helper->assert_valid_data(array(
+			'empty' => array(
+				array(),
+				'',
+				array('email'),
+			),
+			'allowed' => array(
+				array(),
+				'foobar@example.com',
+				array('email', 'foobar@example.com'),
+			),
+			'invalid' => array(
+				array('EMAIL_INVALID'),
+				'fööbar@example.com',
+				array('email'),
+			),
+			'valid_complex' => array(
+				array(),
+				"'%$~test@example.com",
+				array('email'),
+			),
+			'taken' => array(
+				array('EMAIL_TAKEN'),
+				'admin@example.com',
+				array('email'),
+			),
+			'banned' => array(
+				array('EMAIL_BANNED'),
+				'banned@example.com',
+				array('email'),
+			),
+			'no_mx' => array(
+				array('DOMAIN_NO_MX_RECORD'),
+				'test@wwrrrhhghgghgh.ttv',
+				array('email'),
+			),
 		));
 	}
 }
diff --git a/tests/functions/validate_jabber_test.php b/tests/functions/validate_jabber_test.php
index 551b243f81..5a53c963bd 100644
--- a/tests/functions/validate_jabber_test.php
+++ b/tests/functions/validate_jabber_test.php
@@ -23,41 +23,57 @@ class phpbb_functions_validate_jabber_test extends phpbb_test_case
 
 	public function test_validate_jabber()
 	{
-		$this->helper->assert_validate_data(array(
-			'empty'			=> array(),
-			'no_seperator'		=> array('WRONG_DATA'),
-			'no_user'		=> array('WRONG_DATA'),
-			'no_realm'		=> array('WRONG_DATA'),
-			'dot_realm'		=> array('WRONG_DATA'),
-			'-realm'		=> array('WRONG_DATA'),
-			'realm-'		=> array('WRONG_DATA'),
-			'correct'		=> array(),
-			'prohibited'		=> array('WRONG_DATA'),
-			'prohibited_char'	=> array('WRONG_DATA'),
-		),
-		array(
-			'empty'			=> '',
-			'no_seperator'		=> 'testjabber.ccc',
-			'no_user'		=> '@jabber.ccc',
-			'no_realm'		=> 'user@',
-			'dot_realm'		=> 'user@.....',
-			'-realm'		=> 'user@-jabber.ccc',
-			'realm-'		=> 'user@jabber.ccc-',
-			'correct'		=> 'user@jabber.09A-z.org',
-			'prohibited'		=> 'u@ser@jabber.ccc.org',
-			'prohibited_char'	=> 'u<s>er@jabber.ccc.org',
-		),
-		array(
-			'empty'			=> array('jabber'),
-			'no_seperator'		=> array('jabber'),
-			'no_user'		=> array('jabber'),
-			'no_realm'		=> array('jabber'),
-			'dot_realm'		=> array('jabber'),
-			'-realm'		=> array('jabber'),
-			'realm-'		=> array('jabber'),
-			'correct'		=> array('jabber'),
-			'prohibited'		=> array('jabber'),
-			'prohibited_char'	=> array('jabber'),
+		$this->helper->assert_valid_data(array(
+			'empty' => array(
+				array(),
+				'',
+				array('jabber'),
+			),	
+			'no_seperator' => array(
+				array('WRONG_DATA'),
+				'testjabber.ccc',
+				array('jabber'),
+			),
+			'no_user' => array(
+				array('WRONG_DATA'),
+				'@jabber.ccc',
+				array('jabber'),
+			),
+			'no_realm' => array(
+				array('WRONG_DATA'),
+				'user@',
+				array('jabber'),
+			),
+			'dot_realm' => array(
+				array('WRONG_DATA'),
+				'user@.....',
+				array('jabber'),
+			),
+			'-realm' => array(
+				array('WRONG_DATA'),
+				'user@-jabber.ccc',
+				array('jabber'),
+			),
+			'realm-' => array(
+				array('WRONG_DATA'),
+				'user@jabber.ccc-',
+				array('jabber'),
+			),
+			'correct' => array(
+				array(),
+				'user@jabber.09A-z.org',
+				array('jabber'),
+			),
+			'prohibited' => array(
+				array('WRONG_DATA'),
+				'u@ser@jabber.ccc.org',
+				array('jabber'),
+			),
+			'prohibited_char' => array(
+				array('WRONG_DATA'),
+				'u<s>er@jabber.ccc.org',
+				array('jabber'),
+			),
 		));
 	}
 }
diff --git a/tests/functions/validate_lang_iso_test.php b/tests/functions/validate_lang_iso_test.php
index baf75108b7..c8a5b71021 100644
--- a/tests/functions/validate_lang_iso_test.php
+++ b/tests/functions/validate_lang_iso_test.php
@@ -34,23 +34,27 @@ class phpbb_functions_validate_lang_iso_test extends phpbb_database_test_case
 
 		$db = $this->db;
 
-		$this->helper->assert_validate_data(array(
-			'empty'		=> array('WRONG_DATA'),
-			'en'		=> array(),
-			'cs'		=> array(),
-			'de'		=> array('WRONG_DATA'),
-		),
-		array(
-			'empty'		=> '',
-			'en'		=> 'en',
-			'cs'		=> 'cs',
-			'de'		=> 'de',
-		),
-		array(
-			'empty'		=> array('language_iso_name'),
-			'en'		=> array('language_iso_name'),
-			'cs'		=> array('language_iso_name'),
-			'de'		=> array('language_iso_name'),
+		$this->helper->assert_valid_data(array(
+			'empty' => array(
+				array('WRONG_DATA'),
+				'',
+				array('language_iso_name'),
+			),
+			'en' => array(
+				array(),
+				'en',
+				array('language_iso_name'),
+			),
+			'cs' => array(
+				array(),
+				'cs',
+				array('language_iso_name'),
+			),
+			'de' => array(
+				array('WRONG_DATA'),
+				'de',
+				array('language_iso_name'),
+			),
 		));
 	}
 }
diff --git a/tests/functions/validate_match_test.php b/tests/functions/validate_match_test.php
index 5d44f1e00b..73a363e003 100644
--- a/tests/functions/validate_match_test.php
+++ b/tests/functions/validate_match_test.php
@@ -23,23 +23,27 @@ class phpbb_functions_validate_match_test extends phpbb_test_case
 
 	public function test_validate_match()
 	{
-		$this->helper->assert_validate_data(array(
-			'empty_opt'		=> array(),
-			'empty_empty_match'	=> array(),
-			'foobar'		=> array(),
-			'foobar_fail'		=> array('WRONG_DATA'),
-		),
-		array(
-			'empty_opt'		=> '',
-			'empty_empty_match'	=> '',
-			'foobar'		=> 'foobar',
-			'foobar_fail'		=> 'foobar123',
-		),
-		array(
-			'empty_opt'		=> array('match', true, '/[a-z]$/'),
-			'empty_empty_match'	=> array('match'),
-			'foobar'		=> array('match', false, '/[a-z]$/'),
-			'foobar_fail'		=> array('match', false, '/[a-z]$/'),
+		$this->helper->assert_valid_data(array(
+			'empty_opt' => array(
+				array(),
+				'',
+				array('match', true, '/[a-z]$/'),
+			),
+			'empty_empty_match' => array(
+				array(),
+				'',
+				array('match'),
+			),
+			'foobar' => array(
+				array(),
+				'foobar',
+				array('match', false, '/[a-z]$/'),
+			),
+			'foobar_fail' => array(
+				array('WRONG_DATA'),
+				'foobar123',
+				array('match', false, '/[a-z]$/'),
+			),
 		));
 	}
 }
diff --git a/tests/functions/validate_num_test.php b/tests/functions/validate_num_test.php
index 4e210ba29a..4deac02ebc 100644
--- a/tests/functions/validate_num_test.php
+++ b/tests/functions/validate_num_test.php
@@ -23,29 +23,37 @@ class phpbb_functions_validate_num_test extends phpbb_test_case
 
 	public function test_validate_num()
 	{
-		$this->helper->assert_validate_data(array(
-			'empty'			=> array(),
-			'zero'			=> array(),
-			'five_minmax_correct'	=> array(),
-			'five_minmax_short'	=> array('TOO_SMALL'),
-			'five_minmax_long'	=> array('TOO_LARGE'),
-			'string'		=> array(),
-		),
-		array(
-			'empty'			=> '',
-			'zero'			=> 0,
-			'five_minmax_correct'	=> 5,
-			'five_minmax_short'	=> 5,
-			'five_minmax_long'	=> 5,
-			'string'		=> 'foobar',
-		),
-		array(
-			'empty'			=> array('num'),
-			'zero'			=> array('num'),
-			'five_minmax_correct'	=> array('num', false, 2, 6),
-			'five_minmax_short'	=> array('num', false, 7, 10),
-			'five_minmax_long'	=> array('num', false, 2, 3),
-			'string'		=> array('num'),
+		$this->helper->assert_valid_data(array(
+			'empty' => array(
+				array(),
+				'',
+				array('num'),
+			),
+			'zero' => array(
+				array(),
+				'0',
+				array('num'),
+			),
+			'five_minmax_correct' => array(
+				array(),
+				'5',
+				array('num', false, 2, 6),
+			),
+			'five_minmax_short' => array(
+				array('TOO_SMALL'),
+				'5',
+				array('num', false, 7, 10),
+			),
+			'five_minmax_long' => array(
+				array('TOO_LARGE'),
+				'5',
+				array('num', false, 2, 3),
+			),
+			'string' => array(
+				array(),
+				'foobar',
+				array('num'),
+			),
 		));
 	}
 }
diff --git a/tests/functions/validate_password_test.php b/tests/functions/validate_password_test.php
index e8dc7e0dea..4639f6cc89 100644
--- a/tests/functions/validate_password_test.php
+++ b/tests/functions/validate_password_test.php
@@ -65,19 +65,32 @@ class phpbb_functions_validate_password_test extends phpbb_test_case
 		// Set complexity to mixed case letters, numbers and symbols
 		$config['pass_complex'] = $pass_complexity;
 
-		$this->helper->assert_validate_data($expected, array(
-			'empty'			=> '',
-			'foobar_any'		=> 'foobar',
-			'foobar_mixed'		=> 'FooBar',
-			'foobar_alpha'		=> 'F00bar',
-			'foobar_symbol'		=> 'fooBar123*',
-		),
-		array(
-			'empty'			=> array('password'),
-			'foobar_any'		=> array('password'),
-			'foobar_mixed'		=> array('password'),
-			'foobar_alpha'		=> array('password'),
-			'foobar_symbol'		=> array('password'),
+		$this->helper->assert_valid_data(array(
+			'empty'			=> array(
+				$expected['empty'],
+				'',
+				array('password'),
+			),
+			'foobar_any'		=> array(
+				$expected['foobar_any'],
+				'foobar',
+				array('password'),
+			),
+			'foobar_mixed'		=> array(
+				$expected['foobar_mixed'],
+				'FooBar',
+				array('password'),
+			),
+			'foobar_alpha'		=> array(
+				$expected['foobar_alpha'],
+				'F00bar',
+				array('password'),
+			),
+			'foobar_symbol'		=> array(
+				$expected['foobar_symbol'],
+				'fooBar123*',
+				array('password'),
+			),
 		));
 	}
 }
diff --git a/tests/functions/validate_string_test.php b/tests/functions/validate_string_test.php
index 2b4f7321a6..ab44c28541 100644
--- a/tests/functions/validate_string_test.php
+++ b/tests/functions/validate_string_test.php
@@ -24,35 +24,47 @@ class phpbb_functions_validate_string_test extends phpbb_test_case
 
 	public function test_validate_string()
 	{
-		$this->helper->assert_validate_data(array(
-			'empty_opt'		=> array(),
-			'empty'			=> array(),
-			'foo'			=> array(),
-			'foo_minmax_correct'	=> array(),
-			'foo_minmax_short'	=> array('TOO_SHORT'),
-			'foo_minmax_long'	=> array('TOO_LONG'),
-			'empty_short'		=> array('TOO_SHORT'),
-			'empty_length_opt'	=> array(),
-		),
-		array(
-			'empty_opt'		=> '',
-			'empty'			=> '',
-			'foo'			=> 'foobar',
-			'foo_minmax_correct'	=> 'foobar',
-			'foo_minmax_short'	=> 'foobar',
-			'foo_minmax_long'	=> 'foobar',
-			'empty_short'		=> '',
-			'empty_length_opt'	=> '',
-		),
-		array(
-			'empty_opt'		=> array('string', true),
-			'empty'			=> array('string'),
-			'foo'			=> array('string'),
-			'foo_minmax_correct'	=> array('string', false, 2, 6),
-			'foo_minmax_short'	=> array('string', false, 7, 9),
-			'foo_minmax_long'	=> array('string', false, 2, 5),
-			'empty_short'		=> array('string', false, 1, 6),
-			'empty_length_opt'	=> array('string', true, 1, 6),
+		$this->helper->assert_valid_data(array(
+			'empty_opt' => array(
+				array(),
+				'',
+				array('string', true),
+			),
+			'empty' => array(
+				array(),
+				'',
+				array('string'),
+			),
+			'foo' => array(
+				array(),
+				'foobar',
+				array('string'),
+			),
+			'foo_minmax_correct' => array(
+				array(),
+				'foobar',
+				array('string', false, 2, 6),
+			),
+			'foo_minmax_short' => array(
+				array('TOO_SHORT'),
+				'foobar',
+				array('string', false, 7, 9),
+			),
+			'foo_minmax_long' => array(
+				array('TOO_LONG'),
+				'foobar',
+				array('string', false, 2, 5),
+			),
+			'empty_short' => array(
+				array('TOO_SHORT'),
+				'',
+				array('string', false, 1, 6),
+			),
+			'empty_length_opt' => array(
+				array(),
+				'',
+				array('string', true, 1, 6),
+			),
 		));
 	}
 }
diff --git a/tests/functions/validate_username_test.php b/tests/functions/validate_username_test.php
index 92c5ba6ee1..9adfb63812 100644
--- a/tests/functions/validate_username_test.php
+++ b/tests/functions/validate_username_test.php
@@ -129,31 +129,62 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 
 		$config['allow_name_chars'] = $allow_name_chars;
 
-		$this->helper->assert_validate_data($expected, array(
-			'foobar_allow'		=> 'foobar',
-			'foobar_ascii'		=> 'foobar',
-			'foobar_any'		=> 'f*~*^=oo_bar1',
-			'foobar_alpha'		=> 'fo0Bar',
-			'foobar_alpha_spacers'	=> 'Fo0-[B]_a+ R',
-			'foobar_letter_num'	=> 'fo0Bar0',
-			'foobar_letter_num_sp'	=> 'Fö0-[B]_a+ R',
-			'foobar_quot'		=> '"foobar"',
-			'barfoo_disallow'	=> 'barfoo',
-			'admin_taken'		=> 'admin',
-			'group_taken'		=> 'foobar_group',
-		),
-		array(
-			'foobar_allow'		=> array('username', 'foobar'),
-			'foobar_ascii'		=> array('username'),
-			'foobar_any'		=> array('username'),
-			'foobar_alpha'		=> array('username'),
-			'foobar_alpha_spacers'	=> array('username'),
-			'foobar_letter_num'	=> array('username'),
-			'foobar_letter_num_sp'	=> array('username'),
-			'foobar_quot'		=> array('username'),
-			'barfoo_disallow'	=> array('username'),
-			'admin_taken'		=> array('username'),
-			'group_taken'		=> array('username'),
+		$this->helper->assert_valid_data(array(
+			'foobar_allow' => array(
+				$expected['foobar_allow'],
+				'foobar',
+				array('username', 'foobar'),
+			),
+			'foobar_ascii' => array(
+				$expected['foobar_ascii'],
+				'foobar',
+				array('username'),
+			),
+			'foobar_any' => array(
+				$expected['foobar_any'],
+				'f*~*^=oo_bar1',
+				array('username'),
+			),
+			'foobar_alpha' => array(
+				$expected['foobar_alpha'],
+				'fo0Bar',
+				array('username'),
+			),
+			'foobar_alpha_spacers' => array(
+				$expected['foobar_alpha_spacers'],
+				'Fo0-[B]_a+ R',
+				array('username'),
+			),
+			'foobar_letter_num' => array(
+				$expected['foobar_letter_num'],
+				'fo0Bar0',
+				array('username'),
+			),
+			'foobar_letter_num_sp' => array(
+				$expected['foobar_letter_num_sp'],
+				'Fö0-[B]_a+ R',
+				array('username'),
+			),
+			'foobar_quot' => array(
+				$expected['foobar_quot'],
+				'"foobar"',
+				array('username'),
+			),
+			'barfoo_disallow' => array(
+				$expected['barfoo_disallow'],
+				'barfoo',
+				array('username'),
+			),
+			'admin_taken' => array(
+				$expected['admin_taken'],
+				'admin',
+				array('username'),
+			),
+			'group_taken' => array(
+				$expected['group_taken'],
+				'foobar_group',
+				array('username'),
+			),
 		));
 	}
 }
-- 
cgit v1.2.1


From b288bd441436c8dd3417f67013729732ca87939f Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Mon, 3 Jun 2013 21:33:02 +0200
Subject: [ticket/11579] Add missing commas to validate_username_test

PHPBB3-11579
---
 tests/functions/validate_username_test.php | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

(limited to 'tests')

diff --git a/tests/functions/validate_username_test.php b/tests/functions/validate_username_test.php
index 9adfb63812..0819974e54 100644
--- a/tests/functions/validate_username_test.php
+++ b/tests/functions/validate_username_test.php
@@ -46,7 +46,7 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 				'foobar_quot'		=> array('INVALID_CHARS'),
 				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
 				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('USERNAME_TAKEN')
+				'group_taken'		=> array('USERNAME_TAKEN'),
 			)),
 			array('USERNAME_ALPHA_ONLY', array(
 				'foobar_allow'		=> array(),
@@ -59,7 +59,7 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 				'foobar_quot'		=> array('INVALID_CHARS'),
 				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
 				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('INVALID_CHARS')
+				'group_taken'		=> array('INVALID_CHARS'),
 			)),
 			array('USERNAME_ALPHA_SPACERS', array(
 				'foobar_allow'		=> array(),
@@ -72,7 +72,7 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 				'foobar_quot'		=> array('INVALID_CHARS'),
 				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
 				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('USERNAME_TAKEN')
+				'group_taken'		=> array('USERNAME_TAKEN'),
 			)),
 			array('USERNAME_LETTER_NUM', array(
 				'foobar_allow'		=> array(),
@@ -85,7 +85,7 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 				'foobar_quot'		=> array('INVALID_CHARS'),
 				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
 				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('INVALID_CHARS')
+				'group_taken'		=> array('INVALID_CHARS'),
 			)),
 			array('USERNAME_LETTER_NUM_SPACERS', array(
 				'foobar_allow'		=> array(),
@@ -98,7 +98,7 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 				'foobar_quot'		=> array('INVALID_CHARS'),
 				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
 				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('USERNAME_TAKEN')
+				'group_taken'		=> array('USERNAME_TAKEN'),
 			)),
 			array('USERNAME_ASCII', array(
 				'foobar_allow'		=> array(),
@@ -111,7 +111,7 @@ class phpbb_functions_validate_data_test extends phpbb_database_test_case
 				'foobar_quot'		=> array('INVALID_CHARS'),
 				'barfoo_disallow'	=> array('USERNAME_DISALLOWED'),
 				'admin_taken'		=> array('USERNAME_TAKEN'),
-				'group_taken'		=> array('USERNAME_TAKEN')
+				'group_taken'		=> array('USERNAME_TAKEN'),
 			)),
 		);
 	}
-- 
cgit v1.2.1


From 7abc85cedac4fdde514f740dfaad24b2414ebce8 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Wed, 5 Jun 2013 00:29:07 +0530
Subject: [ticket/10820] Change function call in tests

PHPBB3-10820
---
 tests/download/http_user_agent_test.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/download/http_user_agent_test.php b/tests/download/http_user_agent_test.php
index e08fb7a3f1..d85e7b0d08 100644
--- a/tests/download/http_user_agent_test.php
+++ b/tests/download/http_user_agent_test.php
@@ -92,6 +92,6 @@ class phpbb_download_http_user_agent_test extends phpbb_test_case
 	*/
 	public function test_is_greater_ie7($user_agent, $expected)
 	{
-		$this->assertEquals($expected, phpbb_is_greater_ie7($user_agent));
+		$this->assertEquals($expected, phpbb_is_greater_ie_version($user_agent, 7));
 	}
 }
-- 
cgit v1.2.1


From a8a1c75a70c0c167ea3f6831a9800a27525c7d89 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Wed, 5 Jun 2013 00:29:34 +0530
Subject: [ticket/10820] Fix copyright

PHPBB3-10820
---
 tests/download/http_user_agent_test.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/download/http_user_agent_test.php b/tests/download/http_user_agent_test.php
index d85e7b0d08..4e759e990d 100644
--- a/tests/download/http_user_agent_test.php
+++ b/tests/download/http_user_agent_test.php
@@ -2,7 +2,7 @@
 /**
 *
 * @package testing
-* @copyright (c) 2010 phpBB Group
+* @copyright (c) 2013 phpBB Group
 * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
 *
 */
-- 
cgit v1.2.1


From a8bb0330959e67e2e7a81bffdedc46d626912f3e Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Wed, 5 Jun 2013 00:57:25 +0530
Subject: [ticket/10820] Rename function

PHPBB3-10820
---
 tests/download/http_user_agent_test.php | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'tests')

diff --git a/tests/download/http_user_agent_test.php b/tests/download/http_user_agent_test.php
index 4e759e990d..179477f36a 100644
--- a/tests/download/http_user_agent_test.php
+++ b/tests/download/http_user_agent_test.php
@@ -11,7 +11,7 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/functions_download.php';
 
 class phpbb_download_http_user_agent_test extends phpbb_test_case
 {
-	public function user_agents()
+	public function user_agents_check_greater_ie7()
 	{
 		return array(
 			// user agent
@@ -88,7 +88,7 @@ class phpbb_download_http_user_agent_test extends phpbb_test_case
 	}
 
 	/**
-	* @dataProvider user_agents
+	* @dataProvider user_agents_check_greater_ie7
 	*/
 	public function test_is_greater_ie7($user_agent, $expected)
 	{
-- 
cgit v1.2.1


From db5bff87157818e424e1717e3047606f53ca3807 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Wed, 5 Jun 2013 02:22:51 +0530
Subject: [ticket/10820] Add test cases More test cases to check against
 different versions

PHPBB3-10820
---
 tests/download/http_user_agent_test.php | 41 +++++++++++++++++++++++++++++----
 1 file changed, 37 insertions(+), 4 deletions(-)

(limited to 'tests')

diff --git a/tests/download/http_user_agent_test.php b/tests/download/http_user_agent_test.php
index 179477f36a..166a186913 100644
--- a/tests/download/http_user_agent_test.php
+++ b/tests/download/http_user_agent_test.php
@@ -11,87 +11,120 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/functions_download.php';
 
 class phpbb_download_http_user_agent_test extends phpbb_test_case
 {
-	public function user_agents_check_greater_ie7()
+	public function user_agents_check_greater_ie_version()
 	{
 		return array(
 			// user agent
+			// IE version
 			// expected
 			array(
 				'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
+				7,
 				true,
 			),
 			array(
 				'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
+				7,
 				true,
 			),
 			array(
 				'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)',
+				7,
 				true,
 			),
 			array(
 				'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)',
+				7,
 				false,
 			),
 			array(
 				'Mozilla/4.0 (compatible; MSIE 6.1; Windows XP; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',
+				7,
 				false,
 			),
 			array(
 				'Mozilla/4.0 (compatible; MSIE 6.01; Windows NT 6.0)',
+				7,
 				false,
 			),
 			array(
 				'Mozilla/5.0 (Windows; U; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)',
+				7,
 				false,
 			),
 			array(
 				'Mozilla/5.0 (Windows NT 6.2; Win64; x64;) Gecko/20100101 Firefox/20.0',
+				7,
 				false,
 			),
 			array(
 				'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1464.0 Safari/537.36',
+				7,
 				false,
 			),
 			array(
 				'Googlebot-Image/1.0',
+				7,
 				false,
 			),
 			array(
 				'Googlebot/2.1 ( http://www.google.com/bot.html)',
+				7,
 				false,
 			),
 			array(
 				'Lynx/2.8.3dev.9 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6',
+				7,
 				false,
 			),
 			array(
 				'Links (0.9x; Linux 2.4.7-10 i686)',
+				7,
 				false,
 			),
 			array(
 				'Opera/9.60 (Windows NT 5.1; U; de) Presto/2.1.1',
+				7,
 				false,
 			),
 			array(
 				'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT;)',
+				7,
 				false,
 			),
 			array(
 				'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 4.0) Opera 6.01 [en]',
+				7,
 				false,
 			),
 			array(
 				'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.24',
+				7,
+				false,
+			),
+			array(
+				'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
+				8,
+				true,
+			),
+			array(
+				'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)',
+				9,
+				true,
+			),
+			array(
+				'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB7.4; InfoPath.2; SV1; .NET CLR 3.3.69573; WOW64; en-US)',
+				10,
 				false,
 			),
 		);
 	}
 
 	/**
-	* @dataProvider user_agents_check_greater_ie7
+	* @dataProvider user_agents_check_greater_ie_version
 	*/
-	public function test_is_greater_ie7($user_agent, $expected)
+	public function test_is_greater_ie_version($user_agent, $version, $expected)
 	{
-		$this->assertEquals($expected, phpbb_is_greater_ie_version($user_agent, 7));
+		$this->assertEquals($expected, phpbb_is_greater_ie_version($user_agent, $version));
 	}
 }
-- 
cgit v1.2.1


From 6a77ee1f30961f6363818691f91162fa67618872 Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Wed, 5 Jun 2013 17:05:10 +0200
Subject: [ticket/11579] Do not extend validate_data_helper

PHPBB3-11579
---
 tests/functions/validate_data_helper.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/functions/validate_data_helper.php b/tests/functions/validate_data_helper.php
index 94ddf60429..b92a3aa5eb 100644
--- a/tests/functions/validate_data_helper.php
+++ b/tests/functions/validate_data_helper.php
@@ -7,7 +7,7 @@
 *
 */
 
-class phpbb_functions_validate_data_helper extends PHPUnit_Framework_TestCase
+class phpbb_functions_validate_data_helper
 {
 	protected $test_case;
 
-- 
cgit v1.2.1


From c6ba894acdfdf5b0800dc3903d01605ddd83e8e9 Mon Sep 17 00:00:00 2001
From: Marc Alexander <admin@m-a-styles.de>
Date: Wed, 5 Jun 2013 17:36:20 +0200
Subject: [ticket/11579] Add method for validating emails for valid MX and mark
 as slow

A method for setting up the prerequisities also has been added in order to
reduce the amount of necessary code.

PHPBB3-11579
---
 tests/functions/validate_email_test.php | 32 +++++++++++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

(limited to 'tests')

diff --git a/tests/functions/validate_email_test.php b/tests/functions/validate_email_test.php
index 93b5ba0896..9a6ce39251 100644
--- a/tests/functions/validate_email_test.php
+++ b/tests/functions/validate_email_test.php
@@ -32,14 +32,24 @@ class phpbb_functions_validate_email_test extends phpbb_database_test_case
 		$this->helper = new phpbb_functions_validate_data_helper($this);
 	}
 
-	public function test_validate_email()
+	/**
+	* Get validation prerequesites
+	*
+	* @param bool $check_mx Whether mx records should be checked
+	*/
+	protected function set_validation_prerequisites($check_mx)
 	{
 		global $config, $db, $user;
 
-		$config['email_check_mx'] = true;
+		$config['email_check_mx'] = $check_mx;
 		$db = $this->db;
 		$user = $this->user;
 		$user->optionset('banned_users', array('banned@example.com'));
+	}
+
+	public function test_validate_email()
+	{
+		$this->set_validation_prerequisites(false);
 
 		$this->helper->assert_valid_data(array(
 			'empty' => array(
@@ -72,9 +82,25 @@ class phpbb_functions_validate_email_test extends phpbb_database_test_case
 				'banned@example.com',
 				array('email'),
 			),
+		));
+	}
+
+	/**
+	* @group slow
+	*/
+	public function test_validate_email_mx()
+	{
+		$this->set_validation_prerequisites(true);
+
+		$this->helper->assert_valid_data(array(
+			'valid' => array(
+				array(),
+				'foobar@phpbb.com',
+				array('email'),
+			),
 			'no_mx' => array(
 				array('DOMAIN_NO_MX_RECORD'),
-				'test@wwrrrhhghgghgh.ttv',
+				'test@does-not-exist.phpbb.com',
 				array('email'),
 			),
 		));
-- 
cgit v1.2.1


From 35064086377c3f3334e02ca153b008b0502fbdee Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Sat, 8 Jun 2013 15:26:35 +0200
Subject: [ticket/11550] Fix copying the fixtures in
 extension_permission_lang_test.php

PHPBB3-11550
---
 tests/functional/extension_permission_lang_test.php | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/functional/extension_permission_lang_test.php b/tests/functional/extension_permission_lang_test.php
index 9a251e8645..04c3a9d497 100644
--- a/tests/functional/extension_permission_lang_test.php
+++ b/tests/functional/extension_permission_lang_test.php
@@ -45,7 +45,10 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
 		}
 
 		// Copy our ext/ files from the test case to the board
-		self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/fixtures/ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture));
+		foreach (self::$fixtures as $fixture)
+		{
+			self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/fixtures/ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture));
+		}
 	}
 
 	/**
-- 
cgit v1.2.1


From c8ee6cb0c200b7e64ebbae11806f4daddfd8d93d Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Sat, 8 Jun 2013 17:00:27 +0200
Subject: [ticket/11550] Move functionality for copying/restoring to test case
 helpers

PHPBB3-11550
---
 tests/test_framework/phpbb_test_case_helpers.php | 44 ++++++++++++++++++++++++
 1 file changed, 44 insertions(+)

(limited to 'tests')

diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php
index 20ae384f21..0e0b5c2a8f 100644
--- a/tests/test_framework/phpbb_test_case_helpers.php
+++ b/tests/test_framework/phpbb_test_case_helpers.php
@@ -18,6 +18,50 @@ class phpbb_test_case_helpers
 		$this->test_case = $test_case;
 	}
 
+	private $copied_files = array();
+
+	public function copy_ext_fixtures($fixtures_dir, $fixtures)
+	{
+		global $phpbb_root_path;
+
+		$this->copied_files = array();
+
+		if (file_exists($phpbb_root_path . 'ext/'))
+		{
+			// First, move any extensions setup on the board to a temp directory
+			$this->copied_files = $this->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
+
+			// Then empty the ext/ directory on the board (for accurate test cases)
+			$this->empty_dir($phpbb_root_path . 'ext/');
+		}
+
+		// Copy our ext/ files from the test case to the board
+		foreach ($fixtures as $fixture)
+		{
+			$this->copied_files = array_merge($this->copied_files, $this->copy_dir($fixtures_dir . 'ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture));
+		}
+	}
+
+	public function restore_original_ext_dir()
+	{
+		global $phpbb_root_path;
+
+		// Copy back the board installed extensions from the temp directory
+		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
+		{
+			$this->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
+		}
+
+		// Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
+		$this->remove_files($this->copied_files);
+		$this->copied_files = array();
+
+		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
+		{
+			$this->empty_dir($phpbb_root_path . 'store/temp_ext/');
+		}
+	}
+
 	public function setExpectedTriggerError($errno, $message = '')
 	{
 		$exceptionName = '';
-- 
cgit v1.2.1


From a61ab1e5e4bbe786d3f500438bb0dd6ca395989e Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Sat, 8 Jun 2013 17:02:31 +0200
Subject: [ticket/11550] Use new functionality from the test case helpers

Instead of duplicating the extension copy code, it is now in the helpers.
So we remove the code from existing tests.

PHPBB3-11550
---
 tests/functional/extension_acp_test.php            | 54 ++++++----------------
 tests/functional/extension_controller_test.php     | 41 +++-------------
 tests/functional/extension_module_test.php         | 38 ++++-----------
 .../functional/extension_permission_lang_test.php  | 39 ++--------------
 tests/functional/metadata_manager_test.php         | 24 ++--------
 tests/test_framework/phpbb_test_case_helpers.php   |  2 +-
 6 files changed, 39 insertions(+), 159 deletions(-)

(limited to 'tests')

diff --git a/tests/functional/extension_acp_test.php b/tests/functional/extension_acp_test.php
index 9badab8ced..ada17397d7 100644
--- a/tests/functional/extension_acp_test.php
+++ b/tests/functional/extension_acp_test.php
@@ -12,34 +12,33 @@
 */
 class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
 {
-	static private $copied_files = array();
 	static private $helper;
 
+	static protected $fixtures = array(
+		'',
+	);
+
 	/**
 	* This should only be called once before the tests are run.
-	* This is used to copy the extensions to the phpBB install
+	* This is used to copy the fixtures to the phpBB install
 	*/
 	static public function setUpBeforeClass()
 	{
-		global $phpbb_root_path;
-
 		parent::setUpBeforeClass();
 
 		self::$helper = new phpbb_test_case_helpers(self);
+		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
+	}
 
-		self::$copied_files = array();
-
-		if (file_exists($phpbb_root_path . 'ext/'))
-		{
-			// First, move any extensions setup on the board to a temp directory
-			self::$copied_files = self::$helper->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
-
-			// Then empty the ext/ directory on the board (for accurate test cases)
-			self::$helper->empty_dir($phpbb_root_path . 'ext/');
-		}
+	/**
+	* This should only be called once after the tests are run.
+	* This is used to remove the fixtures from the phpBB install
+	*/
+	static public function tearDownAfterClass()
+	{
+		parent::tearDownAfterClass();
 
-		// Copy our ext/ files from the test case to the board
-		self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/../extension/ext/', $phpbb_root_path . 'ext/'));
+		self::$helper->restore_original_ext_dir();
 	}
 
 	public function setUp()
@@ -84,29 +83,6 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
 		$this->add_lang('acp/extensions');
 	}
 
-	/**
-	* This should only be called once after the tests are run.
-	* This is used to remove the files copied to the phpBB install
-	*/
-	static public function tearDownAfterClass()
-	{
-		global $phpbb_root_path;
-
-		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
-		{
-			// Copy back the board installed extensions from the temp directory
-			self::$helper->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
-		}
-
-		// Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
-		self::$helper->remove_files(self::$copied_files);
-
-		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
-		{
-			self::$helper->empty_dir($phpbb_root_path . 'store/temp_ext/');
-		}
-	}
-
 	public function test_list()
 	{
         $crawler = self::request('GET', 'adm/index.php?i=acp_extensions&mode=main&sid=' . $this->sid);
diff --git a/tests/functional/extension_controller_test.php b/tests/functional/extension_controller_test.php
index a09035cb2b..c789ea160d 100644
--- a/tests/functional/extension_controller_test.php
+++ b/tests/functional/extension_controller_test.php
@@ -15,6 +15,8 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
 {
 	protected $phpbb_extension_manager;
 
+	static private $helper;
+
 	static protected $fixtures = array(
 		'foo/bar/config/routing.yml',
 		'foo/bar/config/services.yml',
@@ -28,30 +30,10 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
 	*/
 	static public function setUpBeforeClass()
 	{
-		global $phpbb_root_path;
 		parent::setUpBeforeClass();
 
-		$directories = array(
-			$phpbb_root_path . 'ext/foo/bar/',
-			$phpbb_root_path . 'ext/foo/bar/config/',
-			$phpbb_root_path . 'ext/foo/bar/controller/',
-			$phpbb_root_path . 'ext/foo/bar/styles/prosilver/template',
-		);
-
-		foreach ($directories as $dir)
-		{
-			if (!is_dir($dir))
-			{
-				mkdir($dir, 0777, true);
-			}
-		}
-
-		foreach (self::$fixtures as $fixture)
-		{
-			copy(
-				"tests/functional/fixtures/ext/$fixture",
-				"{$phpbb_root_path}ext/$fixture");
-		}
+		self::$helper = new phpbb_test_case_helpers(self);
+		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
 	}
 
 	/**
@@ -60,20 +42,9 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
 	*/
 	static public function tearDownAfterClass()
 	{
-		global $phpbb_root_path;
-
-		foreach (self::$fixtures as $fixture)
-		{
-			unlink("{$phpbb_root_path}ext/$fixture");
-		}
+		parent::tearDownAfterClass();
 
-		rmdir("{$phpbb_root_path}ext/foo/bar/config");
-		rmdir("{$phpbb_root_path}ext/foo/bar/controller");
-		rmdir("{$phpbb_root_path}ext/foo/bar/styles/prosilver/template");
-		rmdir("{$phpbb_root_path}ext/foo/bar/styles/prosilver");
-		rmdir("{$phpbb_root_path}ext/foo/bar/styles");
-		rmdir("{$phpbb_root_path}ext/foo/bar");
-		rmdir("{$phpbb_root_path}ext/foo");
+		self::$helper->restore_original_ext_dir();
 	}
 
 	public function setUp()
diff --git a/tests/functional/extension_module_test.php b/tests/functional/extension_module_test.php
index c8686e0ac6..e95f0b7e3f 100644
--- a/tests/functional/extension_module_test.php
+++ b/tests/functional/extension_module_test.php
@@ -16,33 +16,23 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/acp/acp_modules.php';
 class phpbb_functional_extension_module_test extends phpbb_functional_test_case
 {
 	protected $phpbb_extension_manager;
-	static private $copied_files = array();
+
 	static private $helper;
 
+	static protected $fixtures = array(
+		'',
+	);
+
 	/**
 	* This should only be called once before the tests are run.
 	* This is used to copy the fixtures to the phpBB install
 	*/
 	static public function setUpBeforeClass()
 	{
-		global $phpbb_root_path;
 		parent::setUpBeforeClass();
 
 		self::$helper = new phpbb_test_case_helpers(self);
-
-		self::$copied_files = array();
-
-		if (file_exists($phpbb_root_path . 'ext/'))
-		{
-			// First, move any extensions setup on the board to a temp directory
-			self::$copied_files = self::$helper->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
-
-			// Then empty the ext/ directory on the board (for accurate test cases)
-			self::$helper->empty_dir($phpbb_root_path . 'ext/');
-		}
-
-		// Copy our ext/ files from the test case to the board
-		self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/fixtures/ext/', $phpbb_root_path . 'ext/'));
+		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
 	}
 
 	/**
@@ -51,21 +41,9 @@ class phpbb_functional_extension_module_test extends phpbb_functional_test_case
 	*/
 	static public function tearDownAfterClass()
 	{
-		global $phpbb_root_path;
-
-		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
-		{
-			// Copy back the board installed extensions from the temp directory
-			self::$helper->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
-		}
-
-		// Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
-		self::$helper->remove_files(self::$copied_files);
+		parent::tearDownAfterClass();
 
-		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
-		{
-			self::$helper->empty_dir($phpbb_root_path . 'store/temp_ext/');
-		}
+		self::$helper->restore_original_ext_dir();
 	}
 
 	public function setUp()
diff --git a/tests/functional/extension_permission_lang_test.php b/tests/functional/extension_permission_lang_test.php
index 04c3a9d497..fe8ea95cf0 100644
--- a/tests/functional/extension_permission_lang_test.php
+++ b/tests/functional/extension_permission_lang_test.php
@@ -16,8 +16,6 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
 
 	static private $helper;
 
-	static private $copied_files = array();
-
 	static protected $fixtures = array(
 		'foo/bar/language/en/',
 	);
@@ -28,27 +26,10 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
 	*/
 	static public function setUpBeforeClass()
 	{
-		global $phpbb_root_path;
 		parent::setUpBeforeClass();
 
 		self::$helper = new phpbb_test_case_helpers(self);
-
-		self::$copied_files = array();
-
-		if (file_exists($phpbb_root_path . 'ext/'))
-		{
-			// First, move any extensions setup on the board to a temp directory
-			self::$copied_files = self::$helper->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
-
-			// Then empty the ext/ directory on the board (for accurate test cases)
-			self::$helper->empty_dir($phpbb_root_path . 'ext/');
-		}
-
-		// Copy our ext/ files from the test case to the board
-		foreach (self::$fixtures as $fixture)
-		{
-			self::$copied_files = array_merge(self::$copied_files, self::$helper->copy_dir(dirname(__FILE__) . '/fixtures/ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture));
-		}
+		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
 	}
 
 	/**
@@ -57,21 +38,9 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
 	*/
 	static public function tearDownAfterClass()
 	{
-		global $phpbb_root_path;
-		
-		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
-		{
-			// Copy back the board installed extensions from the temp directory
-			self::$helper->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
-		}
-
-		// Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
-		self::$helper->remove_files(self::$copied_files);
-
-		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
-		{
-			self::$helper->empty_dir($phpbb_root_path . 'store/temp_ext/');
-		}
+		parent::tearDownAfterClass();
+
+		self::$helper->restore_original_ext_dir();
 	}
 
 	public function setUp()
diff --git a/tests/functional/metadata_manager_test.php b/tests/functional/metadata_manager_test.php
index 7e98b0d025..9d36a41354 100644
--- a/tests/functional/metadata_manager_test.php
+++ b/tests/functional/metadata_manager_test.php
@@ -16,7 +16,7 @@ class phpbb_functional_metadata_manager_test extends phpbb_functional_test_case
 {
 	protected $phpbb_extension_manager;
 
-	static private $helpers;
+	static private $helper;
 
 	static protected $fixtures = array(
 		'foo/bar/',
@@ -28,20 +28,10 @@ class phpbb_functional_metadata_manager_test extends phpbb_functional_test_case
 	*/
 	static public function setUpBeforeClass()
 	{
-		global $phpbb_root_path;
 		parent::setUpBeforeClass();
 
-		self::$helpers = new phpbb_test_case_helpers(self);
-
-		if (!file_exists($phpbb_root_path . 'ext/foo/bar/'))
-		{
-			self::$helpers->makedirs($phpbb_root_path . 'ext/foo/bar/');
-		}
-
-		foreach (self::$fixtures as $fixture)
-		{
-			self::$helpers->copy_dir(dirname(__FILE__) . '/fixtures/ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture);
-		}
+		self::$helper = new phpbb_test_case_helpers(self);
+		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
 	}
 
 	/**
@@ -50,13 +40,9 @@ class phpbb_functional_metadata_manager_test extends phpbb_functional_test_case
 	*/
 	static public function tearDownAfterClass()
 	{
-		global $phpbb_root_path;
+		parent::tearDownAfterClass();
 
-		foreach (self::$fixtures as $fixture)
-		{
-			self::$helpers->empty_dir($phpbb_root_path . 'ext/' . $fixture);
-		}
-		self::$helpers->empty_dir($phpbb_root_path . 'ext/foo/');
+		self::$helper->restore_original_ext_dir();
 	}
 
 	public function setUp()
diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php
index 0e0b5c2a8f..367bd3b142 100644
--- a/tests/test_framework/phpbb_test_case_helpers.php
+++ b/tests/test_framework/phpbb_test_case_helpers.php
@@ -38,7 +38,7 @@ class phpbb_test_case_helpers
 		// Copy our ext/ files from the test case to the board
 		foreach ($fixtures as $fixture)
 		{
-			$this->copied_files = array_merge($this->copied_files, $this->copy_dir($fixtures_dir . 'ext/' . $fixture, $phpbb_root_path . 'ext/' . $fixture));
+			$this->copied_files = array_merge($this->copied_files, $this->copy_dir($fixtures_dir . $fixture, $phpbb_root_path . 'ext/' . $fixture));
 		}
 	}
 
-- 
cgit v1.2.1


From 7546c3a7a76a7293b3c1524097098f3f19c39666 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Sat, 8 Jun 2013 17:14:20 +0200
Subject: [ticket/11550] Fixtures should only be directories not files

PHPBB3-11550
---
 tests/functional/extension_controller_test.php | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

(limited to 'tests')

diff --git a/tests/functional/extension_controller_test.php b/tests/functional/extension_controller_test.php
index c789ea160d..ea5a51291d 100644
--- a/tests/functional/extension_controller_test.php
+++ b/tests/functional/extension_controller_test.php
@@ -18,10 +18,9 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
 	static private $helper;
 
 	static protected $fixtures = array(
-		'foo/bar/config/routing.yml',
-		'foo/bar/config/services.yml',
-		'foo/bar/controller/controller.php',
-		'foo/bar/styles/prosilver/template/foo_bar_body.html',
+		'foo/bar/config/',
+		'foo/bar/controller/',
+		'foo/bar/styles/prosilver/template/',
 	);
 
 	/**
-- 
cgit v1.2.1


From 0b3f18208354aabc5b9c8901c2950e9626c3e5f3 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Sun, 9 Jun 2013 17:40:33 +0200
Subject: [ticket/11550] We use a different fixture set for
 extension_acp_test.php

PHPBB3-11550
---
 tests/functional/extension_acp_test.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/functional/extension_acp_test.php b/tests/functional/extension_acp_test.php
index ada17397d7..5f8e3762a6 100644
--- a/tests/functional/extension_acp_test.php
+++ b/tests/functional/extension_acp_test.php
@@ -27,7 +27,7 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
 		parent::setUpBeforeClass();
 
 		self::$helper = new phpbb_test_case_helpers(self);
-		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
+		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/../extension/ext/', self::$fixtures);
 	}
 
 	/**
-- 
cgit v1.2.1


From 68d15f0f14dfdc827e1169a73c194a9e30795605 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Tue, 11 Jun 2013 11:14:24 +0200
Subject: [ticket/11550] Move comments to correct function

PHPBB3-11550
---
 tests/functional/extension_acp_test.php             | 8 --------
 tests/functional/extension_controller_test.php      | 8 --------
 tests/functional/extension_module_test.php          | 8 --------
 tests/functional/extension_permission_lang_test.php | 8 --------
 tests/functional/metadata_manager_test.php          | 8 --------
 tests/test_framework/phpbb_test_case_helpers.php    | 8 ++++++++
 6 files changed, 8 insertions(+), 40 deletions(-)

(limited to 'tests')

diff --git a/tests/functional/extension_acp_test.php b/tests/functional/extension_acp_test.php
index 5f8e3762a6..b36f2c6aac 100644
--- a/tests/functional/extension_acp_test.php
+++ b/tests/functional/extension_acp_test.php
@@ -18,10 +18,6 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
 		'',
 	);
 
-	/**
-	* This should only be called once before the tests are run.
-	* This is used to copy the fixtures to the phpBB install
-	*/
 	static public function setUpBeforeClass()
 	{
 		parent::setUpBeforeClass();
@@ -30,10 +26,6 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
 		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/../extension/ext/', self::$fixtures);
 	}
 
-	/**
-	* This should only be called once after the tests are run.
-	* This is used to remove the fixtures from the phpBB install
-	*/
 	static public function tearDownAfterClass()
 	{
 		parent::tearDownAfterClass();
diff --git a/tests/functional/extension_controller_test.php b/tests/functional/extension_controller_test.php
index ea5a51291d..9ddf1e3e5c 100644
--- a/tests/functional/extension_controller_test.php
+++ b/tests/functional/extension_controller_test.php
@@ -23,10 +23,6 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
 		'foo/bar/styles/prosilver/template/',
 	);
 
-	/**
-	* This should only be called once before the tests are run.
-	* This is used to copy the fixtures to the phpBB install
-	*/
 	static public function setUpBeforeClass()
 	{
 		parent::setUpBeforeClass();
@@ -35,10 +31,6 @@ class phpbb_functional_extension_controller_test extends phpbb_functional_test_c
 		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
 	}
 
-	/**
-	* This should only be called once after the tests are run.
-	* This is used to remove the fixtures from the phpBB install
-	*/
 	static public function tearDownAfterClass()
 	{
 		parent::tearDownAfterClass();
diff --git a/tests/functional/extension_module_test.php b/tests/functional/extension_module_test.php
index e95f0b7e3f..12113bedac 100644
--- a/tests/functional/extension_module_test.php
+++ b/tests/functional/extension_module_test.php
@@ -23,10 +23,6 @@ class phpbb_functional_extension_module_test extends phpbb_functional_test_case
 		'',
 	);
 
-	/**
-	* This should only be called once before the tests are run.
-	* This is used to copy the fixtures to the phpBB install
-	*/
 	static public function setUpBeforeClass()
 	{
 		parent::setUpBeforeClass();
@@ -35,10 +31,6 @@ class phpbb_functional_extension_module_test extends phpbb_functional_test_case
 		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
 	}
 
-	/**
-	* This should only be called once after the tests are run.
-	* This is used to remove the fixtures from the phpBB install
-	*/
 	static public function tearDownAfterClass()
 	{
 		parent::tearDownAfterClass();
diff --git a/tests/functional/extension_permission_lang_test.php b/tests/functional/extension_permission_lang_test.php
index fe8ea95cf0..6c1720735c 100644
--- a/tests/functional/extension_permission_lang_test.php
+++ b/tests/functional/extension_permission_lang_test.php
@@ -20,10 +20,6 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
 		'foo/bar/language/en/',
 	);
 
-	/**
-	* This should only be called once before the tests are run.
-	* This is used to copy the fixtures to the phpBB install
-	*/
 	static public function setUpBeforeClass()
 	{
 		parent::setUpBeforeClass();
@@ -32,10 +28,6 @@ class phpbb_functional_extension_permission_lang_test extends phpbb_functional_t
 		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
 	}
 
-	/**
-	* This should only be called once after the tests are run.
-	* This is used to remove the fixtures from the phpBB install
-	*/
 	static public function tearDownAfterClass()
 	{
 		parent::tearDownAfterClass();
diff --git a/tests/functional/metadata_manager_test.php b/tests/functional/metadata_manager_test.php
index 9d36a41354..c55e7373ea 100644
--- a/tests/functional/metadata_manager_test.php
+++ b/tests/functional/metadata_manager_test.php
@@ -22,10 +22,6 @@ class phpbb_functional_metadata_manager_test extends phpbb_functional_test_case
 		'foo/bar/',
 	);
 
-	/**
-	* This should only be called once before the tests are run.
-	* This is used to copy the fixtures to the phpBB install
-	*/
 	static public function setUpBeforeClass()
 	{
 		parent::setUpBeforeClass();
@@ -34,10 +30,6 @@ class phpbb_functional_metadata_manager_test extends phpbb_functional_test_case
 		self::$helper->copy_ext_fixtures(dirname(__FILE__) . '/fixtures/ext/', self::$fixtures);
 	}
 
-	/**
-	* This should only be called once after the tests are run.
-	* This is used to remove the fixtures from the phpBB install
-	*/
 	static public function tearDownAfterClass()
 	{
 		parent::tearDownAfterClass();
diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php
index 367bd3b142..1b08f2368f 100644
--- a/tests/test_framework/phpbb_test_case_helpers.php
+++ b/tests/test_framework/phpbb_test_case_helpers.php
@@ -20,6 +20,10 @@ class phpbb_test_case_helpers
 
 	private $copied_files = array();
 
+	/**
+	* This should only be called once before the tests are run.
+	* This is used to copy the fixtures to the phpBB install
+	*/
 	public function copy_ext_fixtures($fixtures_dir, $fixtures)
 	{
 		global $phpbb_root_path;
@@ -42,6 +46,10 @@ class phpbb_test_case_helpers
 		}
 	}
 
+	/**
+	* This should only be called once after the tests are run.
+	* This is used to remove the fixtures from the phpBB install
+	*/
 	public function restore_original_ext_dir()
 	{
 		global $phpbb_root_path;
-- 
cgit v1.2.1


From 007cd6177630c3f70521be130a18f0139b58c184 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Tue, 11 Jun 2013 11:37:28 +0200
Subject: [ticket/11550] Specify a valid path so it's clearer that it must be a
 path

PHPBB3-11550
---
 tests/functional/extension_acp_test.php    | 2 +-
 tests/functional/extension_module_test.php | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'tests')

diff --git a/tests/functional/extension_acp_test.php b/tests/functional/extension_acp_test.php
index b36f2c6aac..8614c0c963 100644
--- a/tests/functional/extension_acp_test.php
+++ b/tests/functional/extension_acp_test.php
@@ -15,7 +15,7 @@ class phpbb_functional_extension_acp_test extends phpbb_functional_test_case
 	static private $helper;
 
 	static protected $fixtures = array(
-		'',
+		'./',
 	);
 
 	static public function setUpBeforeClass()
diff --git a/tests/functional/extension_module_test.php b/tests/functional/extension_module_test.php
index 12113bedac..c573ea5410 100644
--- a/tests/functional/extension_module_test.php
+++ b/tests/functional/extension_module_test.php
@@ -20,7 +20,7 @@ class phpbb_functional_extension_module_test extends phpbb_functional_test_case
 	static private $helper;
 
 	static protected $fixtures = array(
-		'',
+		'./',
 	);
 
 	static public function setUpBeforeClass()
-- 
cgit v1.2.1


From 5e8054f04598c449799a594fcb96cfeb8abf925a Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Tue, 11 Jun 2013 13:24:55 +0200
Subject: [ticket/11601] Split post_setup_synchronisation logic from xml
 parsing

PHPBB3-11601
---
 .../phpbb_database_test_connection_manager.php     | 27 +++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

(limited to 'tests')

diff --git a/tests/test_framework/phpbb_database_test_connection_manager.php b/tests/test_framework/phpbb_database_test_connection_manager.php
index bcd52b1794..30f1fa6589 100644
--- a/tests/test_framework/phpbb_database_test_connection_manager.php
+++ b/tests/test_framework/phpbb_database_test_connection_manager.php
@@ -480,12 +480,33 @@ class phpbb_database_test_connection_manager
 	* @return null
 	*/
 	public function post_setup_synchronisation($xml_data_set)
+	{
+		$table_names = $xml_data_set->getTableNames();
+
+		$tables = array();
+		foreach ($table_names as $table)
+		{
+			$tables[$table] = $xml_data_set->getTableMetaData($table)->getColumns();
+		}
+
+		$this->database_synchronisation($tables);
+	}
+
+	/**
+	* Performs synchronisations on the database after a fixture has been loaded
+	*
+	* @param	array	$table_column_map		Array of tables/columns to synchronise
+	*											array(table1 => array(column1, column2))
+	*
+	* @return null
+	*/
+	public function database_synchronisation($table_column_map)
 	{
 		$this->ensure_connected(__METHOD__);
 		$queries = array();
 
-		// Get escaped versions of the table names used in the fixture
-		$table_names = array_map(array($this->pdo, 'PDO::quote'), $xml_data_set->getTableNames());
+		// Get escaped versions of the table names to synchronise
+		$table_names = array_map(array($this->pdo, 'PDO::quote'), array_keys($table_column_map));
 
 		switch ($this->config['dbms'])
 		{
@@ -542,7 +563,7 @@ class phpbb_database_test_connection_manager
 				while ($row = $result->fetch(PDO::FETCH_ASSOC))
 				{
 					// Get the columns used in the fixture for this table
-					$column_names = $xml_data_set->getTableMetaData($row['table_name'])->getColumns();
+					$column_names = $table_column_map[$row['table_name']];
 
 					// Skip sequences that weren't specified in the fixture
 					if (!in_array($row['column_name'], $column_names))
-- 
cgit v1.2.1


From 33bce3fac6c29787e121e5d000251353637dd422 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Tue, 11 Jun 2013 13:26:17 +0200
Subject: [ticket/11601] Add protected method for database sync and call it

PHPBB3-11601
---
 tests/test_framework/phpbb_database_test_case.php | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

(limited to 'tests')

diff --git a/tests/test_framework/phpbb_database_test_case.php b/tests/test_framework/phpbb_database_test_case.php
index beddece470..28d3a716f0 100644
--- a/tests/test_framework/phpbb_database_test_case.php
+++ b/tests/test_framework/phpbb_database_test_case.php
@@ -62,6 +62,21 @@ abstract class phpbb_database_test_case extends PHPUnit_Extensions_Database_Test
 		}
 	}
 
+	/**
+	* Performs synchronisations for a given table/column set on the database
+	*
+	* @param	array	$table_column_map		Information about the tables/columns to synchronise
+	*
+	* @return null
+	*/
+	protected function database_synchronisation($table_column_map)
+	{
+		$config = $this->get_database_config();
+		$manager = $this->create_connection_manager($config);
+		$manager->connect();
+		$manager->database_synchronisation($table_column_map);
+	}
+
 	public function createXMLDataSet($path)
 	{
 		$db_config = $this->get_database_config();
-- 
cgit v1.2.1


From d02f98c63530454700661fc80354d66207ed8b02 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Tue, 11 Jun 2013 16:03:34 +0200
Subject: [ticket/11605] Use empty_dir to better delete files and dirs of
 extensions

PHPBB3-11605
---
 tests/test_framework/phpbb_test_case_helpers.php | 29 +++++-------------------
 1 file changed, 6 insertions(+), 23 deletions(-)

(limited to 'tests')

diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php
index 1b08f2368f..8c91d357b8 100644
--- a/tests/test_framework/phpbb_test_case_helpers.php
+++ b/tests/test_framework/phpbb_test_case_helpers.php
@@ -54,14 +54,18 @@ class phpbb_test_case_helpers
 	{
 		global $phpbb_root_path;
 
+		// Remove all of the files we copied from test ext -> board ext
+		$this->empty_dir($phpbb_root_path . 'ext/');
+
 		// Copy back the board installed extensions from the temp directory
 		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
 		{
 			$this->copy_dir($phpbb_root_path . 'store/temp_ext/', $phpbb_root_path . 'ext/');
+
+			// Remove all of the files we copied from board ext -> temp_ext
+			$this->empty_dir($phpbb_root_path . 'store/temp_ext/');
 		}
 
-		// Remove all of the files we copied around (from board ext -> temp_ext, from test ext -> board ext)
-		$this->remove_files($this->copied_files);
 		$this->copied_files = array();
 
 		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
@@ -254,27 +258,6 @@ class phpbb_test_case_helpers
 		return $copied_files;
 	}
 
-	/**
-	* Remove files/directories that are listed in an array
-	* Designed for use with $this->copy_dir()
-	*
-	* @param array $file_list
-	*/
-	public function remove_files($file_list)
-	{
-		foreach ($file_list as $file)
-		{
-			if (is_dir($file))
-			{
-				rmdir($file);
-			}
-			else
-			{
-				unlink($file);
-			}
-		}
-	}
-
 	/**
 	* Empty directory (remove any subdirectories/files below)
 	*
-- 
cgit v1.2.1


From fa8d5c7d209b616e9552e072e38242ef4e74aaca Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Tue, 11 Jun 2013 16:04:23 +0200
Subject: [ticket/11605] Remove unused copied_files property

PHPBB3-11605
---
 tests/test_framework/phpbb_test_case_helpers.php | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

(limited to 'tests')

diff --git a/tests/test_framework/phpbb_test_case_helpers.php b/tests/test_framework/phpbb_test_case_helpers.php
index 8c91d357b8..50b2bf03ec 100644
--- a/tests/test_framework/phpbb_test_case_helpers.php
+++ b/tests/test_framework/phpbb_test_case_helpers.php
@@ -18,8 +18,6 @@ class phpbb_test_case_helpers
 		$this->test_case = $test_case;
 	}
 
-	private $copied_files = array();
-
 	/**
 	* This should only be called once before the tests are run.
 	* This is used to copy the fixtures to the phpBB install
@@ -28,12 +26,10 @@ class phpbb_test_case_helpers
 	{
 		global $phpbb_root_path;
 
-		$this->copied_files = array();
-
 		if (file_exists($phpbb_root_path . 'ext/'))
 		{
 			// First, move any extensions setup on the board to a temp directory
-			$this->copied_files = $this->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
+			$this->copy_dir($phpbb_root_path . 'ext/', $phpbb_root_path . 'store/temp_ext/');
 
 			// Then empty the ext/ directory on the board (for accurate test cases)
 			$this->empty_dir($phpbb_root_path . 'ext/');
@@ -42,7 +38,7 @@ class phpbb_test_case_helpers
 		// Copy our ext/ files from the test case to the board
 		foreach ($fixtures as $fixture)
 		{
-			$this->copied_files = array_merge($this->copied_files, $this->copy_dir($fixtures_dir . $fixture, $phpbb_root_path . 'ext/' . $fixture));
+			$this->copy_dir($fixtures_dir . $fixture, $phpbb_root_path . 'ext/' . $fixture);
 		}
 	}
 
@@ -66,8 +62,6 @@ class phpbb_test_case_helpers
 			$this->empty_dir($phpbb_root_path . 'store/temp_ext/');
 		}
 
-		$this->copied_files = array();
-
 		if (file_exists($phpbb_root_path . 'store/temp_ext/'))
 		{
 			$this->empty_dir($phpbb_root_path . 'store/temp_ext/');
-- 
cgit v1.2.1


From d5f651c51406fb71dd5075be8a33a904aa570450 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Tue, 11 Jun 2013 16:16:17 +0200
Subject: [ticket/11599] Copy the forums into a static array for later reuse

PHPBB3-11599
---
 tests/tree/nestedset_forum_base.php | 59 ++++++++++++++++++++++++++-----------
 1 file changed, 42 insertions(+), 17 deletions(-)

(limited to 'tests')

diff --git a/tests/tree/nestedset_forum_base.php b/tests/tree/nestedset_forum_base.php
index 776e822280..43680609f8 100644
--- a/tests/tree/nestedset_forum_base.php
+++ b/tests/tree/nestedset_forum_base.php
@@ -59,27 +59,52 @@ class phpbb_tests_tree_nestedset_forum_base extends phpbb_database_test_case
 		$this->set = new phpbb_tree_nestedset_forum($this->db, $this->lock, 'phpbb_forums');
 
 		$this->set_up_forums();
-
-		$sql = "UPDATE phpbb_forums
-			SET forum_parents = 'a:0:{}'";
-		$this->db->sql_query($sql);
 	}
 
 	protected function set_up_forums()
 	{
-		$this->create_forum('Parent with two flat children');
-		$this->create_forum('Flat child #1', 1);
-		$this->create_forum('Flat child #2', 1);
-
-		$this->create_forum('Parent with two nested children');
-		$this->create_forum('Nested child #1', 4);
-		$this->create_forum('Nested child #2', 5);
-
-		$this->create_forum('Parent with flat and nested children');
-		$this->create_forum('Mixed child #1', 7);
-		$this->create_forum('Mixed child #2', 7);
-		$this->create_forum('Nested child #1 of Mixed child #2', 9);
-		$this->create_forum('Mixed child #3', 7);
+		static $forums;
+
+		if (empty($forums))
+		{ 
+			$this->create_forum('Parent with two flat children');
+			$this->create_forum('Flat child #1', 1);
+			$this->create_forum('Flat child #2', 1);
+
+			$this->create_forum('Parent with two nested children');
+			$this->create_forum('Nested child #1', 4);
+			$this->create_forum('Nested child #2', 5);
+
+			$this->create_forum('Parent with flat and nested children');
+			$this->create_forum('Mixed child #1', 7);
+			$this->create_forum('Mixed child #2', 7);
+			$this->create_forum('Nested child #1 of Mixed child #2', 9);
+			$this->create_forum('Mixed child #3', 7);
+
+			// Updating forum_parents column here so it's not empty
+			// This is required, so we can see whether the methods
+			// correctly clear the values. 
+			$sql = "UPDATE phpbb_forums
+				SET forum_parents = 'a:0:{}'";
+			$this->db->sql_query($sql);
+
+			// Copy the forums into a static array, so we can reuse the list later
+			$sql = 'SELECT *
+				FROM phpbb_forums';
+			$result = $this->db->sql_query($sql);
+			$forums = $this->db->sql_fetchrowset($result);
+			$this->db->sql_freeresult($result);
+		}
+		else
+		{
+			$buffer = new phpbb_db_sql_insert_buffer($this->db, 'phpbb_forums');
+			$buffer->insert_all($forums);
+			$buffer->flush();
+
+			$this->database_synchronisation(array(
+				'phpbb_forums'	=> array('forum_id'),
+			));
+		} 
 	}
 
 	protected function create_forum($name, $parent_id = 0)
-- 
cgit v1.2.1


From b8678f467824eed9daa97eacca197348c945e3e9 Mon Sep 17 00:00:00 2001
From: Joas Schilling <nickvergessen@gmx.de>
Date: Mon, 17 Jun 2013 12:47:09 +0200
Subject: [ticket/11561] Specify used tables in notification fixture, so they
 are emptied

PHPBB3-11561
---
 tests/notification/fixtures/notification.xml | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'tests')

diff --git a/tests/notification/fixtures/notification.xml b/tests/notification/fixtures/notification.xml
index 38e5f811dd..c7b2d03ff1 100644
--- a/tests/notification/fixtures/notification.xml
+++ b/tests/notification/fixtures/notification.xml
@@ -1,5 +1,13 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <dataset>
+	<table name="phpbb_bookmarks">
+	</table>
 	<table name="phpbb_notifications">
 	</table>
+	<table name="phpbb_notification_types">
+	</table>
+	<table name="phpbb_topics_watch">
+	</table>
+	<table name="phpbb_user_notifications">
+	</table>
 </dataset>
-- 
cgit v1.2.1


From 516581c41edaa5f565ef90bac14cdbdc054e7914 Mon Sep 17 00:00:00 2001
From: Andreas Fischer <bantu@phpbb.com>
Date: Tue, 18 Jun 2013 15:04:48 +0200
Subject: [ticket/11604] Use variables for config.php filesnames.

PHPBB3-11604
---
 tests/test_framework/phpbb_functional_test_case.php | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

(limited to 'tests')

diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index 651ab013c7..1b47cbe125 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -184,15 +184,19 @@ class phpbb_functional_test_case extends phpbb_test_case
 		self::$config['table_prefix'] = 'phpbb_';
 		self::recreate_database(self::$config);
 
-		if (file_exists($phpbb_root_path . "config.$phpEx"))
+		$config_file = $phpbb_root_path . "config.$phpEx";
+		$config_file_dev = $phpbb_root_path . "config_dev.$phpEx";
+		$config_file_test = $phpbb_root_path . "config_test.$phpEx";
+
+		if (file_exists($config_file))
 		{
-			if (!file_exists($phpbb_root_path . "config_dev.$phpEx"))
+			if (!file_exists($config_file_dev))
 			{
-				rename($phpbb_root_path . "config.$phpEx", $phpbb_root_path . "config_dev.$phpEx");
+				rename($config_file, $config_file_dev);
 			}
 			else
 			{
-				unlink($phpbb_root_path . "config.$phpEx");
+				unlink($config_file);
 			}
 		}
 
@@ -254,7 +258,7 @@ class phpbb_functional_test_case extends phpbb_test_case
 
 		$crawler = self::submit($form);
 		self::assertContains('The configuration file has been written.', $crawler->filter('#main')->text());
-		file_put_contents($phpbb_root_path . "config.$phpEx", phpbb_create_config_file_data(self::$config, self::$config['dbms'], array(), true, true));
+		file_put_contents($config_file, phpbb_create_config_file_data(self::$config, self::$config['dbms'], array(), true, true));
 		$form = $crawler->selectButton('submit')->form();
 
 		$crawler = self::submit($form);
@@ -281,7 +285,7 @@ class phpbb_functional_test_case extends phpbb_test_case
 
 		$crawler = self::submit($form);
 		self::assertContains('You have successfully installed', $crawler->text());
-		copy($phpbb_root_path . "config.$phpEx", $phpbb_root_path . "config_test.$phpEx");
+		copy($config_file, $config_file_test);
 	}
 
 	static private function recreate_database($config)
-- 
cgit v1.2.1


From 21f839494ddb55d1c4aefeed113b5debe9b2e1b3 Mon Sep 17 00:00:00 2001
From: Andreas Fischer <bantu@phpbb.com>
Date: Tue, 18 Jun 2013 15:21:28 +0200
Subject: [ticket/11604] Fix case where config.php is not generated by phpBB.

PHPBB3-11604
---
 .../test_framework/phpbb_functional_test_case.php  | 24 +++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index 1b47cbe125..16ed9f5a1e 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -257,8 +257,30 @@ class phpbb_functional_test_case extends phpbb_test_case
 		$form = $crawler->selectButton('submit')->form();
 
 		$crawler = self::submit($form);
+		$config_writable = strpos($crawler->filter('#main')->text(), 'It was not possible to write the configuration file.') === false;
+		$config_php_data = phpbb_create_config_file_data(self::$config, self::$config['dbms'], array(), true, true);
+
+		if (!$config_writable)
+		{
+			// phpBB could not write to the config.php file, so we have to "Download" it.
+			self::assertContains('Download config', $crawler->filter('#main')->text());
+
+			file_put_contents($config_file, $config_php_data);
+
+			$form = $crawler->selectButton('dldone')->form();
+			$crawler = self::submit($form);
+		}
+
 		self::assertContains('The configuration file has been written.', $crawler->filter('#main')->text());
-		file_put_contents($config_file, phpbb_create_config_file_data(self::$config, self::$config['dbms'], array(), true, true));
+
+		// Overwrite the config.php file generated by phpBB in order to get the
+		// DEBUG constants defined if possible. It should be possible when unit
+		// tests run as the same user as phpBB.
+		if ($config_writable && is_writable($config_file))
+		{
+			file_put_contents($config_file, $config_php_data);
+		}
+
 		$form = $crawler->selectButton('submit')->form();
 
 		$crawler = self::submit($form);
-- 
cgit v1.2.1


From 1af6dc22e2ccb13b610a932a9b043d2d9d4ea17d Mon Sep 17 00:00:00 2001
From: Andreas Fischer <bantu@phpbb.com>
Date: Wed, 19 Jun 2013 17:03:41 +0200
Subject: [ticket/11604] Skip installer step where config.php is created.

PHPBB3-11604
---
 .../test_framework/phpbb_functional_test_case.php  | 47 +++++++++++++---------
 1 file changed, 27 insertions(+), 20 deletions(-)

(limited to 'tests')

diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index 16ed9f5a1e..6b423b56fd 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -220,10 +220,12 @@ class phpbb_functional_test_case extends phpbb_test_case
 		self::assertContains('Welcome to Installation', $crawler->filter('#main')->text());
 		$form = $crawler->selectButton('submit')->form();
 
+		// install/index.php?mode=install&sub=requirements
 		$crawler = self::submit($form);
 		self::assertContains('Installation compatibility', $crawler->filter('#main')->text());
 		$form = $crawler->selectButton('submit')->form();
 
+		// install/index.php?mode=install&sub=database
 		$crawler = self::submit($form);
 		self::assertContains('Database configuration', $crawler->filter('#main')->text());
 		$form = $crawler->selectButton('submit')->form(array(
@@ -237,10 +239,12 @@ class phpbb_functional_test_case extends phpbb_test_case
 			'table_prefix'	=> self::$config['table_prefix'],
 		));
 
+		// install/index.php?mode=install&sub=database
 		$crawler = self::submit($form);
 		self::assertContains('Successful connection', $crawler->filter('#main')->text());
 		$form = $crawler->selectButton('submit')->form();
 
+		// install/index.php?mode=install&sub=administrator
 		$crawler = self::submit($form);
 		self::assertContains('Administrator configuration', $crawler->filter('#main')->text());
 		$form = $crawler->selectButton('submit')->form(array(
@@ -252,38 +256,38 @@ class phpbb_functional_test_case extends phpbb_test_case
 			'board_email2'	=> 'nobody@example.com',
 		));
 
+		// install/index.php?mode=install&sub=administrator
 		$crawler = self::submit($form);
 		self::assertContains('Tests passed', $crawler->filter('#main')->text());
 		$form = $crawler->selectButton('submit')->form();
 
-		$crawler = self::submit($form);
-		$config_writable = strpos($crawler->filter('#main')->text(), 'It was not possible to write the configuration file.') === false;
+		// We have to skip install/index.php?mode=install&sub=config_file
+		// because that step will create a config.php file if phpBB has the
+		// permission to do so. We have to create the config file on our own
+		// in order to get the DEBUG constants defined.
 		$config_php_data = phpbb_create_config_file_data(self::$config, self::$config['dbms'], array(), true, true);
-
-		if (!$config_writable)
+		$config_created = file_put_contents($config_file, $config_php_data) !== false;
+		if (!$config_created)
 		{
-			// phpBB could not write to the config.php file, so we have to "Download" it.
-			self::assertContains('Download config', $crawler->filter('#main')->text());
-
-			file_put_contents($config_file, $config_php_data);
-
-			$form = $crawler->selectButton('dldone')->form();
-			$crawler = self::submit($form);
+			self::markTestSkipped("Could not write $config_file file.");
 		}
 
-		self::assertContains('The configuration file has been written.', $crawler->filter('#main')->text());
-
-		// Overwrite the config.php file generated by phpBB in order to get the
-		// DEBUG constants defined if possible. It should be possible when unit
-		// tests run as the same user as phpBB.
-		if ($config_writable && is_writable($config_file))
+		// We also have to create a install lock that is normally created by
+		// the installer. The file will be removed by the final step of the
+		// installer.
+		$install_lock_file = $phpbb_root_path . 'cache/install_lock';
+		$lock_created = file_put_contents($install_lock_file, '') !== false;
+		if (!$lock_created)
 		{
-			file_put_contents($config_file, $config_php_data);
+			self::markTestSkipped("Could not create $lock_created file.");
 		}
+		@chmod($install_lock_file, 0666);
 
-		$form = $crawler->selectButton('submit')->form();
+		// install/index.php?mode=install&sub=advanced
+		$form_data = $form->getValues();
+		unset($form_data['submit']);
 
-		$crawler = self::submit($form);
+		$crawler = self::request('POST', 'install/index.php?mode=install&sub=advanced', $form_data);
 		self::assertContains('The settings on this page are only necessary to set if you know that you require something different from the default.', $crawler->filter('#main')->text());
 		$form = $crawler->selectButton('submit')->form(array(
 			'email_enable'		=> true,
@@ -300,13 +304,16 @@ class phpbb_functional_test_case extends phpbb_test_case
 			'script_path'		=> $parseURL['path'],
 		));
 
+		// install/index.php?mode=install&sub=create_table
 		$crawler = self::submit($form);
 		self::assertContains('The database tables used by phpBB', $crawler->filter('#main')->text());
 		self::assertContains('have been created and populated with some initial data.', $crawler->filter('#main')->text());
 		$form = $crawler->selectButton('submit')->form();
 
+		// install/index.php?mode=install&sub=final
 		$crawler = self::submit($form);
 		self::assertContains('You have successfully installed', $crawler->text());
+
 		copy($config_file, $config_file_test);
 	}
 
-- 
cgit v1.2.1


From 80e2d65399e7dcf9b53dada4929d7194275721ad Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Mon, 24 Jun 2013 12:05:29 -0400
Subject: [feature/auth-refactor] Initial auth unit test provider_db

Initial work on a unit test for the provider_db login function.
Does not work currently.

PHPBB3-9734
---
 tests/auth/fixtures/user.xml    | 33 +++++++++++++++++++++++++++++++++
 tests/auth/provider_db_test.php | 40 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+)
 create mode 100644 tests/auth/fixtures/user.xml
 create mode 100644 tests/auth/provider_db_test.php

(limited to 'tests')

diff --git a/tests/auth/fixtures/user.xml b/tests/auth/fixtures/user.xml
new file mode 100644
index 0000000000..34584babbf
--- /dev/null
+++ b/tests/auth/fixtures/user.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<dataset>
+	<table name="phpbb_users">
+		<column>user_id</column>
+		<column>username</column>
+		<column>username_clean</column>
+		<column>user_password</column>
+		<column>user_passchg</column>
+		<column>user_pass_convert</column>
+		<column>user_email</column>
+		<column>user_type</column>
+		<column>user_login_attempts</column>
+		<column>user_permissions</column>
+		<column>user_sig</column>
+		<column>user_occ</column>
+		<column>user_interests</column>
+		<row>
+			<value>1</value>
+			<value>foobar</value>
+			<value>foobar</value>
+			<value>$H$9E45lK6J8nLTSm9oJE5aNCSTFK9wqa/</value>
+			<value>0</value>
+			<value>0</value>
+			<value>example@example.com</value>
+			<value>0</value>
+			<value>0</value>
+			<value></value>
+			<value></value>
+			<value></value>
+			<value></value>
+		</row>
+	</table>
+</dataset>
diff --git a/tests/auth/provider_db_test.php b/tests/auth/provider_db_test.php
new file mode 100644
index 0000000000..c6355ae7f9
--- /dev/null
+++ b/tests/auth/provider_db_test.php
@@ -0,0 +1,40 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__).'/../../phpBB/includes/functions.php';
+
+class phpbb_auth_provider_db_test extends phpbb_database_test_case
+{
+	public function getDataSet()
+	{
+		return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/user.xml');
+	}
+
+	public function test_login()
+	{
+		global $phpbb_root_path, $phpEx;
+
+		$db = $this->new_dbal();
+		$config = new phpbb_config(array(
+			'ip_login_limit_max'			=> 0,
+			'ip_login_limit_use_forwarded' 	=> 0,
+			'max_login_attempts' 			=> 0,
+			));
+		$request = $this->getMock('phpbb_request');
+		$user = $this->getMock('phpbb_user');
+		$provider = new phpbb_auth_provider_db($db, $config, $request, $user, $phpbb_root_path, $phpEx);
+
+		$expected = array(
+			'status'		=> LOGIN_SUCCESS,
+			'error_msg'		=> false,
+			'user_row'		=> '',
+		);
+		$this->assertEquals($expected, $provider->login('example', 'example'));
+	}
+}
-- 
cgit v1.2.1


From 8e1a503f4437eb38de6a349a841db75648a81678 Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Tue, 25 Jun 2013 13:22:56 -0400
Subject: [feature/auth-refactor] Finish provider_db unit test for login

Finishes the provider_db unit test for login. The test currently
passes.

PHPBB3-9734
---
 tests/auth/provider_db_test.php | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

(limited to 'tests')

diff --git a/tests/auth/provider_db_test.php b/tests/auth/provider_db_test.php
index c6355ae7f9..d876683f84 100644
--- a/tests/auth/provider_db_test.php
+++ b/tests/auth/provider_db_test.php
@@ -33,8 +33,18 @@ class phpbb_auth_provider_db_test extends phpbb_database_test_case
 		$expected = array(
 			'status'		=> LOGIN_SUCCESS,
 			'error_msg'		=> false,
-			'user_row'		=> '',
+			'user_row'		=> array(
+				'user_id' 				=> '1',
+				'username' 				=> 'foobar',
+				'user_password'			=> '$H$9E45lK6J8nLTSm9oJE5aNCSTFK9wqa/',
+				'user_passchg' 			=> '0',
+				'user_pass_convert' 	=> '0',
+				'user_email' 			=> 'example@example.com',
+				'user_type' 			=> '0',
+				'user_login_attempts' 	=> '0',
+				),
 		);
-		$this->assertEquals($expected, $provider->login('example', 'example'));
+
+		$this->assertEquals($expected, $provider->login('foobar', 'example'));
 	}
 }
-- 
cgit v1.2.1


From 91c80dfc8eed6ed3cfa90732087741c8433acabf Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Tue, 25 Jun 2013 13:34:43 -0400
Subject: [feature/auth-refactor] Skeleton of provider_apache_test

Creates a skeleton of the tests for provider_apache.

PHPBB3-9734
---
 tests/auth/provider_apache_test.php | 49 +++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)
 create mode 100644 tests/auth/provider_apache_test.php

(limited to 'tests')

diff --git a/tests/auth/provider_apache_test.php b/tests/auth/provider_apache_test.php
new file mode 100644
index 0000000000..d552c4131e
--- /dev/null
+++ b/tests/auth/provider_apache_test.php
@@ -0,0 +1,49 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__).'/../../phpBB/includes/functions.php';
+
+class phpbb_auth_provider_apache_test extends phpbb_database_test_case
+{
+	protected $provider;
+
+	protected function setup()
+	{
+		parent::setUp();
+
+		global $phpbb_root_path, $phpEx;
+
+		$db = $this->new_dbal();
+		$config = new phpbb_config(array());
+		$request = $this->getMock('phpbb_request');
+		$user = $this->getMock('phpbb_user');
+
+		$this->provider = new phpbb_auth_provider_apache($db, $config, $request, $user, $phpbb_root_path, $phpEx);
+	}
+
+	public function getDataSet()
+	{
+		return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/user.xml');
+	}
+
+	public function test_init()
+	{
+		$this->markTestIncomplete();
+	}
+
+	public function test_login()
+	{
+		$this->markTestIncomplete();
+	}
+
+	public function test_validate_session()
+	{
+		$this->markTestIncomplete();
+	}
+}
-- 
cgit v1.2.1


From e5de05d8dbbcf0a38aa5c1c2a872765b163ccb31 Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Tue, 25 Jun 2013 14:05:40 -0400
Subject: [feature/auth-refactor] Test for init on provider_apache

Provides a test for the init() method of provider_apache.
Appears to be failing due to an error with the mock request class.

PHPBB3-9734
---
 tests/auth/provider_apache_test.php | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

(limited to 'tests')

diff --git a/tests/auth/provider_apache_test.php b/tests/auth/provider_apache_test.php
index d552c4131e..1530dcb746 100644
--- a/tests/auth/provider_apache_test.php
+++ b/tests/auth/provider_apache_test.php
@@ -12,6 +12,8 @@ require_once dirname(__FILE__).'/../../phpBB/includes/functions.php';
 class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 {
 	protected $provider;
+	protected $user;
+	protected $request;
 
 	protected function setup()
 	{
@@ -21,10 +23,10 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 
 		$db = $this->new_dbal();
 		$config = new phpbb_config(array());
-		$request = $this->getMock('phpbb_request');
-		$user = $this->getMock('phpbb_user');
+		$this->request = $this->getMock('phpbb_request');
+		$this->user = $this->getMock('phpbb_user');
 
-		$this->provider = new phpbb_auth_provider_apache($db, $config, $request, $user, $phpbb_root_path, $phpEx);
+		$this->provider = new phpbb_auth_provider_apache($db, $config, $this->request, $this->user, $phpbb_root_path, $phpEx);
 	}
 
 	public function getDataSet()
@@ -32,9 +34,15 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 		return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/user.xml');
 	}
 
+	/**
+	 * Test to see if a user is identified to Apache. Expects false if they are.
+	 */
 	public function test_init()
 	{
-		$this->markTestIncomplete();
+		$this->user->data['username'] = 'foobar';
+		$this->request->overwrite('PHP_AUTH_USER', 'foobar', phpbb_request_interface::SERVER);
+
+		$this->assertFalse($this->provider->init());
 	}
 
 	public function test_login()
-- 
cgit v1.2.1


From 307dd9777b67e8a7628bb74eeba8cc55ab6a8f58 Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Tue, 25 Jun 2013 14:12:31 -0400
Subject: [feature/auth-refactor] Test login() for provider_apache

Provides a test for the login() method for provider_apache.
Appears to be failing due to an issue with the mock phpBB request
class.

PHPBB3-9734
---
 tests/auth/provider_apache_test.php | 21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/auth/provider_apache_test.php b/tests/auth/provider_apache_test.php
index 1530dcb746..4773e4fdc3 100644
--- a/tests/auth/provider_apache_test.php
+++ b/tests/auth/provider_apache_test.php
@@ -47,7 +47,26 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 
 	public function test_login()
 	{
-		$this->markTestIncomplete();
+		$username = 'foobar';
+		$password = 'example';
+
+		$this->request->overwrite('PHP_AUTH_USER', $username, phpbb_request_interface::SERVER);
+		$this->request->overwrite('PHP_AUTH_PW', $password, phpbb_request_interface::SERVER);
+
+		$expected = array(
+			'status'		=> LOGIN_SUCCESS,
+			'error_msg'		=> false,
+			'user_row'		=> array(
+				'user_id' 				=> '1',
+				'username' 				=> 'foobar',
+				'user_password'			=> '$H$9E45lK6J8nLTSm9oJE5aNCSTFK9wqa/',
+				'user_passchg' 			=> '0',
+				'user_email' 			=> 'example@example.com',
+				'user_type' 			=> '0',
+				),
+		);
+
+		$this->assertEquals($expected, $this->provider->login($username, $password));
 	}
 
 	public function test_validate_session()
-- 
cgit v1.2.1


From 9e04328545c933aa801c52c1567efd3d2e06fcf3 Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Tue, 25 Jun 2013 14:24:47 -0400
Subject: [feature/auth-refactor] Test autologin() on provider_apache

Provides a test for the autologin() method of provider_apache
that assumes the user already exists in the database.

PHPBB3-9734
---
 tests/auth/provider_apache_test.php | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

(limited to 'tests')

diff --git a/tests/auth/provider_apache_test.php b/tests/auth/provider_apache_test.php
index 4773e4fdc3..6cfd676fc2 100644
--- a/tests/auth/provider_apache_test.php
+++ b/tests/auth/provider_apache_test.php
@@ -69,6 +69,34 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 		$this->assertEquals($expected, $this->provider->login($username, $password));
 	}
 
+	public function test_autologin()
+	{
+		$this->request->overwrite('PHP_AUTH_USER', 'foobar', phpbb_request_interface::SERVER);
+		$this->request->overwrite('PHP_AUTH_PW', 'example', phpbb_request_interface::SERVER);
+
+		$expected = array(
+			'status'		=> LOGIN_SUCCESS,
+			'error_msg'		=> false,
+			'user_row'		=> array(
+				'user_id' 				=> '1',
+				'username' 				=> 'foobar',
+				'username_clean'		=> 'foobar',
+				'user_password'			=> '$H$9E45lK6J8nLTSm9oJE5aNCSTFK9wqa/',
+				'user_passchg' 			=> '0',
+				'user_pass_convert'		=> '0',
+				'user_email' 			=> 'example@example.com',
+				'user_type' 			=> '0',
+				'user_login_attempts'	=> '0',
+				'user_permission'		=> '',
+				'user_sig'				=> '',
+				'user_occ'				=> '',
+				'user_interests'		=> '',
+				),
+		);
+
+		$this->assertEquals($expected, $this->provider->autologin());
+	}
+
 	public function test_validate_session()
 	{
 		$this->markTestIncomplete();
-- 
cgit v1.2.1


From 5444e5b6831d5ce87ff2adaf1f7b0e4788592bc3 Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Tue, 25 Jun 2013 14:28:16 -0400
Subject: [feature/auth-refactor] Test validate_session on provider_apache

Provides a test for the validate_session() method of
provider_apache.

PHPBB3-9734
---
 tests/auth/provider_apache_test.php | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/auth/provider_apache_test.php b/tests/auth/provider_apache_test.php
index 6cfd676fc2..092b90bea3 100644
--- a/tests/auth/provider_apache_test.php
+++ b/tests/auth/provider_apache_test.php
@@ -99,6 +99,10 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 
 	public function test_validate_session()
 	{
-		$this->markTestIncomplete();
+		$user = $this->getMock('phpbb_user');
+		$user->data['username'] = 'foobar';
+		$this->request->overwrite('PHP_AUTH_USER', 'foobar', phpbb_request_interface::SERVER);
+
+		$this->assertTrue($this->provider->validate_session($user));
 	}
 }
-- 
cgit v1.2.1


From 5f3ed197e73550e78b37dd38496210737cf3f39d Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Tue, 25 Jun 2013 16:25:45 -0400
Subject: [feature/auth-refactor] Fix auth tests to use mock objects correctly

PHPBB3-9734
---
 tests/auth/provider_apache_test.php | 148 ++++++++++++++++++++++++++++++------
 1 file changed, 123 insertions(+), 25 deletions(-)

(limited to 'tests')

diff --git a/tests/auth/provider_apache_test.php b/tests/auth/provider_apache_test.php
index 092b90bea3..0ca6ef763e 100644
--- a/tests/auth/provider_apache_test.php
+++ b/tests/auth/provider_apache_test.php
@@ -40,7 +40,15 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 	public function test_init()
 	{
 		$this->user->data['username'] = 'foobar';
-		$this->request->overwrite('PHP_AUTH_USER', 'foobar', phpbb_request_interface::SERVER);
+		$this->request->expects($this->once())
+			->method('is_set')
+			->with('PHP_AUTH_USER',
+				phpbb_request_interface::SERVER)
+			->will($this->returnValue(true));
+		$this->request->expects($this->once())
+			->method('server')
+			->with('PHP_AUTH_USER')
+			->will($this->returnValue('foobar'));
 
 		$this->assertFalse($this->provider->init());
 	}
@@ -50,8 +58,19 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 		$username = 'foobar';
 		$password = 'example';
 
-		$this->request->overwrite('PHP_AUTH_USER', $username, phpbb_request_interface::SERVER);
-		$this->request->overwrite('PHP_AUTH_PW', $password, phpbb_request_interface::SERVER);
+		$this->request->expects($this->once())
+			->method('is_set')
+			->with('PHP_AUTH_USER',
+				phpbb_request_interface::SERVER)
+			->will($this->returnValue(true));
+		$this->request->expects($this->at(1))
+			->method('server')
+			->with('PHP_AUTH_USER')
+			->will($this->returnValue('foobar'));
+		$this->request->expects($this->at(2))
+			->method('server')
+			->with('PHP_AUTH_PW')
+			->will($this->returnValue('example'));
 
 		$expected = array(
 			'status'		=> LOGIN_SUCCESS,
@@ -71,27 +90,96 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 
 	public function test_autologin()
 	{
-		$this->request->overwrite('PHP_AUTH_USER', 'foobar', phpbb_request_interface::SERVER);
-		$this->request->overwrite('PHP_AUTH_PW', 'example', phpbb_request_interface::SERVER);
+		$this->request->expects($this->once())
+			->method('is_set')
+			->with('PHP_AUTH_USER',
+				phpbb_request_interface::SERVER)
+			->will($this->returnValue(true));
+		$this->request->expects($this->at(1))
+			->method('server')
+			->with('PHP_AUTH_USER')
+			->will($this->returnValue('foobar'));
+		$this->request->expects($this->at(2))
+			->method('server')
+			->with('PHP_AUTH_PW')
+			->will($this->returnValue('example'));
 
 		$expected = array(
-			'status'		=> LOGIN_SUCCESS,
-			'error_msg'		=> false,
-			'user_row'		=> array(
-				'user_id' 				=> '1',
-				'username' 				=> 'foobar',
-				'username_clean'		=> 'foobar',
-				'user_password'			=> '$H$9E45lK6J8nLTSm9oJE5aNCSTFK9wqa/',
-				'user_passchg' 			=> '0',
-				'user_pass_convert'		=> '0',
-				'user_email' 			=> 'example@example.com',
-				'user_type' 			=> '0',
-				'user_login_attempts'	=> '0',
-				'user_permission'		=> '',
-				'user_sig'				=> '',
-				'user_occ'				=> '',
-				'user_interests'		=> '',
-				),
+			'user_id' => '1',
+			'user_type' => '0',
+			'group_id' => '3',
+			'user_permissions' => '',
+			'user_perm_from' => '0',
+			'user_ip' => '',
+			'user_regdate' => '0',
+			'username' => 'foobar',
+			'username_clean' => 'foobar',
+			'user_password' => '$H$9E45lK6J8nLTSm9oJE5aNCSTFK9wqa/',
+			'user_passchg' => '0',
+			'user_pass_convert' => '0',
+			'user_email' => 'example@example.com',
+			'user_email_hash' => '0',
+			'user_birthday' => '',
+			'user_lastvisit' => '0',
+			'user_lastmark' => '0',
+			'user_lastpost_time' => '0',
+			'user_lastpage' => '',
+			'user_last_confirm_key' => '',
+			'user_last_search' => '0',
+			'user_warnings' => '0',
+			'user_last_warning' => '0',
+			'user_login_attempts' => '0',
+			'user_inactive_reason' => '0',
+			'user_inactive_time' => '0',
+			'user_posts' => '0',
+			'user_lang' => '',
+			'user_timezone' => 'UTC',
+			'user_dateformat' => 'd M Y H:i',
+			'user_style' => '0',
+			'user_rank' => '0',
+			'user_colour' => '',
+			'user_new_privmsg' => '0',
+			'user_unread_privmsg' => '0',
+			'user_last_privmsg' => '0',
+			'user_message_rules' => '0',
+			'user_full_folder' => '-3',
+			'user_emailtime' => '0',
+			'user_topic_show_days' => '0',
+			'user_topic_sortby_type' => 't',
+			'user_topic_sortby_dir' => 'd',
+			'user_post_show_days' => '0',
+			'user_post_sortby_type' => 't',
+			'user_post_sortby_dir' => 'a',
+			'user_notify' => '0',
+			'user_notify_pm' => '1',
+			'user_notify_type' => '0',
+			'user_allow_pm' => '1',
+			'user_allow_viewonline' => '1',
+			'user_allow_viewemail' => '1',
+			'user_allow_massemail' => '1',
+			'user_options' => '230271',
+			'user_avatar' => '',
+			'user_avatar_type' => '',
+			'user_avatar_width' => '0',
+			'user_avatar_height' => '0',
+			'user_sig' => '',
+			'user_sig_bbcode_uid' => '',
+			'user_sig_bbcode_bitfield' => '',
+			'user_from' => '',
+			'user_icq' => '',
+			'user_aim' => '',
+			'user_yim' => '',
+			'user_msnm' => '',
+			'user_jabber' => '',
+			'user_website' => '',
+			'user_occ' => '',
+			'user_interests' => '',
+			'user_actkey' => '',
+			'user_newpasswd' => '',
+			'user_form_salt' => '',
+			'user_new' => '1',
+			'user_reminded' => '0',
+			'user_reminded_time' => '0',
 		);
 
 		$this->assertEquals($expected, $this->provider->autologin());
@@ -99,9 +187,19 @@ class phpbb_auth_provider_apache_test extends phpbb_database_test_case
 
 	public function test_validate_session()
 	{
-		$user = $this->getMock('phpbb_user');
-		$user->data['username'] = 'foobar';
-		$this->request->overwrite('PHP_AUTH_USER', 'foobar', phpbb_request_interface::SERVER);
+		$user = array(
+			'username'	=> 'foobar',
+			'user_type'
+			);
+		$this->request->expects($this->once())
+			->method('is_set')
+			->with('PHP_AUTH_USER',
+				phpbb_request_interface::SERVER)
+			->will($this->returnValue(true));
+		$this->request->expects($this->once())
+			->method('server')
+			->with('PHP_AUTH_USER')
+			->will($this->returnValue('foobar'));
 
 		$this->assertTrue($this->provider->validate_session($user));
 	}
-- 
cgit v1.2.1


From 19bbf7b7de4a2575405b84c8a253cbf9de315b7c Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Wed, 26 Jun 2013 11:31:11 -0400
Subject: [feature/auth-refactor] Fix two session tests broken by changes

PHPBB3-9734
---
 tests/session/continue_test.php | 13 +++++++++++++
 tests/session/init_test.php     | 13 +++++++++++++
 2 files changed, 26 insertions(+)

(limited to 'tests')

diff --git a/tests/session/continue_test.php b/tests/session/continue_test.php
index ad78d92299..e5a7f7a4a1 100644
--- a/tests/session/continue_test.php
+++ b/tests/session/continue_test.php
@@ -53,7 +53,20 @@ class phpbb_session_continue_test extends phpbb_database_test_case
 	*/
 	public function test_session_begin_valid_session($session_id, $user_id, $user_agent, $ip, $expected_sessions, $expected_cookies, $message)
 	{
+		global $phpbb_container, $phpbb_root_path, $phpEx;
+
 		$db = $this->new_dbal();
+		$config = new phpbb_config(array());
+		$request = $this->getMock('phpbb_request');
+		$user = $this->getMock('phpbb_user');
+
+		$auth_provider = new phpbb_auth_provider_db($db, $config, $request, $user, $phpbb_root_path, $phpEx);
+		$phpbb_container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
+		$phpbb_container->expects($this->any())
+			->method('get')
+			->with('auth.provider.db')
+			->will($this->returnValue($auth_provider));
+
 		$session_factory = new phpbb_session_testable_factory;
 		$session_factory->set_cookies(array(
 			'_sid' => $session_id,
diff --git a/tests/session/init_test.php b/tests/session/init_test.php
index 830de34ed0..43af8c554f 100644
--- a/tests/session/init_test.php
+++ b/tests/session/init_test.php
@@ -20,7 +20,20 @@ class phpbb_session_init_test extends phpbb_database_test_case
 
 	public function test_login_session_create()
 	{
+		global $phpbb_container, $phpbb_root_path, $phpEx;
+
 		$db = $this->new_dbal();
+		$config = new phpbb_config(array());
+		$request = $this->getMock('phpbb_request');
+		$user = $this->getMock('phpbb_user');
+
+		$auth_provider = new phpbb_auth_provider_db($db, $config, $request, $user, $phpbb_root_path, $phpEx);
+		$phpbb_container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface');
+		$phpbb_container->expects($this->any())
+			->method('get')
+			->with('auth.provider.db')
+			->will($this->returnValue($auth_provider));
+
 		$session_factory = new phpbb_session_testable_factory;
 
 		$session = $session_factory->get_session($db);
-- 
cgit v1.2.1


From a105a6d7a7140fe94e9b0a166fa515b9e02d9e3e Mon Sep 17 00:00:00 2001
From: Andy Chase <asperous2@gmail.com>
Date: Tue, 25 Jun 2013 12:39:43 -0700
Subject: [ticket/11615] Rename init_test to creation_test for clarity

PHPBB3-11615
---
 tests/session/creation_test.php | 56 +++++++++++++++++++++++++++++++++++++++++
 tests/session/init_test.php     | 56 -----------------------------------------
 2 files changed, 56 insertions(+), 56 deletions(-)
 create mode 100644 tests/session/creation_test.php
 delete mode 100644 tests/session/init_test.php

(limited to 'tests')

diff --git a/tests/session/creation_test.php b/tests/session/creation_test.php
new file mode 100644
index 0000000000..2ce6c4a4ac
--- /dev/null
+++ b/tests/session/creation_test.php
@@ -0,0 +1,56 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2011 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+require_once dirname(__FILE__) . '/../mock/cache.php';
+require_once dirname(__FILE__) . '/testable_factory.php';
+
+class phpbb_session_init_test extends phpbb_database_test_case
+{
+	public function getDataSet()
+	{
+		return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/sessions_empty.xml');
+	}
+
+	// also see security/extract_current_page.php
+
+	public function test_login_session_create()
+	{
+		$db = $this->new_dbal();
+		$session_factory = new phpbb_session_testable_factory;
+
+		$session = $session_factory->get_session($db);
+		$session->page = array('page' => 'page', 'forum' => 0);
+
+		$session->session_create(3);
+
+		$sql = 'SELECT session_user_id
+			FROM phpbb_sessions';
+
+		$this->assertSqlResultEquals(
+			array(array('session_user_id' => 3)),
+			$sql,
+			'Check if exacly one session for user id 3 was created'
+		);
+
+		$cookie_expire = $session->time_now + 31536000; // default is one year
+
+		$session->check_cookies($this, array(
+			'u' => array(null, $cookie_expire),
+			'k' => array(null, $cookie_expire),
+			'sid' => array($session->session_id, $cookie_expire),
+		));
+
+		global $SID, $_SID;
+		$this->assertEquals($session->session_id, $_SID);
+		$this->assertEquals('?sid=' . $session->session_id, $SID);
+
+		$session_factory->check($this);
+	}
+}
+
diff --git a/tests/session/init_test.php b/tests/session/init_test.php
deleted file mode 100644
index 2ce6c4a4ac..0000000000
--- a/tests/session/init_test.php
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/**
-*
-* @package testing
-* @copyright (c) 2011 phpBB Group
-* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
-*
-*/
-
-require_once dirname(__FILE__) . '/../mock/cache.php';
-require_once dirname(__FILE__) . '/testable_factory.php';
-
-class phpbb_session_init_test extends phpbb_database_test_case
-{
-	public function getDataSet()
-	{
-		return $this->createXMLDataSet(dirname(__FILE__).'/fixtures/sessions_empty.xml');
-	}
-
-	// also see security/extract_current_page.php
-
-	public function test_login_session_create()
-	{
-		$db = $this->new_dbal();
-		$session_factory = new phpbb_session_testable_factory;
-
-		$session = $session_factory->get_session($db);
-		$session->page = array('page' => 'page', 'forum' => 0);
-
-		$session->session_create(3);
-
-		$sql = 'SELECT session_user_id
-			FROM phpbb_sessions';
-
-		$this->assertSqlResultEquals(
-			array(array('session_user_id' => 3)),
-			$sql,
-			'Check if exacly one session for user id 3 was created'
-		);
-
-		$cookie_expire = $session->time_now + 31536000; // default is one year
-
-		$session->check_cookies($this, array(
-			'u' => array(null, $cookie_expire),
-			'k' => array(null, $cookie_expire),
-			'sid' => array($session->session_id, $cookie_expire),
-		));
-
-		global $SID, $_SID;
-		$this->assertEquals($session->session_id, $_SID);
-		$this->assertEquals('?sid=' . $session->session_id, $SID);
-
-		$session_factory->check($this);
-	}
-}
-
-- 
cgit v1.2.1


From c29cca1a755461ec2bd63b7cc9292d79ae0508d6 Mon Sep 17 00:00:00 2001
From: Andy Chase <asperous2@gmail.com>
Date: Tue, 25 Jun 2013 12:40:31 -0700
Subject: [ticket/11615] Rename class in file to match

PHPBB3-11615
---
 tests/session/creation_test.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/session/creation_test.php b/tests/session/creation_test.php
index 2ce6c4a4ac..c5558c1577 100644
--- a/tests/session/creation_test.php
+++ b/tests/session/creation_test.php
@@ -10,7 +10,7 @@
 require_once dirname(__FILE__) . '/../mock/cache.php';
 require_once dirname(__FILE__) . '/testable_factory.php';
 
-class phpbb_session_init_test extends phpbb_database_test_case
+class phpbb_session_creation_test extends phpbb_database_test_case
 {
 	public function getDataSet()
 	{
-- 
cgit v1.2.1


From 4c432fecc75473c5f12a70048973a4139bdf1b22 Mon Sep 17 00:00:00 2001
From: Andy Chase <asperous2@gmail.com>
Date: Tue, 25 Jun 2013 12:42:19 -0700
Subject: [ticket/11615] Remove magic number in creation_test

Removing this magic number to its own variable
with clean multiplication makes it clear
what the number represents.

PHPBB3-11615
---
 tests/session/creation_test.php | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/session/creation_test.php b/tests/session/creation_test.php
index c5558c1577..b9f8b18c63 100644
--- a/tests/session/creation_test.php
+++ b/tests/session/creation_test.php
@@ -38,7 +38,8 @@ class phpbb_session_creation_test extends phpbb_database_test_case
 			'Check if exacly one session for user id 3 was created'
 		);
 
-		$cookie_expire = $session->time_now + 31536000; // default is one year
+		$one_year_in_seconds = 365 * 24 * 60 * 60;
+		$cookie_expire = $session->time_now + $one_year_in_seconds;
 
 		$session->check_cookies($this, array(
 			'u' => array(null, $cookie_expire),
-- 
cgit v1.2.1


From 7ba81a293f014f3c6b161672b8fbc27e2075d239 Mon Sep 17 00:00:00 2001
From: Andy Chase <asperous2@gmail.com>
Date: Tue, 25 Jun 2013 12:42:41 -0700
Subject: [ticket/11615] Fix typo in creation_test

PHPBB3-11615
---
 tests/session/creation_test.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/session/creation_test.php b/tests/session/creation_test.php
index b9f8b18c63..bef52c6554 100644
--- a/tests/session/creation_test.php
+++ b/tests/session/creation_test.php
@@ -35,7 +35,7 @@ class phpbb_session_creation_test extends phpbb_database_test_case
 		$this->assertSqlResultEquals(
 			array(array('session_user_id' => 3)),
 			$sql,
-			'Check if exacly one session for user id 3 was created'
+			'Check if exactly one session for user id 3 was created'
 		);
 
 		$one_year_in_seconds = 365 * 24 * 60 * 60;
-- 
cgit v1.2.1


From 1f989c6be774d88ffff8a8d5ac1da58f442f6174 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Thu, 27 Jun 2013 00:57:34 +0530
Subject: [ticket/9341] Move create_topic and post into functional test case

create_topic and create_post are moved into functional test case
so that they can be used by other tests as well

PHPBB3-9341
---
 tests/functional/posting_test.php                  | 101 ---------------------
 .../test_framework/phpbb_functional_test_case.php  | 101 +++++++++++++++++++++
 2 files changed, 101 insertions(+), 101 deletions(-)

(limited to 'tests')

diff --git a/tests/functional/posting_test.php b/tests/functional/posting_test.php
index 9bcfcc2fda..7fd1e4fdcf 100644
--- a/tests/functional/posting_test.php
+++ b/tests/functional/posting_test.php
@@ -32,105 +32,4 @@ class phpbb_functional_posting_test extends phpbb_functional_test_case
 		$crawler = self::request('GET', "posting.php?mode=quote&f=2&t={$post2['topic_id']}&p={$post2['post_id']}&sid={$this->sid}");
 		$this->assertContains('This is a test post posted by the testing framework.', $crawler->filter('html')->text());
 	}
-
-	/**
-	* Creates a topic
-	* 
-	* Be sure to login before creating
-	* 
-	* @param int $forum_id
-	* @param string $subject
-	* @param string $message
-	* @param array $additional_form_data Any additional form data to be sent in the request
-	* @return array post_id, topic_id
-	*/
-	public function create_topic($forum_id, $subject, $message, $additional_form_data = array())
-	{
-		$posting_url = "posting.php?mode=post&f={$forum_id}&sid={$this->sid}";
-
-		$form_data = array_merge(array(
-			'subject'		=> $subject,
-			'message'		=> $message,
-			'post'			=> true,
-		), $additional_form_data);
-
-		return self::submit_post($posting_url, 'POST_TOPIC', $form_data);
-	}
-
-	/**
-	* Creates a post
-	* 
-	* Be sure to login before creating
-	* 
-	* @param int $forum_id
-	* @param string $subject
-	* @param string $message
-	* @param array $additional_form_data Any additional form data to be sent in the request
-	* @return array post_id, topic_id
-	*/
-	public function create_post($forum_id, $topic_id, $subject, $message, $additional_form_data = array())
-	{
-		$posting_url = "posting.php?mode=reply&f={$forum_id}&t={$topic_id}&sid={$this->sid}";
-
-		$form_data = array_merge(array(
-			'subject'		=> $subject,
-			'message'		=> $message,
-			'post'			=> true,
-		), $additional_form_data);
-
-		return self::submit_post($posting_url, 'POST_REPLY', $form_data);
-	}
-	
-	/**
-	* Helper for submitting posts
-	* 
-	* @param string $posting_url
-	* @param string $posting_contains
-	* @param array $form_data
-	* @return array post_id, topic_id
-	*/
-	protected function submit_post($posting_url, $posting_contains, $form_data)
-	{
-		$this->add_lang('posting');
-
-		$crawler = self::request('GET', $posting_url);
-		$this->assertContains($this->lang($posting_contains), $crawler->filter('html')->text());
-
-		$hidden_fields = array(
-			$crawler->filter('[type="hidden"]')->each(function ($node, $i) {
-				return array('name' => $node->getAttribute('name'), 'value' => $node->getAttribute('value'));
-			}),
-		);
-
-		foreach ($hidden_fields as $fields)
-		{
-			foreach($fields as $field)
-			{
-				$form_data[$field['name']] = $field['value'];
-			}
-		}
-
-		// Bypass time restriction that said that if the lastclick time (i.e. time when the form was opened)
-		// is not at least 2 seconds before submission, cancel the form
-		$form_data['lastclick'] = 0;
-
-		// I use a request because the form submission method does not allow you to send data that is not
-		// contained in one of the actual form fields that the browser sees (i.e. it ignores "hidden" inputs)
-		// Instead, I send it as a request with the submit button "post" set to true.
-		$crawler = self::request('POST', $posting_url, $form_data);
-		$this->assertContains($this->lang('POST_STORED'), $crawler->filter('html')->text());
-
-		$url = $crawler->selectLink($this->lang('VIEW_MESSAGE', '', ''))->link()->getUri();
-		
-		$matches = $topic_id = $post_id = false;
-		preg_match_all('#&t=([0-9]+)(&p=([0-9]+))?#', $url, $matches);
-		
-		$topic_id = (int) (isset($matches[1][0])) ? $matches[1][0] : 0;
-		$post_id = (int) (isset($matches[3][0])) ? $matches[3][0] : 0;
-
-		return array(
-			'topic_id'	=> $topic_id,
-			'post_id'	=> $post_id,
-		);
-	}
 }
diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index 97fe147d8e..ece42c5fff 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -703,4 +703,105 @@ class phpbb_functional_test_case extends phpbb_test_case
 
 		return $result;
 	}
+
+	/**
+	* Creates a topic
+	*
+	* Be sure to login before creating
+	*
+	* @param int $forum_id
+	* @param string $subject
+	* @param string $message
+	* @param array $additional_form_data Any additional form data to be sent in the request
+	* @return array post_id, topic_id
+	*/
+	public function create_topic($forum_id, $subject, $message, $additional_form_data = array())
+	{
+		$posting_url = "posting.php?mode=post&f={$forum_id}&sid={$this->sid}";
+
+		$form_data = array_merge(array(
+			'subject'		=> $subject,
+			'message'		=> $message,
+			'post'			=> true,
+		), $additional_form_data);
+
+		return self::submit_post($posting_url, 'POST_TOPIC', $form_data);
+	}
+
+	/**
+	* Creates a post
+	*
+	* Be sure to login before creating
+	*
+	* @param int $forum_id
+	* @param string $subject
+	* @param string $message
+	* @param array $additional_form_data Any additional form data to be sent in the request
+	* @return array post_id, topic_id
+	*/
+	public function create_post($forum_id, $topic_id, $subject, $message, $additional_form_data = array())
+	{
+		$posting_url = "posting.php?mode=reply&f={$forum_id}&t={$topic_id}&sid={$this->sid}";
+
+		$form_data = array_merge(array(
+			'subject'		=> $subject,
+			'message'		=> $message,
+			'post'			=> true,
+		), $additional_form_data);
+
+		return self::submit_post($posting_url, 'POST_REPLY', $form_data);
+	}
+
+	/**
+	* Helper for submitting posts
+	*
+	* @param string $posting_url
+	* @param string $posting_contains
+	* @param array $form_data
+	* @return array post_id, topic_id
+	*/
+	protected function submit_post($posting_url, $posting_contains, $form_data)
+	{
+		$this->add_lang('posting');
+
+		$crawler = self::request('GET', $posting_url);
+		$this->assertContains($this->lang($posting_contains), $crawler->filter('html')->text());
+
+		$hidden_fields = array(
+			$crawler->filter('[type="hidden"]')->each(function ($node, $i) {
+				return array('name' => $node->getAttribute('name'), 'value' => $node->getAttribute('value'));
+			}),
+		);
+
+		foreach ($hidden_fields as $fields)
+		{
+			foreach($fields as $field)
+			{
+				$form_data[$field['name']] = $field['value'];
+			}
+		}
+
+		// Bypass time restriction that said that if the lastclick time (i.e. time when the form was opened)
+		// is not at least 2 seconds before submission, cancel the form
+		$form_data['lastclick'] = 0;
+
+		// I use a request because the form submission method does not allow you to send data that is not
+		// contained in one of the actual form fields that the browser sees (i.e. it ignores "hidden" inputs)
+		// Instead, I send it as a request with the submit button "post" set to true.
+		$crawler = self::request('POST', $posting_url, $form_data);
+		$this->assertContains($this->lang('POST_STORED'), $crawler->filter('html')->text());
+
+		$url = $crawler->selectLink($this->lang('VIEW_MESSAGE', '', ''))->link()->getUri();
+
+		$matches = $topic_id = $post_id = false;
+		preg_match_all('#&t=([0-9]+)(&p=([0-9]+))?#', $url, $matches);
+
+		$topic_id = (int) (isset($matches[1][0])) ? $matches[1][0] : 0;
+		$post_id = (int) (isset($matches[3][0])) ? $matches[3][0] : 0;
+
+		return array(
+			'topic_id'	=> $topic_id,
+			'post_id'	=> $post_id,
+		);
+	}
 }
-- 
cgit v1.2.1


From bd9ece7ab678976db58325d740124b309507b5ca Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Thu, 27 Jun 2013 00:59:37 +0530
Subject: [ticket/9341] Add tests for checking Next and Previous template vars

PHPBB3-9341
---
 tests/functional/paging_test.php | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100644 tests/functional/paging_test.php

(limited to 'tests')

diff --git a/tests/functional/paging_test.php b/tests/functional/paging_test.php
new file mode 100644
index 0000000000..d2e52ccf09
--- /dev/null
+++ b/tests/functional/paging_test.php
@@ -0,0 +1,33 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+/**
+* @group functional
+*/
+class phpbb_functional_paging_test extends phpbb_functional_test_case
+{
+
+	public function test_pagination()
+	{
+		$this->login();
+
+		$post = $this->create_topic(2, 'Test Topic 1', 'This is a test topic posted by the testing framework.');
+		for ($post_id = 1; $post_id < 20; $post_id++)
+		{
+			$this->create_post(2, $post['topic_id'], 'Re: Test Topic 1', 'This is a test post no' . $post_id . ' posted by the testing framework.');
+		}
+		$crawler = self::request('GET', "viewtopic.php?t={$post['topic_id']}&sid={$this->sid}");
+		$link = $crawler->filter('#viewtopic > fieldset > a')->attr('href');
+		$crawler = self::request('GET', $link);
+
+		$crawler = self::request('GET', "viewtopic.php?t={$post['topic_id']}&sid={$this->sid}&start=10");
+		$link = $crawler->filter('#viewtopic > fieldset > a')->attr('href');
+		$crawler = self::request('GET', $link);
+	}
+}
-- 
cgit v1.2.1


From fe4bfd02a3f3b178130c7a8d8bcf66a4ab1c67d4 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Sun, 23 Jun 2013 21:37:54 +0530
Subject: [ticket/10838] Updated RUNNING_TESTS.md

PHPBB3-10838
---
 tests/RUNNING_TESTS.md | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

(limited to 'tests')

diff --git a/tests/RUNNING_TESTS.md b/tests/RUNNING_TESTS.md
index 26a93f0430..bde1455855 100644
--- a/tests/RUNNING_TESTS.md
+++ b/tests/RUNNING_TESTS.md
@@ -114,6 +114,42 @@ only want the slow tests, run:
 
     $ phpBB/vendor/bin/phpunit --group slow
 
+Functional tests
+-----------------
+
+Functional tests test software the way a user would. They simulate a user
+browsing the website, but they do these steps in an automated way.
+phpBB allows you to write such tests. This document will tell you how.
+
+Running
+=======
+
+Running the tests requires your phpBB3 repository to be accessible through a
+local web server. As of PHP 5.4 a builtin webserver is available. If you are
+on PHP 5.3 you will also need to supply the URL to a webserver of your own in
+the 'tests/test_config.php' file. This is as simple as defining the
+'$phpbb_functional_url', which contains the URL for the directory containing
+the board. Make sure you include the trailing slash. Testing makes use of a
+seperate database defined in this config file and before running the tests
+each time this database is deleted. Note that without extensive changes to the
+test framework, you cannot use a board outside of the repository on which to
+run tests.
+
+    $phpbb_functional_url = 'http://localhost/phpBB3/';
+
+On PHP 5.4 you do not need the $phpbb_functional_url parameter but you can
+configure the port the builtin webserver runs on using
+
+    $phpbb_functional_port = 8000;
+
+To then run the tests, you run PHPUnit, but use the phpunit.xml.functional
+config file instead of the default one. Specify this through the "-c" option:
+
+    phpunit -c phpunit.xml.functional
+
+This will change your board's config.php file, but it makes a backup at
+config_dev.php, so you can restore it after the test run is complete.
+
 More Information
 ================
 
-- 
cgit v1.2.1


From 8e575487ff73f3b9c05aceba7b71f06c6e0b032a Mon Sep 17 00:00:00 2001
From: Joseph Warner <hardolaf@hardolaf.com>
Date: Wed, 26 Jun 2013 19:51:52 -0400
Subject: [ticket/11618] Replace glob() with scandir() and string matching

Removes glob from template tests as glob() does not work on all
systems according to PHP documentation as has been noticed by users.

PHPBB3-11618
---
 tests/template/template_test.php | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

(limited to 'tests')

diff --git a/tests/template/template_test.php b/tests/template/template_test.php
index e532de294c..fd68124c89 100644
--- a/tests/template/template_test.php
+++ b/tests/template/template_test.php
@@ -69,9 +69,14 @@ class phpbb_template_template_test extends phpbb_test_case
 			$this->markTestSkipped("Template cache directory ({$template_cache_dir}) is not writable.");
 		}
 
-		foreach (glob($this->template->cachepath . '*') as $file)
+		$file_array = scandir($template_cache_dir);
+		$file_prefix = basename($this->template->cachepath);
+		foreach ($file_array as $file)
 		{
-			unlink($file);
+			if (strpos($file, $file_prefix) === 0)
+			{
+				unlink($template_cache_dir . '/' . $file);
+			}
 		}
 
 		$GLOBALS['config'] = array(
@@ -84,9 +89,15 @@ class phpbb_template_template_test extends phpbb_test_case
 	{
 		if (is_object($this->template))
 		{
-			foreach (glob($this->template->cachepath . '*') as $file)
+			$template_cache_dir = dirname($this->template->cachepath);
+			$file_array = scandir($template_cache_dir);
+			$file_prefix = basename($this->template->cachepath);
+			foreach ($file_array as $file)
 			{
-				unlink($file);
+				if (strpos($file, $file_prefix) === 0)
+				{
+					unlink($template_cache_dir . '/' . $file);
+				}
 			}
 		}
 	}
-- 
cgit v1.2.1


From 22998ee5ee2d3cb4b0e3e34083b2876ab1e9bfb1 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Fri, 28 Jun 2013 00:52:36 +0530
Subject: [ticket/9341] Follow the Next/Prev link in tests follow the next/prev
 link and then assert if the page contains its last post or not

PHPBB3-9341
---
 tests/functional/paging_test.php | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

(limited to 'tests')

diff --git a/tests/functional/paging_test.php b/tests/functional/paging_test.php
index d2e52ccf09..d85ce49aa6 100644
--- a/tests/functional/paging_test.php
+++ b/tests/functional/paging_test.php
@@ -23,11 +23,15 @@ class phpbb_functional_paging_test extends phpbb_functional_test_case
 			$this->create_post(2, $post['topic_id'], 'Re: Test Topic 1', 'This is a test post no' . $post_id . ' posted by the testing framework.');
 		}
 		$crawler = self::request('GET', "viewtopic.php?t={$post['topic_id']}&sid={$this->sid}");
-		$link = $crawler->filter('#viewtopic > fieldset > a')->attr('href');
-		$crawler = self::request('GET', $link);
+		$this->assertContains('post no9', $crawler->text());
 
-		$crawler = self::request('GET', "viewtopic.php?t={$post['topic_id']}&sid={$this->sid}&start=10");
-		$link = $crawler->filter('#viewtopic > fieldset > a')->attr('href');
-		$crawler = self::request('GET', $link);
+		$next_link = $crawler->filter('#viewtopic > fieldset > a.arrow-right')->attr('href');
+		$crawler = self::request('GET', $next_link);
+		$this->assertContains('post no19', $crawler->text());
+
+
+		$prev_link = $crawler->filter('#viewtopic > fieldset > a.arrow-left')->attr('href');
+		$crawler = self::request('GET', $prev_link);
+		$this->assertContains('post no9', $crawler->text());
 	}
 }
-- 
cgit v1.2.1


From 91e773a79538a8fa26bea1d56384379b8730ac70 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Fri, 28 Jun 2013 01:02:00 +0530
Subject: [ticket/9341] Assert that page doesnt contain next or prev page posts

PHPBB3-9341
---
 tests/functional/paging_test.php | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/functional/paging_test.php b/tests/functional/paging_test.php
index d85ce49aa6..d5adc6ad0a 100644
--- a/tests/functional/paging_test.php
+++ b/tests/functional/paging_test.php
@@ -24,14 +24,16 @@ class phpbb_functional_paging_test extends phpbb_functional_test_case
 		}
 		$crawler = self::request('GET', "viewtopic.php?t={$post['topic_id']}&sid={$this->sid}");
 		$this->assertContains('post no9', $crawler->text());
+		$this->assertNotContains('post no19', $crawler->text());
 
 		$next_link = $crawler->filter('#viewtopic > fieldset > a.arrow-right')->attr('href');
 		$crawler = self::request('GET', $next_link);
 		$this->assertContains('post no19', $crawler->text());
-
+		$this->assertNotContains('post no9', $crawler->text());
 
 		$prev_link = $crawler->filter('#viewtopic > fieldset > a.arrow-left')->attr('href');
 		$crawler = self::request('GET', $prev_link);
 		$this->assertContains('post no9', $crawler->text());
+		$this->assertNotContains('post no19', $crawler->text());
 	}
 }
-- 
cgit v1.2.1


From 43053c541ac0f998a3925b7277cfb77f1ceafb11 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Wed, 12 Jun 2013 01:45:07 +0530
Subject: [ticket/11566] add tests for reporting post

Functional test for reporting post and check if captcha validation
is required for guests and not for registerted users

PHPBB3-11566
---
 tests/functional/report_post_captcha.php | 55 ++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)
 create mode 100644 tests/functional/report_post_captcha.php

(limited to 'tests')

diff --git a/tests/functional/report_post_captcha.php b/tests/functional/report_post_captcha.php
new file mode 100644
index 0000000000..6b112c3538
--- /dev/null
+++ b/tests/functional/report_post_captcha.php
@@ -0,0 +1,55 @@
+<?php
+/**
+ *
+ * @package testing
+ * @copyright (c) 2013 phpBB Group
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+ *
+ */
+
+/**
+ * @group functional
+ */
+class phpbb_functional_report_post_captcha_test extends phpbb_functional_test_case
+{
+	public function test_user_report_post()
+	{
+		$this->login();
+		$crawler = self::request('GET', 'report.php?f=2&p=1');
+		$this->assertNotContains($this->lang('CONFIRM_CODE'), $crawler->filter('html')->text());
+	}
+
+	public function test_guest_report_post()
+	{
+		$this->enable_reporting_guest();
+		$crawler = self::request('GET', 'report.php?f=2&p=1');
+		$this->assertContains($this->lang('CONFIRM_CODE'), $crawler->filter('html')->text());
+	}
+
+	protected function enable_reporting_guest()
+	{
+		$this->login();
+		$this->admin_login();
+
+		$crawler = self::request('GET', 'adm/index.php?i=permissions&icat=12&mode=setting_group_local&sid=' . $this->sid);
+		$form = $crawler->selectButton('Submit')->form();
+		$values = $form->getValues();
+		$values["group_id[0]"] = 1;
+		$form->setValues($values);
+		$crawler = self::submit($form);
+
+		$form = $crawler->selectButton('Submit')->form();
+		$values = $form->getValues();
+		$values["forum_id"] = 2;
+		$form->setValues($values);
+		$crawler = self::submit($form);
+
+		$form = $crawler->selectButton('Apply all permissions')->form();
+		$values = $form->getValues();
+		$values["setting[1][2][f_report]"] = 1;
+		$form->setValues($values);
+		$crawler = self::submit($form);
+
+		$crawler = self::request('GET', 'ucp.php?mode=logout&sid=' . $this->sid);
+	}
+}
-- 
cgit v1.2.1


From 1abc3d91d05919f20b31876dbafbb8edec83d724 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Wed, 12 Jun 2013 02:00:24 +0530
Subject: [ticket/11566] Use language variable instead of hardcode

Add language variable in tests

PHPBB3-11566
---
 tests/functional/report_post_captcha.php | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'tests')

diff --git a/tests/functional/report_post_captcha.php b/tests/functional/report_post_captcha.php
index 6b112c3538..e0a67ab6fa 100644
--- a/tests/functional/report_post_captcha.php
+++ b/tests/functional/report_post_captcha.php
@@ -44,7 +44,8 @@ class phpbb_functional_report_post_captcha_test extends phpbb_functional_test_ca
 		$form->setValues($values);
 		$crawler = self::submit($form);
 
-		$form = $crawler->selectButton('Apply all permissions')->form();
+		$this->add_lang('acp/permissions');
+		$form = $crawler->selectButton($this->lang('APPLY_ALL_PERMISSIONS'))->form();
 		$values = $form->getValues();
 		$values["setting[1][2][f_report]"] = 1;
 		$form->setValues($values);
-- 
cgit v1.2.1


From 434d14e1d5c2341584c9d5cfd93840f3eb1a6941 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Wed, 12 Jun 2013 20:00:51 +0530
Subject: [ticket/11566] Revert forum permission changes

Revert the f_report permission for guests in the functional tests

PHPBB3-11566
---
 tests/functional/report_post_captcha.php | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

(limited to 'tests')

diff --git a/tests/functional/report_post_captcha.php b/tests/functional/report_post_captcha.php
index e0a67ab6fa..0585be1332 100644
--- a/tests/functional/report_post_captcha.php
+++ b/tests/functional/report_post_captcha.php
@@ -21,12 +21,13 @@ class phpbb_functional_report_post_captcha_test extends phpbb_functional_test_ca
 
 	public function test_guest_report_post()
 	{
-		$this->enable_reporting_guest();
+		$this->set_reporting_guest(1);
 		$crawler = self::request('GET', 'report.php?f=2&p=1');
 		$this->assertContains($this->lang('CONFIRM_CODE'), $crawler->filter('html')->text());
+		$this->set_reporting_guest(-1);
 	}
 
-	protected function enable_reporting_guest()
+	protected function set_reporting_guest($report_post_allowed)
 	{
 		$this->login();
 		$this->admin_login();
@@ -47,7 +48,7 @@ class phpbb_functional_report_post_captcha_test extends phpbb_functional_test_ca
 		$this->add_lang('acp/permissions');
 		$form = $crawler->selectButton($this->lang('APPLY_ALL_PERMISSIONS'))->form();
 		$values = $form->getValues();
-		$values["setting[1][2][f_report]"] = 1;
+		$values["setting[1][2][f_report]"] = $report_post_allowed;
 		$form->setValues($values);
 		$crawler = self::submit($form);
 
-- 
cgit v1.2.1


From 84ec1f542365d38763b099e0cb9dcc78cc341258 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Mon, 1 Jul 2013 01:34:21 +0530
Subject: [ticket/11566] Check that guest doesn't have reporting permission by
 default

PHPBB3-11566
---
 tests/functional/report_post_captcha.php | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'tests')

diff --git a/tests/functional/report_post_captcha.php b/tests/functional/report_post_captcha.php
index 0585be1332..af713775c5 100644
--- a/tests/functional/report_post_captcha.php
+++ b/tests/functional/report_post_captcha.php
@@ -21,6 +21,10 @@ class phpbb_functional_report_post_captcha_test extends phpbb_functional_test_ca
 
 	public function test_guest_report_post()
 	{
+		$crawler = self::request('GET', 'report.php?f=2&p=1');
+		$this->add_lang('mcp');
+		$this->assertContains($this->lang('USER_CANNOT_REPORT'), $crawler->filter('html')->text());
+
 		$this->set_reporting_guest(1);
 		$crawler = self::request('GET', 'report.php?f=2&p=1');
 		$this->assertContains($this->lang('CONFIRM_CODE'), $crawler->filter('html')->text());
-- 
cgit v1.2.1


From 5ed4dbb5b7aa4a0a00560eb7f3226d81ce54eca5 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Sun, 23 Jun 2013 22:40:55 +0530
Subject: [ticket/10838] separate database used mentioned in unit tests

Separate database used for tests which is deleted each time
tests are run information is added to unit tests.

PHPBB3-10838
---
 tests/RUNNING_TESTS.md | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

(limited to 'tests')

diff --git a/tests/RUNNING_TESTS.md b/tests/RUNNING_TESTS.md
index bde1455855..49c59fd928 100644
--- a/tests/RUNNING_TESTS.md
+++ b/tests/RUNNING_TESTS.md
@@ -47,9 +47,11 @@ Database Tests
 By default all tests requiring a database connection will use sqlite. If you
 do not have sqlite installed the tests will be skipped. If you wish to run the
 tests on a different database you have to create a test_config.php file within
-your tests directory following the same format as phpBB's config.php. An
-example for mysqli can be found below. More information on configuration
-options can be found on the wiki (see below).
+your tests directory following the same format as phpBB's config.php. Testing
+makes use of a seperate database defined in this config file and before running
+the tests each time this database is deleted. An example for mysqli can be
+found below. More information on configuration options can be found on the
+wiki (see below).
 
     <?php
     $dbms = 'mysqli';
@@ -129,11 +131,9 @@ local web server. As of PHP 5.4 a builtin webserver is available. If you are
 on PHP 5.3 you will also need to supply the URL to a webserver of your own in
 the 'tests/test_config.php' file. This is as simple as defining the
 '$phpbb_functional_url', which contains the URL for the directory containing
-the board. Make sure you include the trailing slash. Testing makes use of a
-seperate database defined in this config file and before running the tests
-each time this database is deleted. Note that without extensive changes to the
-test framework, you cannot use a board outside of the repository on which to
-run tests.
+the board. Make sure you include the trailing slash. Note that without extensive
+changes to the test framework, you cannot use a board outside of the repository
+on which to run tests.
 
     $phpbb_functional_url = 'http://localhost/phpBB3/';
 
-- 
cgit v1.2.1


From 9c9f09d640d12400a15a6001b7e8fad597f3f65b Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Thu, 27 Jun 2013 18:38:44 +0530
Subject: [ticket/10838] Fix missing data

PHPBB3-10838
---
 tests/RUNNING_TESTS.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'tests')

diff --git a/tests/RUNNING_TESTS.md b/tests/RUNNING_TESTS.md
index 49c59fd928..d43e503e03 100644
--- a/tests/RUNNING_TESTS.md
+++ b/tests/RUNNING_TESTS.md
@@ -130,7 +130,7 @@ Running the tests requires your phpBB3 repository to be accessible through a
 local web server. As of PHP 5.4 a builtin webserver is available. If you are
 on PHP 5.3 you will also need to supply the URL to a webserver of your own in
 the 'tests/test_config.php' file. This is as simple as defining the
-'$phpbb_functional_url', which contains the URL for the directory containing
+'$phpbb_functional_url' variable, which contains the URL for the directory containing
 the board. Make sure you include the trailing slash. Note that without extensive
 changes to the test framework, you cannot use a board outside of the repository
 on which to run tests.
@@ -145,7 +145,7 @@ configure the port the builtin webserver runs on using
 To then run the tests, you run PHPUnit, but use the phpunit.xml.functional
 config file instead of the default one. Specify this through the "-c" option:
 
-    phpunit -c phpunit.xml.functional
+    $ phpBB/vendor/bin/phpunit -c phpunit.xml.functional
 
 This will change your board's config.php file, but it makes a backup at
 config_dev.php, so you can restore it after the test run is complete.
-- 
cgit v1.2.1


From 89393e11e8e10632520dc80dab638635d773e643 Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Sat, 29 Jun 2013 18:42:17 +0530
Subject: [ticket/10838] Remove php 5.4 and builtin server references

PHPBB3-10838
---
 tests/RUNNING_TESTS.md | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

(limited to 'tests')

diff --git a/tests/RUNNING_TESTS.md b/tests/RUNNING_TESTS.md
index d43e503e03..a6448c9b09 100644
--- a/tests/RUNNING_TESTS.md
+++ b/tests/RUNNING_TESTS.md
@@ -127,8 +127,7 @@ Running
 =======
 
 Running the tests requires your phpBB3 repository to be accessible through a
-local web server. As of PHP 5.4 a builtin webserver is available. If you are
-on PHP 5.3 you will also need to supply the URL to a webserver of your own in
+local web server. You will need to supply the URL to the webserver in
 the 'tests/test_config.php' file. This is as simple as defining the
 '$phpbb_functional_url' variable, which contains the URL for the directory containing
 the board. Make sure you include the trailing slash. Note that without extensive
@@ -137,11 +136,6 @@ on which to run tests.
 
     $phpbb_functional_url = 'http://localhost/phpBB3/';
 
-On PHP 5.4 you do not need the $phpbb_functional_url parameter but you can
-configure the port the builtin webserver runs on using
-
-    $phpbb_functional_port = 8000;
-
 To then run the tests, you run PHPUnit, but use the phpunit.xml.functional
 config file instead of the default one. Specify this through the "-c" option:
 
-- 
cgit v1.2.1


From 440986dc3f941835febf75a30f41b69cb748a15a Mon Sep 17 00:00:00 2001
From: Dhruv <dhruv.goel92@gmail.com>
Date: Sat, 29 Jun 2013 19:32:15 +0530
Subject: [ticket/10838] Fix URL for wiki and remove irrelevant line

PHPBB3-10838
---
 tests/RUNNING_TESTS.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'tests')

diff --git a/tests/RUNNING_TESTS.md b/tests/RUNNING_TESTS.md
index a6448c9b09..23c74f4411 100644
--- a/tests/RUNNING_TESTS.md
+++ b/tests/RUNNING_TESTS.md
@@ -121,7 +121,7 @@ Functional tests
 
 Functional tests test software the way a user would. They simulate a user
 browsing the website, but they do these steps in an automated way.
-phpBB allows you to write such tests. This document will tell you how.
+phpBB allows you to write such tests.
 
 Running
 =======
@@ -148,4 +148,4 @@ More Information
 ================
 
 Further information is available on phpbb wiki:
-http://wiki.phpbb.com/Unit_Tests
+http://wiki.phpbb.com/Automated_Tests
-- 
cgit v1.2.1