configurableMenusFeature = new ConfigurableMenusFeature(
DatabaseName::fromValue('pmadb'),
TableName::fromValue('usergroups'),
TableName::fromValue('users')
);
}
/**
* Tests UserGroups::getHtmlForUserGroupsTable() function when there are no user groups
*
* @group medium
*/
public function testGetHtmlForUserGroupsTableWithNoUserGroups(): void
{
$expectedQuery = 'SELECT * FROM `pmadb`.`usergroups` ORDER BY `usergroup` ASC';
$resultStub = $this->createMock(DummyResult::class);
$dbi = $this->getMockBuilder(DatabaseInterface::class)
->disableOriginalConstructor()
->getMock();
$dbi->expects($this->once())
->method('tryQueryAsControlUser')
->with($expectedQuery)
->will($this->returnValue($resultStub));
$resultStub->expects($this->once())
->method('numRows')
->will($this->returnValue(0));
$GLOBALS['dbi'] = $dbi;
$html = UserGroups::getHtmlForUserGroupsTable($this->configurableMenusFeature);
self::assertStringNotContainsString('
', $html);
$url_tag = '', $html);
}
/**
* Tests UserGroups::delete() function
*
* @requires PHPUnit < 10
*/
public function testDeleteUserGroup(): void
{
$userDelQuery = 'DELETE FROM `pmadb`.`users` WHERE `usergroup`=\'ug\'';
$userGrpDelQuery = 'DELETE FROM `pmadb`.`usergroups` WHERE `usergroup`=\'ug\'';
$dbi = $this->getMockBuilder(DatabaseInterface::class)
->disableOriginalConstructor()
->getMock();
$dbi->expects($this->exactly(2))
->method('queryAsControlUser')
->withConsecutive([$this->equalTo($userDelQuery)], [$this->equalTo($userGrpDelQuery)]);
$dbi->expects($this->any())
->method('escapeString')
->will($this->returnArgument(0));
$GLOBALS['dbi'] = $dbi;
UserGroups::delete($this->configurableMenusFeature, 'ug');
}
/**
* Tests UserGroups::getHtmlToEditUserGroup() function
*/
public function testGetHtmlToEditUserGroup(): void
{
// adding a user group
$html = UserGroups::getHtmlToEditUserGroup($this->configurableMenusFeature);
self::assertStringContainsString(' createMock(DummyResult::class);
$expectedQuery = 'SELECT * FROM `pmadb`.`usergroups` WHERE `usergroup`=\'user group\'';
$dbi = $this->getMockBuilder(DatabaseInterface::class)
->disableOriginalConstructor()
->getMock();
$dbi->expects($this->once())
->method('tryQueryAsControlUser')
->with($expectedQuery)
->will($this->returnValue($resultStub));
$resultStub->expects($this->exactly(1))
->method('getIterator')
->will($this->returnCallback(static function (): Generator {
yield from [
[
'usergroup' => 'user group',
'tab' => 'server_sql',
'allowed' => 'Y',
],
];
}));
$dbi->expects($this->any())
->method('escapeString')
->will($this->returnArgument(0));
$GLOBALS['dbi'] = $dbi;
// editing a user group
$html = UserGroups::getHtmlToEditUserGroup($this->configurableMenusFeature, 'user group');
self::assertStringContainsString('Edit user group: \'user<br>group\'', $html);
self::assertStringContainsString(' ',
$html
);
self::assertStringContainsString(
' ',
$html
);
}
public function testGetHtmlForListingUsersOfAGroupWithNoUsers(): void
{
$dummyDbi = new DbiDummy();
$dbi = DatabaseInterface::load($dummyDbi);
$GLOBALS['dbi'] = $dbi;
$dummyDbi->addResult('SELECT `username` FROM `pmadb`.`users` WHERE `usergroup`=\'user group\'', []);
$output = UserGroups::getHtmlForListingUsersofAGroup($this->configurableMenusFeature, 'user group');
self::assertStringContainsString('Users of \'user<br>group\' user group', $output);
self::assertStringContainsString('No users were found belonging to this user group.', $output);
}
public function testGetHtmlForListingUsersOfAGroupWithUsers(): void
{
$dummyDbi = new DbiDummy();
$dbi = DatabaseInterface::load($dummyDbi);
$GLOBALS['dbi'] = $dbi;
$dummyDbi->addResult(
'SELECT `username` FROM `pmadb`.`users` WHERE `usergroup`=\'user group\'',
[['user one'], ['user two']],
['username']
);
$output = UserGroups::getHtmlForListingUsersofAGroup($this->configurableMenusFeature, 'user group');
self::assertStringContainsString('Users of \'user<br>group\' user group', $output);
self::assertStringContainsString(' 1 ', $output);
self::assertStringContainsString('user<br>one ', $output);
self::assertStringContainsString('2 ', $output);
self::assertStringContainsString('user<br>two ', $output);
self::assertStringNotContainsString('No users were found belonging to this user group.', $output);
}
}