diff --git a/contrib/bulk_add/test.php b/contrib/bulk_add/test.php new file mode 100644 index 00000000..6eb23f27 --- /dev/null +++ b/contrib/bulk_add/test.php @@ -0,0 +1,15 @@ +log_in_as_admin(); + + $this->get_page('admin'); + $this->assertTitle("Admin Tools"); + $this->setField('dir', "contrib/simpletest"); + $this->click("Add"); + $this->delete_image($image_id); + + $this->log_out(); + } +} +?> diff --git a/contrib/pm/main.php b/contrib/pm/main.php index 5a176a76..437a7af9 100644 --- a/contrib/pm/main.php +++ b/contrib/pm/main.php @@ -65,6 +65,7 @@ class PM extends SimpleExtension { } public function onPageRequest($event) { + global $database, $page, $user; if($event->page_matches("pm")) { if(!$user->is_anonymous()) { switch($event->get_arg(0)) { @@ -93,7 +94,7 @@ class PM extends SimpleExtension { $database->execute("DELETE FROM private_message WHERE id = ?", array($pm_id)); log_info("pm", "Deleted PM #$pm_id"); $page->set_mode("redirect"); - $page->set_redirect(make_link("user")); + $page->set_redirect(make_link($_SERVER["REFERER"])); } else { // permission denied @@ -108,12 +109,16 @@ class PM extends SimpleExtension { $page->set_mode("redirect"); $page->set_redirect(make_link($_SERVER["REFERER"])); break; + default: + $this->theme->display_error($page, "Invalid action", "That's not something you can do with a PM"); + break; } } } } public function onSendPM($event) { + global $database; $database->execute(" INSERT INTO private_message( from_id, from_ip, to_id, @@ -122,7 +127,7 @@ class PM extends SimpleExtension { array($event->from_id, $event->from_ip, $event->to_id, $event->subject, $event->message) ); - log_info("pm", "Sent PM to User #$to_id"); + log_info("pm", "Sent PM to User #{$event->to_id}"); } diff --git a/contrib/pm/test.php b/contrib/pm/test.php new file mode 100644 index 00000000..905f7101 --- /dev/null +++ b/contrib/pm/test.php @@ -0,0 +1,42 @@ +log_in_as_admin(); + $this->get_page("user/test"); + $this->setField('subject', "message demo to test"); + $this->setField('message', "message contents"); + $this->click("Send"); + $this->log_out(); + + $this->log_in_as_user(); + $this->get_page("user"); + $this->assertText("message demo to test"); + $this->click("message demo to test"); + $this->assertText("message contents"); + $this->back(); + $this->click("Delete"); + $this->assertNoText("message demo to test"); + $this->log_out(); + } + + function testAdminAccess() { + $this->log_in_as_admin(); + $this->get_page("user/test"); + $this->setField('subject', "message demo to test"); + $this->setField('message', "message contents"); + $this->click("Send"); + + $this->get_page("user/test"); + $this->assertText("message demo to test"); + $this->click("message demo to test"); + $this->assertText("message contents"); + $this->back(); + $this->click("Delete"); + # Test for bug: after an admin deletes a user's PM, they were + # redirected to their own (the admin's) PM list + $this->assertTitle("test's page"); + $this->assertNoText("message demo to test"); + $this->log_out(); + } +} +?> diff --git a/contrib/pm/theme.php b/contrib/pm/theme.php index 757ecd11..7454d8f8 100644 --- a/contrib/pm/theme.php +++ b/contrib/pm/theme.php @@ -24,7 +24,10 @@ class PMTheme extends Themelet { if($pm["is_read"] == "N") $h_subject = "$h_subject"; $html .= "$h_subject $h_from$h_date -
"; +
+ + +
"; } $html .= " diff --git a/contrib/rating/main.php b/contrib/rating/main.php index c444b8ed..34f16da1 100644 --- a/contrib/rating/main.php +++ b/contrib/rating/main.php @@ -28,7 +28,7 @@ class Ratings implements Extension { $this->install(); } - $config->set_default_string("ext_rating_anon_privs", 'sq'); + $config->set_default_string("ext_rating_anon_privs", 'squ'); $config->set_default_string("ext_rating_user_privs", 'squ'); $config->set_default_string("ext_rating_admin_privs", 'sqeu'); } diff --git a/contrib/report_image/test.php b/contrib/report_image/test.php new file mode 100644 index 00000000..b347dde0 --- /dev/null +++ b/contrib/report_image/test.php @@ -0,0 +1,23 @@ +log_in_as_user(); + $image_id = $this->post_image("ext/simpletest/data/pbx_screenshot.jpg", "pbx computer screenshot"); + $this->get_page("post/view/$image_id"); + $this->setField('reason', "report details"); + $this->click("Report"); + $this->log_out(); + + $this->log_in_as_admin(); + $this->get_page("image_report/list"); + $this->assertTitle("Reported Images"); + $this->assertText("report details"); + $this->click("Remove Report"); + $this->assertTitle("Reported Images"); + $this->assertNoText("report details"); + + $this->delete_image($image_id); + $this->log_out(); + } +} +?> diff --git a/contrib/report_image/theme.php b/contrib/report_image/theme.php index 6cfc99f5..0f4cf98c 100755 --- a/contrib/report_image/theme.php +++ b/contrib/report_image/theme.php @@ -78,7 +78,7 @@ class ReportImageTheme extends Themelet { $html = "
- +
"; diff --git a/contrib/res_limit/test.php b/contrib/res_limit/test.php new file mode 100644 index 00000000..5a10ffb4 --- /dev/null +++ b/contrib/res_limit/test.php @@ -0,0 +1,110 @@ +log_in_as_admin(); + $this->get_page("setup"); + $this->setField("_config_upload_min_height", "0"); + $this->setField("_config_upload_min_width", "0"); + $this->setField("_config_upload_max_height", "1000"); + $this->setField("_config_upload_max_width", "1000"); + $this->setField("_config_upload_ratios", "4:3 16:9"); + $this->click("Save Settings"); + $this->log_out(); + + $this->log_in_as_user(); + $image_id = $this->post_image("ext/simpletest/data/pbx_screenshot.jpg", "pbx computer screenshot"); + $this->assertResponse(302); + $this->log_out(); + + $this->log_in_as_admin(); + $this->delete_image($image_id); + $this->log_out(); + } + + function testResLimitSmall() { + $this->log_in_as_admin(); + $this->get_page("setup"); + $this->setField("_config_upload_min_height", "900"); + $this->setField("_config_upload_min_width", "900"); + $this->setField("_config_upload_max_height", "1000"); + $this->setField("_config_upload_max_width", "1000"); + $this->setField("_config_upload_ratios", "4:3 16:9"); + $this->click("Save Settings"); + $this->log_out(); + + $this->log_in_as_user(); + $image_id = $this->post_image("ext/simpletest/data/pbx_screenshot.jpg", "pbx computer screenshot"); + $this->assertResponse(200); + $this->assertTitle("Upload Status"); + $this->assertText("Image too small"); + $this->log_out(); + + # hopefully a noop, but just in case + $this->log_in_as_admin(); + $this->delete_image($image_id); + $this->log_out(); + } + + function testResLimitLarge() { + $this->log_in_as_admin(); + $this->get_page("setup"); + $this->setField("_config_upload_min_height", "0"); + $this->setField("_config_upload_min_width", "0"); + $this->setField("_config_upload_max_height", "100"); + $this->setField("_config_upload_max_width", "100"); + $this->setField("_config_upload_ratios", "4:3 16:9"); + $this->click("Save Settings"); + $this->log_out(); + + $this->log_in_as_user(); + $image_id = $this->post_image("ext/simpletest/data/pbx_screenshot.jpg", "pbx computer screenshot"); + $this->assertResponse(200); + $this->assertTitle("Upload Status"); + $this->assertText("Image too large"); + $this->log_out(); + + # hopefully a noop, but just in case + $this->log_in_as_admin(); + $this->delete_image($image_id); + $this->log_out(); + } + + function testResLimitRatio() { + $this->log_in_as_admin(); + $this->get_page("setup"); + $this->setField("_config_upload_min_height", "0"); + $this->setField("_config_upload_min_width", "0"); + $this->setField("_config_upload_max_height", "1000"); + $this->setField("_config_upload_max_width", "1000"); + $this->setField("_config_upload_ratios", "16:9"); + $this->click("Save Settings"); + $this->log_out(); + + $this->log_in_as_user(); + $image_id = $this->post_image("ext/simpletest/data/pbx_screenshot.jpg", "pbx computer screenshot"); + $this->assertResponse(200); + $this->assertTitle("Upload Status"); + $this->assertText("Image needs to be in one of these ratios"); + $this->log_out(); + + # hopefully a noop, but just in case + $this->log_in_as_admin(); + $this->delete_image($image_id); + $this->log_out(); + } + + # reset to defaults, otherwise this can interfere with + # other extensions' test suites + public function tearDown() { + $this->log_in_as_admin(); + $this->get_page("setup"); + $this->setField("_config_upload_min_height", "-1"); + $this->setField("_config_upload_min_width", "-1"); + $this->setField("_config_upload_max_height", "-1"); + $this->setField("_config_upload_max_width", "-1"); + $this->setField("_config_upload_ratios", ""); + $this->click("Save Settings"); + $this->log_out(); + } +} +?> diff --git a/contrib/tag_history/main.php b/contrib/tag_history/main.php index b450d840..1375daa5 100644 --- a/contrib/tag_history/main.php +++ b/contrib/tag_history/main.php @@ -127,7 +127,7 @@ class Tag_History implements Extension { $stored_tags = $result->fields['tags']; // all should be ok so we can revert by firing the SetUserTags event. - send_event(new TagSetEvent($stored_image_id, $stored_tags)); + send_event(new TagSetEvent(Image::by_id($stored_image_id), $stored_tags)); // all should be done now so redirect the user back to the image $page->set_mode("redirect"); diff --git a/contrib/tag_history/test.php b/contrib/tag_history/test.php new file mode 100644 index 00000000..3f1dfd33 --- /dev/null +++ b/contrib/tag_history/test.php @@ -0,0 +1,22 @@ +log_in_as_user(); + $image_id = $this->post_image("ext/simpletest/data/pbx_screenshot.jpg", "pbx"); + $this->get_page("post/view/$image_id"); + $this->assertTitle("Image $image_id: pbx"); + $this->setField("tags", "new"); + $this->click("Set"); + $this->assertTitle("Image $image_id: new"); + $this->click("Tag History"); + $this->assertText("new (Set by test"); + $this->click("Revert"); + $this->assertTitle("Image $image_id: pbx"); + $this->log_out(); + + $this->log_in_as_admin(); + $this->delete_image($image_id); + $this->log_out(); + } +} +?> diff --git a/contrib/tag_history/theme.php b/contrib/tag_history/theme.php index a1e75929..6853d5d3 100644 --- a/contrib/tag_history/theme.php +++ b/contrib/tag_history/theme.php @@ -2,16 +2,18 @@ class Tag_HistoryTheme extends Themelet { public function display_history_page(Page $page, $image_id, $history) { + global $user; $start_string = "