diff options
| -rw-r--r-- | tests/functional/private_messages_test.php | 64 | ||||
| -rw-r--r-- | tests/test_framework/phpbb_functional_test_case.php | 67 | 
2 files changed, 123 insertions, 8 deletions
diff --git a/tests/functional/private_messages_test.php b/tests/functional/private_messages_test.php new file mode 100644 index 0000000000..0aa62d95e5 --- /dev/null +++ b/tests/functional/private_messages_test.php @@ -0,0 +1,64 @@ +<?php +/** +* +* @package testing +* @copyright (c) 2012 phpBB Group +* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2 +* +*/ + +/** +* @group functional +*/ +class phpbb_functional_private_messages_test extends phpbb_functional_test_case +{ +	public function test_setup_config() +	{ +		$this->login(); +		$this->admin_login(); + +		$crawler = self::request('GET', "adm/index.php?sid={$this->sid}&i=board&mode=message"); + +		$form = $crawler->selectButton('Submit')->form(); +		$values = $form->getValues(); + +		// Set the maximum number of private messages per folder to 1 +		$values['config[pm_max_msgs]'] = 1; + +		$form->setValues($values); + +		$crawler = self::submit($form); +		$this->assertContains($this->lang('CONFIG_UPDATED'), $crawler->filter('.successbox')->text()); +	} + +	public function test_inbox_full() +	{ +		$this->login(); +		$message_id = $this->create_private_message('Test private message #1', 'This is a test private message sent by the testing framework.', array(2)); + +		$crawler = self::request('GET', "ucp.php?i=pm&mode=view&sid{$this->sid}&p={$message_id}"); +		$this->assertContains($this->lang('UCP_PM_VIEW'), $crawler->filter('html')->text()); + +		$message_id = $this->create_private_message('Test private message #2', 'This is a test private message sent by the testing framework.', array(2)); + +		$crawler = self::request('GET', "ucp.php?i=pm&mode=view&sid{$this->sid}&p={$message_id}"); +		$this->assertContains($this->lang('NO_AUTH_READ_HOLD_MESSAGE'), $crawler->filter('html')->text()); +	} +	public function test_restore_config() +	{ +		$this->login(); +		$this->admin_login(); + +		$crawler = self::request('GET', "adm/index.php?sid={$this->sid}&i=board&mode=message"); + +		$form = $crawler->selectButton('Submit')->form(); +		$values = $form->getValues(); + +		$values['config[pm_max_msgs]'] = 50; + +		$form->setValues($values); + +		$crawler = self::submit($form); +		$this->assertContains($this->lang('CONFIG_UPDATED'), $crawler->filter('.successbox')->text()); +	} +} diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php index 5dfe07d380..c71cd4d0a9 100644 --- a/tests/test_framework/phpbb_functional_test_case.php +++ b/tests/test_framework/phpbb_functional_test_case.php @@ -665,6 +665,64 @@ class phpbb_functional_test_case extends phpbb_test_case  	{  		$this->add_lang('posting'); +		$crawler = $this->submit_message($posting_url, $posting_contains, $form_data); + +		$this->assertContains($this->lang('POST_STORED'), $crawler->filter('html')->text()); +		$url = $crawler->selectLink($this->lang('VIEW_MESSAGE', '', ''))->link()->getUri(); + +		return array( +			'topic_id'	=> $this->get_parameter_from_link($url, 't'), +			'post_id'	=> $this->get_parameter_from_link($url, 'p'), +		); +	} + +	/** +	* Creates a private message +	* +	* Be sure to login before creating +	* +	* @param string $subject +	* @param string $message +	* @param array $to +	* @param array $additional_form_data Any additional form data to be sent in the request +	* @return int private_message_id +	*/ +	public function create_private_message($subject, $message, $to, $additional_form_data = array()) +	{ +		$this->add_lang(array('ucp', 'posting')); + +		$posting_url = "ucp.php?i=pm&mode=compose&sid={$this->sid}"; + +		$form_data = array_merge(array( +			'subject'		=> $subject, +			'message'		=> $message, +			'post'			=> true, +		), $additional_form_data); + +		foreach ($to as $user_id) +		{ +			$form_data['address_list[u][' . $user_id . ']'] = 'to'; +		} + +		$crawler = self::submit_message($posting_url, 'POST_NEW_PM', $form_data); + +		$this->assertContains($this->lang('MESSAGE_STORED'), $crawler->filter('html')->text()); +		$url = $crawler->selectLink($this->lang('VIEW_PRIVATE_MESSAGE', '', ''))->link()->getUri(); + +		return $this->get_parameter_from_link($url, 'p'); +	} + +	/** +	* Helper for submitting a message (post or private message) +	* +	* @param string $posting_url +	* @param string $posting_contains +	* @param array $form_data +	* @return \Symfony\Component\DomCrawler\Crawler the crawler object +	*/ +	protected function submit_message($posting_url, $posting_contains, $form_data) +	{ +  		$crawler = self::request('GET', $posting_url);  		$this->assertContains($this->lang($posting_contains), $crawler->filter('html')->text()); @@ -689,14 +747,7 @@ class phpbb_functional_test_case extends phpbb_test_case  		// 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(); - -		return array( -			'topic_id'	=> $this->get_parameter_from_link($url, 't'), -			'post_id'	=> $this->get_parameter_from_link($url, 'p'), -		); +		return  self::request('POST', $posting_url, $form_data);  	}  	/**  | 
