[ticket/17093] Add test for disabled board behavior

PHPBB3-17093
This commit is contained in:
Marc Alexander 2024-02-22 17:42:06 +01:00
parent 232dfa6b20
commit be93efee1d
No known key found for this signature in database
GPG key ID: 50E0D2423696F995

View file

@ -0,0 +1,164 @@
<?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}");
var_export($crawler->text());
$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();
}
}
}