createDatabaseInterface();
$GLOBALS['db'] = '';
$GLOBALS['table'] = '';
$this->configurableMenusFeature = new ConfigurableMenusFeature(
DatabaseName::from('pmadb'),
TableName::from('usergroups'),
TableName::from('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)
->willReturn($resultStub);
$resultStub->expects($this->once())
->method('numRows')
->willReturn(0);
DatabaseInterface::$instance = $dbi;
$html = UserGroups::getHtmlForUserGroupsTable($this->configurableMenusFeature);
$this->assertStringNotContainsString('
', $html);
$urlTag = '',
$html,
);
}
/**
* Tests UserGroups::delete() function
*/
public function testDeleteUserGroup(): void
{
$userDelQuery = 'DELETE FROM `pmadb`.`users` WHERE `usergroup`=\'ug\'';
$userGrpDelQuery = 'DELETE FROM `pmadb`.`usergroups` WHERE `usergroup`=\'ug\'';
$result = $this->createStub(ResultInterface::class);
$dbi = $this->createMock(DatabaseInterface::class);
$dbi->expects($this->exactly(2))->method('queryAsControlUser')->willReturnMap([
[$userDelQuery, $result],
[$userGrpDelQuery, $result],
]);
$dbi->expects($this->any())->method('quoteString')
->willReturnCallback(static fn (string $string): string => "'" . $string . "'");
UserGroups::delete($dbi, $this->configurableMenusFeature, 'ug');
}
/**
* Tests UserGroups::getHtmlToEditUserGroup() function
*/
public function testGetHtmlToEditUserGroup(): void
{
// adding a user group
$html = UserGroups::getHtmlToEditUserGroup($this->configurableMenusFeature);
$this->assertStringContainsString('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)
->willReturn($resultStub);
$resultStub->expects($this->exactly(1))
->method('getIterator')
->willReturnCallback(static function (): Generator {
yield from [['usergroup' => 'user
group', 'tab' => 'server_sql', 'allowed' => 'Y']];
});
$dbi->expects($this->any())->method('quoteString')
->willReturnCallback(static fn (string $string): string => "'" . $string . "'");
DatabaseInterface::$instance = $dbi;
// editing a user group
$html = UserGroups::getHtmlToEditUserGroup($this->configurableMenusFeature, 'user
group');
$this->assertStringContainsString('Edit user group: \'user<br>group\'', $html);
$this->assertStringContainsString('assertStringContainsString('assertStringContainsString('assertStringContainsString(
'',
$html,
);
$this->assertStringContainsString(
'',
$html,
);
}
public function testGetHtmlForListingUsersOfAGroupWithNoUsers(): void
{
$dummyDbi = $this->createDbiDummy();
$dbi = $this->createDatabaseInterface($dummyDbi);
DatabaseInterface::$instance = $dbi;
$dummyDbi->addResult('SELECT `username` FROM `pmadb`.`users` WHERE `usergroup`=\'user
group\'', []);
$output = UserGroups::getHtmlForListingUsersofAGroup($this->configurableMenusFeature, 'user
group');
$this->assertStringContainsString('Users of \'user<br>group\' user group', $output);
$this->assertStringContainsString('No users were found belonging to this user group.', $output);
}
public function testGetHtmlForListingUsersOfAGroupWithUsers(): void
{
$dummyDbi = $this->createDbiDummy();
$dbi = $this->createDatabaseInterface($dummyDbi);
DatabaseInterface::$instance = $dbi;
$dummyDbi->addResult(
'SELECT `username` FROM `pmadb`.`users` WHERE `usergroup`=\'user
group\'',
[['user
one'], ['user
two']],
['username'],
);
$output = UserGroups::getHtmlForListingUsersofAGroup($this->configurableMenusFeature, 'user
group');
$this->assertStringContainsString('Users of \'user<br>group\' user group', $output);
$this->assertStringContainsString('1 | ', $output);
$this->assertStringContainsString('user<br>one | ', $output);
$this->assertStringContainsString('2 | ', $output);
$this->assertStringContainsString('user<br>two | ', $output);
$this->assertStringNotContainsString('No users were found belonging to this user group.', $output);
}
}