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()); } }