aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_framework/phpbb_functional_test_case.php
diff options
context:
space:
mode:
authorNathaniel Guse <nathaniel.guse@gmail.com>2013-07-01 12:03:24 -0500
committerNathaniel Guse <nathaniel.guse@gmail.com>2013-07-01 12:03:24 -0500
commitf08330f7620f16ed6a127768a74ef6748bcb972c (patch)
tree830f92f229f243092e1dd61429ee843509e79951 /tests/test_framework/phpbb_functional_test_case.php
parent8c75d1c1bc494220bed313e542902cdc22c5336f (diff)
parent8233c3e340a3608a6952ef444143a10e668d6561 (diff)
downloadforums-f08330f7620f16ed6a127768a74ef6748bcb972c.tar
forums-f08330f7620f16ed6a127768a74ef6748bcb972c.tar.gz
forums-f08330f7620f16ed6a127768a74ef6748bcb972c.tar.bz2
forums-f08330f7620f16ed6a127768a74ef6748bcb972c.tar.xz
forums-f08330f7620f16ed6a127768a74ef6748bcb972c.zip
Merge branch 'develop' of https://github.com/phpbb/phpbb3 into feature/twig
# By Dhruv (7) and others # Via Andreas Fischer (7) and others * 'develop' of https://github.com/phpbb/phpbb3: [ticket/11593] initialize $is_expr as null before being passed to get_varref [ticket/9341] Assert that page doesnt contain next or prev page posts [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 [ticket/9341] remove PREV_PAGE tpl var used for backward compatability [ticket/11618] Replace glob() with scandir() and string matching [ticket/9341] Add tests for checking Next and Previous template vars [ticket/9341] Move create_topic and post into functional test case [ticket/11615] Fix typo in creation_test [ticket/11615] Remove magic number in creation_test [ticket/11615] Rename class in file to match [ticket/11615] Rename init_test to creation_test for clarity [ticket/9341] Use U_PREVIOUS and U_NEXT in template files [ticket/9341] Correctly named template vars Conflicts: tests/template/template_test_case.php
Diffstat (limited to 'tests/test_framework/phpbb_functional_test_case.php')
-rw-r--r--tests/test_framework/phpbb_functional_test_case.php101
1 files changed, 101 insertions, 0 deletions
diff --git a/tests/test_framework/phpbb_functional_test_case.php b/tests/test_framework/phpbb_functional_test_case.php
index e5da8de4ae..7e2e750e30 100644
--- a/tests/test_framework/phpbb_functional_test_case.php
+++ b/tests/test_framework/phpbb_functional_test_case.php
@@ -736,4 +736,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,
+ );
+ }
}