Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
| Total | |
0.00% |
0 / 78 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 1 |
| phpbb_functional_memberlist_test | |
0.00% |
0 / 78 |
|
0.00% |
0 / 8 |
72 | |
0.00% |
0 / 1 |
| test_memberlist | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
2 | |||
| test_viewprofile | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
2 | |||
| get_memberlist_leaders_table_crawler | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
| test_leaders | |
0.00% |
0 / 9 |
|
0.00% |
0 / 1 |
2 | |||
| test_leaders_remove_users | |
0.00% |
0 / 9 |
|
0.00% |
0 / 1 |
2 | |||
| test_leaders_add_users | |
0.00% |
0 / 13 |
|
0.00% |
0 / 1 |
2 | |||
| test_group_rank | |
0.00% |
0 / 17 |
|
0.00% |
0 / 1 |
2 | |||
| test_email | |
0.00% |
0 / 17 |
|
0.00% |
0 / 1 |
2 | |||
| 1 | <?php |
| 2 | /** |
| 3 | * |
| 4 | * This file is part of the phpBB Forum Software package. |
| 5 | * |
| 6 | * @copyright (c) phpBB Limited <https://www.phpbb.com> |
| 7 | * @license GNU General Public License, version 2 (GPL-2.0) |
| 8 | * |
| 9 | * For full copyright and license information, please see |
| 10 | * the docs/CREDITS.txt file. |
| 11 | * |
| 12 | */ |
| 13 | |
| 14 | /** |
| 15 | * @group functional |
| 16 | */ |
| 17 | class phpbb_functional_memberlist_test extends phpbb_functional_test_case |
| 18 | { |
| 19 | public function test_memberlist() |
| 20 | { |
| 21 | $this->create_user('memberlist-test-user'); |
| 22 | // logs in as admin |
| 23 | $this->login(); |
| 24 | $crawler = self::request('GET', 'memberlist.php?sid=' . $this->sid); |
| 25 | $this->assertStringContainsString('memberlist-test-user', $crawler->text()); |
| 26 | |
| 27 | // restrict by first character |
| 28 | $crawler = self::request('GET', 'memberlist.php?first_char=m&sid=' . $this->sid); |
| 29 | $this->assertStringContainsString('memberlist-test-user', $crawler->text()); |
| 30 | |
| 31 | // make sure results for wrong character are not returned |
| 32 | $crawler = self::request('GET', 'memberlist.php?first_char=a&sid=' . $this->sid); |
| 33 | $this->assertStringNotContainsString('memberlist-test-user', $crawler->text()); |
| 34 | } |
| 35 | |
| 36 | public function test_viewprofile() |
| 37 | { |
| 38 | $this->login(); |
| 39 | // XXX hardcoded user id |
| 40 | $crawler = self::request('GET', 'memberlist.php?mode=viewprofile&u=2&sid=' . $this->sid); |
| 41 | $this->assertStringContainsString('admin', $crawler->filter('h2')->text()); |
| 42 | } |
| 43 | |
| 44 | protected function get_memberlist_leaders_table_crawler() |
| 45 | { |
| 46 | $crawler = self::request('GET', 'app.php/members/team'); |
| 47 | return $crawler->filter('.forumbg-table'); |
| 48 | } |
| 49 | |
| 50 | public function test_leaders() |
| 51 | { |
| 52 | $this->login(); |
| 53 | $this->create_user('memberlist-test-moderator'); |
| 54 | |
| 55 | $crawler = $this->get_memberlist_leaders_table_crawler(); |
| 56 | |
| 57 | // Admin in admin group, but not in moderators |
| 58 | $this->assertStringContainsString('admin', $crawler->eq(0)->text()); |
| 59 | $this->assertStringNotContainsString('admin', $crawler->eq(1)->text()); |
| 60 | |
| 61 | // memberlist-test-user in neither group |
| 62 | $this->assertStringNotContainsString('memberlist-test-user', $crawler->eq(0)->text()); |
| 63 | $this->assertStringNotContainsString('memberlist-test-user', $crawler->eq(1)->text()); |
| 64 | |
| 65 | // memberlist-test-moderator in neither group |
| 66 | $this->assertStringNotContainsString('memberlist-test-moderator', $crawler->eq(0)->text()); |
| 67 | $this->assertStringNotContainsString('memberlist-test-moderator', $crawler->eq(1)->text()); |
| 68 | } |
| 69 | |
| 70 | public function test_leaders_remove_users() |
| 71 | { |
| 72 | $this->login(); |
| 73 | |
| 74 | // Remove admin from admins, but is now in moderators |
| 75 | $this->remove_user_group('ADMINISTRATORS', array('admin')); |
| 76 | $crawler = $this->get_memberlist_leaders_table_crawler(); |
| 77 | $this->assertStringNotContainsString('admin', $crawler->eq(0)->text()); |
| 78 | $this->assertStringContainsString('admin', $crawler->eq(1)->text()); |
| 79 | |
| 80 | // Remove admin from moderators, should not be visible anymore |
| 81 | $this->remove_user_group('GLOBAL_MODERATORS', array('admin')); |
| 82 | $crawler = $this->get_memberlist_leaders_table_crawler(); |
| 83 | $this->assertStringNotContainsString('admin', $crawler->eq(0)->text()); |
| 84 | $this->assertStringNotContainsString('admin', $crawler->eq(1)->text()); |
| 85 | } |
| 86 | |
| 87 | public function test_leaders_add_users() |
| 88 | { |
| 89 | $this->login(); |
| 90 | |
| 91 | // Add memberlist-test-moderator to moderators |
| 92 | $this->add_user_group('GLOBAL_MODERATORS', array('memberlist-test-moderator')); |
| 93 | $crawler = $this->get_memberlist_leaders_table_crawler(); |
| 94 | $this->assertStringNotContainsString('memberlist-test-moderator', $crawler->eq(0)->text()); |
| 95 | $this->assertStringContainsString('memberlist-test-moderator', $crawler->eq(1)->text()); |
| 96 | |
| 97 | // Add admin to moderators, should be visible as moderator |
| 98 | $this->add_user_group('GLOBAL_MODERATORS', array('admin'), true); |
| 99 | $crawler = $this->get_memberlist_leaders_table_crawler(); |
| 100 | $this->assertStringNotContainsString('admin', $crawler->eq(0)->text()); |
| 101 | $this->assertStringContainsString('admin', $crawler->eq(1)->text()); |
| 102 | |
| 103 | // Add admin to admins as leader, should be visible as admin, not moderator |
| 104 | $this->add_user_group('ADMINISTRATORS', array('admin'), true, true); |
| 105 | $crawler = $this->get_memberlist_leaders_table_crawler(); |
| 106 | $this->assertStringContainsString('admin', $crawler->eq(0)->text()); |
| 107 | $this->assertStringNotContainsString('admin', $crawler->eq(1)->text()); |
| 108 | } |
| 109 | |
| 110 | public function test_group_rank() |
| 111 | { |
| 112 | copy(__DIR__ . '/fixtures/files/valid.jpg', __DIR__ . '/../../phpBB/images/ranks/valid.jpg'); |
| 113 | |
| 114 | $this->login(); |
| 115 | $this->admin_login(); |
| 116 | $this->add_lang(array('acp/groups', 'acp/posting')); |
| 117 | |
| 118 | // Set a group rank to the registered users |
| 119 | $crawler = self::request('GET', "adm/index.php?sid={$this->sid}&i=acp_groups&mode=manage&action=edit&g=2"); |
| 120 | $form = $crawler->selectButton('Submit')->form(); |
| 121 | $form['group_rank']->select('1'); |
| 122 | $crawler = self::submit($form); |
| 123 | $this->assertContainsLang('GROUP_UPDATED', $crawler->filter('.successbox')->text()); |
| 124 | |
| 125 | // Set a rank image for site_admin |
| 126 | $crawler = self::request('GET', "adm/index.php?sid={$this->sid}&i=acp_ranks&mode=ranks&action=edit&id=1"); |
| 127 | $form = $crawler->selectButton('Submit')->form(); |
| 128 | $form['rank_image']->select('valid.jpg'); |
| 129 | $crawler = self::submit($form); |
| 130 | $this->assertContainsLang('RANK_UPDATED', $crawler->filter('.successbox')->text()); |
| 131 | |
| 132 | $crawler = self::request('GET', 'memberlist.php?mode=group&g=2'); |
| 133 | $this->assertStringContainsString('memberlist-test-user', $crawler->text()); |
| 134 | |
| 135 | unlink(__DIR__ . '/../../phpBB/images/ranks/valid.jpg'); |
| 136 | } |
| 137 | |
| 138 | public function test_email() |
| 139 | { |
| 140 | $this->login(); |
| 141 | $this->admin_login(); |
| 142 | $this->add_lang(['acp/board', 'acp/common', 'memberlist']); |
| 143 | |
| 144 | $crawler = self::request('GET', "adm/index.php?sid={$this->sid}&i=acp_board&mode=email"); |
| 145 | $form = $crawler->selectButton('Submit')->form([ |
| 146 | 'config[board_email_form]' => 1, |
| 147 | ]); |
| 148 | $crawler = self::submit($form); |
| 149 | $this->assertContainsLang('CONFIG_UPDATED', $crawler->filter('.successbox')->text()); |
| 150 | |
| 151 | $crawler = self::request('GET', 'memberlist.php?mode=email&u=2'); |
| 152 | $this->assertStringContainsString($this->lang('SEND_EMAIL_USER', 'admin'), $crawler->filter('.titlespace')->text()); |
| 153 | |
| 154 | $form = $crawler->selectButton($this->lang('SEND_EMAIL'))->form([ |
| 155 | 'subject' => 'Test email form message', |
| 156 | 'message' => 'This is a test email message sent from a member profile email form.', |
| 157 | ]); |
| 158 | $crawler = self::submit($form); |
| 159 | |
| 160 | $this->assertContainsLang('EMAIL_SENT', $crawler->text()); |
| 161 | } |
| 162 | } |