mirror of
https://github.com/phpbb/phpbb.git
synced 2025-02-25 04:23:38 +01:00
103 lines
3.2 KiB
PHP
103 lines
3.2 KiB
PHP
<?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_posting_test extends phpbb_functional_test_case
|
|
{
|
|
public function test_post_new_topic()
|
|
{
|
|
$this->login();
|
|
$this->add_lang('posting');
|
|
|
|
$crawler = $this->request('GET', 'posting.php?mode=post&f=2&sid=' . $this->sid);
|
|
$this->assertContains($this->lang('POST_TOPIC'), $crawler->filter('html')->text());
|
|
|
|
$hidden_fields = array();
|
|
$hidden_fields[] = $crawler->filter('[type="hidden"]')->each(function ($node, $i) {
|
|
return array('name' => $node->getAttribute('name'), 'value' => $node->getAttribute('value'));
|
|
});
|
|
|
|
$test_message = 'This is a test topic posted by the testing framework.';
|
|
$form_data = array(
|
|
'subject' => 'Test Topic 1',
|
|
'message' => $test_message,
|
|
'post' => true,
|
|
'f' => 2,
|
|
'mode' => 'post',
|
|
'sid' => $this->sid,
|
|
);
|
|
|
|
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 = $this->client->request('POST', 'posting.php', $form_data);
|
|
$this->assertContains($this->lang('POST_STORED'), $crawler->filter('html')->text());
|
|
|
|
$crawler = $this->request('GET', 'viewtopic.php?t=2&sid=' . $this->sid);
|
|
$this->assertContains($test_message, $crawler->filter('html')->text());
|
|
}
|
|
|
|
public function test_post_reply()
|
|
{
|
|
$this->login();
|
|
$this->add_lang('posting');
|
|
|
|
$crawler = $this->request('GET', 'posting.php?mode=reply&t=2&f=2&sid=' . $this->sid);
|
|
$this->assertContains($this->lang('POST_REPLY'), $crawler->filter('html')->text());
|
|
|
|
$hidden_fields = array();
|
|
$hidden_fields[] = $crawler->filter('[type="hidden"]')->each(function ($node, $i) {
|
|
return array('name' => $node->getAttribute('name'), 'value' => $node->getAttribute('value'));
|
|
});
|
|
|
|
$test_message = 'This is a test post posted by the testing framework.';
|
|
$form_data = array(
|
|
'subject' => 'Re: Test Topic 1',
|
|
'message' => $test_message,
|
|
'post' => true,
|
|
't' => 2,
|
|
'f' => 2,
|
|
'mode' => 'reply',
|
|
'sid' => $this->sid,
|
|
);
|
|
|
|
foreach ($hidden_fields as $fields)
|
|
{
|
|
foreach($fields as $field)
|
|
{
|
|
$form_data[$field['name']] = $field['value'];
|
|
}
|
|
}
|
|
|
|
// For reasoning behind the following command, see the test_post_new_topic() test
|
|
$form_data['lastclick'] = 0;
|
|
|
|
// Submit the post
|
|
$crawler = $this->client->request('POST', 'posting.php', $form_data);
|
|
$this->assertContains($this->lang('POST_STORED'), $crawler->filter('html')->text());
|
|
|
|
$crawler = $this->request('GET', 'viewtopic.php?t=2&sid=' . $this->sid);
|
|
$this->assertContains($test_message, $crawler->filter('html')->text());
|
|
}
|
|
}
|