phpbb/tests/functional/browse_disabled_test.php
2024-02-23 20:37:16 +01:00

163 lines
5 KiB
PHP

<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @license GNU General Public License, version 2 (GPL-2.0)
*
* For full copyright and license information, please see
* the docs/CREDITS.txt file.
*
*/
/**
* @group functional
*/
class phpbb_functional_browse_disabled_test extends phpbb_functional_test_case
{
public function setUp(): void
{
parent::setUp();
$this->login();
$this->admin_login();
// Disable board
$crawler = self::request('GET', 'adm/index.php?i=acp_board&mode=settings&sid=' . $this->sid);
$form = $crawler->selectButton('Submit')->form();
$form->setValues(['config[board_disable]' => 1]);
$crawler = self::submit($form);
$this->assertContainsLang('CONFIG_UPDATED', $crawler->filter('div[class="successbox"] > p')->text());
$this->logout();
}
public function tearDown(): void
{
$this->login();
$this->admin_login();
// Disable board
$crawler = self::request('GET', 'adm/index.php?i=acp_board&mode=settings&sid=' . $this->sid);
$form = $crawler->selectButton('Submit')->form();
$form->setValues(['config[board_disable]' => 0]);
$crawler = self::submit($form);
$this->assertContainsLang('CONFIG_UPDATED', $crawler->filter('div[class="successbox"] > p')->text());
$this->logout();
parent::tearDown();
}
public function test_disabled_index_admin()
{
$this->login();
$this->admin_login();
// Board should be fully visible for all variations for admins
for ($i = 0; $i <= 2; $i++)
{
$crawler = self::request('GET', 'adm/index.php?i=acp_board&mode=settings&sid=' . $this->sid);
$form = $crawler->selectButton('Submit')->form();
$form->setValues(['config[board_disable_access]' => $i]);
$crawler = self::submit($form);
$this->assertContainsLang('CONFIG_UPDATED', $crawler->filter('div[class="successbox"] > p')->text());
$crawler = self::request('GET', 'index.php');
$this->assertGreaterThan(0, $crawler->filter('.topiclist')->count());
$this->assertContainsLang('BOARD_DISABLED', $crawler->filter('div[class="rules"]')->text());
}
$this->logout();
}
public function test_disabled_index_global_moderator()
{
$this->create_user('moderator-disabled-index');
$this->add_user_group('GLOBAL_MODERATORS', ['moderator-disabled-index']);
// Board should be fully visible for options 1 & 2
for ($i = 0; $i <= 2; $i++)
{
$this->login();
$this->admin_login();
$crawler = self::request('GET', 'adm/index.php?i=acp_board&mode=settings&sid=' . $this->sid);
$form = $crawler->selectButton('Submit')->form();
$form->setValues(['config[board_disable_access]' => $i]);
$crawler = self::submit($form);
$this->assertContainsLang('CONFIG_UPDATED', $crawler->filter('div[class="successbox"] > p')->text());
$this->logout();
$this->login('moderator-disabled-index');
$crawler = self::request('GET', 'index.php');
if ($i == 0)
{
$this->assertEquals(0, $crawler->filter('.topiclist')->count(), 'Board should not be visible for option ' . $i);
$this->assertContainsLang('BOARD_DISABLE', $crawler->filter('div#message')->text());
}
else
{
$this->assertGreaterThan(0, $crawler->filter('.topiclist')->count(), 'Board should be visible for option ' . $i);
$this->assertContainsLang('BOARD_DISABLED', $crawler->filter('div[class="rules"]')->text());
}
$this->logout();
}
}
public function test_disabled_index_local_moderator()
{
$user_id = $this->create_user('moduser-disabled-index');
// Set m_delete to yes for user --> user has moderator permission
$this->add_lang('acp/permissions');
$this->login();
$this->admin_login();
$crawler = self::request('GET', "adm/index.php?i=acp_permissions&icat=16&mode=setting_user_local&user_id[0]=$user_id&forum_id[0]=2&type=m_&sid={$this->sid}");
$form = $crawler->selectButton($this->lang('APPLY_PERMISSIONS'))->form();
$data = array("setting[$user_id][2][m_edit]" => ACL_YES);
$form->setValues($data);
self::submit($form);
$this->logout();
// Board should be fully visible for option 2 only
for ($i = 0; $i <= 2; $i++)
{
$this->login();
$this->admin_login();
$crawler = self::request('GET', 'adm/index.php?i=acp_board&mode=settings&sid=' . $this->sid);
$form = $crawler->selectButton('Submit')->form();
$form->setValues(['config[board_disable_access]' => $i]);
$crawler = self::submit($form);
$this->assertContainsLang('CONFIG_UPDATED', $crawler->filter('div[class="successbox"] > p')->text());
$this->logout();
$this->login('moduser-disabled-index');
$crawler = self::request('GET', 'index.php');
if ($i < 2)
{
$this->assertEquals(0, $crawler->filter('.topiclist')->count(), 'Board should not be visible for option ' . $i);
$this->assertContainsLang('BOARD_DISABLE', $crawler->filter('div#message')->text());
}
else
{
$this->assertGreaterThan(0, $crawler->filter('.topiclist')->count(), 'Board should be visible for option ' . $i);
$this->assertContainsLang('BOARD_DISABLED', $crawler->filter('div[class="rules"]')->text());
}
$this->logout();
}
}
}