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('
', $output); self::assertStringContainsString('', $output); self::assertStringContainsString('', $output); self::assertStringContainsString('', $output); self::assertStringNotContainsString('No users were found belonging to this user group.', $output); } }
1user<br>one2user<br>two