1212use PhpMyAdmin \Dbal \ResultInterface ;
1313use PhpMyAdmin \Dbal \TableName ;
1414use PhpMyAdmin \Tests \AbstractTestCase ;
15+ use PhpMyAdmin \Tests \Stubs \DbiDummy ;
1516use PhpMyAdmin \Tests \Stubs \DummyResult ;
1617use PhpMyAdmin \Url ;
1718
18- use function htmlspecialchars ;
19-
2019/** @covers \PhpMyAdmin\ConfigStorage\UserGroups */
2120class UserGroupsTest extends AbstractTestCase
2221{
@@ -75,16 +74,16 @@ public function testGetHtmlForUserGroupsTableWithNoUserGroups(): void
7574 public function testGetHtmlForUserGroupsTableWithUserGroups (): void
7675 {
7776 $ html = UserGroups::getHtmlForUserGroupsTable ($ this ->configurableMenusFeature );
78- $ this ->assertStringContainsString ('<td>usergroup </td> ' , $ html );
77+ $ this ->assertStringContainsString ('<td>user<br>group </td> ' , $ html );
7978 $ urlTag = '<a class="" href=" ' . Url::getFromRoute ('/server/user-groups ' ) . '" data-post=" '
80- . Url::getCommon (['viewUsers ' => 1 , 'userGroup ' => htmlspecialchars ( ' usergroup ' ) ], '' );
79+ . Url::getCommon (['viewUsers ' => 1 , 'userGroup ' => ' user<br>group ' ], '' );
8180 $ this ->assertStringContainsString ($ urlTag , $ html );
8281 $ urlTag = '<a class="" href=" ' . Url::getFromRoute ('/server/user-groups ' ) . '" data-post=" '
83- . Url::getCommon (['editUserGroup ' => 1 , 'userGroup ' => htmlspecialchars ( ' usergroup ' ) ], '' );
82+ . Url::getCommon (['editUserGroup ' => 1 , 'userGroup ' => ' user<br>group ' ], '' );
8483 $ this ->assertStringContainsString ($ urlTag , $ html );
8584 $ this ->assertStringContainsString (
8685 '<button type="button" class="btn btn-link" data-bs-toggle="modal" '
87- . ' data-bs-target="#deleteUserGroupModal" data-user-group="usergroup "> ' ,
86+ . ' data-bs-target="#deleteUserGroupModal" data-user-group="user<br>group "> ' ,
8887 $ html ,
8988 );
9089 }
@@ -121,7 +120,7 @@ public function testGetHtmlToEditUserGroup(): void
121120
122121 $ resultStub = $ this ->createMock (DummyResult::class);
123122
124- $ expectedQuery = 'SELECT * FROM `pmadb`.`usergroups` WHERE `usergroup`= \'ug \'' ;
123+ $ expectedQuery = 'SELECT * FROM `pmadb`.`usergroups` WHERE `usergroup`= \'user<br>group \'' ;
125124 $ dbi = $ this ->getMockBuilder (DatabaseInterface::class)
126125 ->disableOriginalConstructor ()
127126 ->getMock ();
@@ -132,16 +131,17 @@ public function testGetHtmlToEditUserGroup(): void
132131 $ resultStub ->expects ($ this ->exactly (1 ))
133132 ->method ('getIterator ' )
134133 ->will ($ this ->returnCallback (static function (): Generator {
135- yield from [['usergroup ' => 'ug ' , 'tab ' => 'server_sql ' , 'allowed ' => 'Y ' ]];
134+ yield from [['usergroup ' => 'user<br>group ' , 'tab ' => 'server_sql ' , 'allowed ' => 'Y ' ]];
136135 }));
137136 $ dbi ->expects ($ this ->any ())->method ('quoteString ' )
138137 ->will ($ this ->returnCallback (static fn (string $ string ): string => "' " . $ string . "' " ));
139138
140139 $ GLOBALS ['dbi ' ] = $ dbi ;
141140
142141 // editing a user group
143- $ html = UserGroups::getHtmlToEditUserGroup ($ this ->configurableMenusFeature , 'ug ' );
144- $ this ->assertStringContainsString ('<input type="hidden" name="userGroup" value="ug" ' , $ html );
142+ $ html = UserGroups::getHtmlToEditUserGroup ($ this ->configurableMenusFeature , 'user<br>group ' );
143+ $ this ->assertStringContainsString ('Edit user group: \'user<br>group \'' , $ html );
144+ $ this ->assertStringContainsString ('<input type="hidden" name="userGroup" value="user<br>group" ' , $ html );
145145 $ this ->assertStringContainsString ('<input type="hidden" name="editUserGroupSubmit" value="1" ' , $ html );
146146 $ this ->assertStringContainsString ('<input type="hidden" name="editUserGroupSubmit" value="1" ' , $ html );
147147 $ this ->assertStringContainsString (
@@ -155,4 +155,17 @@ public function testGetHtmlToEditUserGroup(): void
155155 $ html ,
156156 );
157157 }
158+
159+ public function testGetHtmlForListingUsersOfAGroupWithNoUsers (): void
160+ {
161+ $ dummyDbi = new DbiDummy ();
162+ $ dbi = DatabaseInterface::load ($ dummyDbi );
163+ $ GLOBALS ['dbi ' ] = $ dbi ;
164+
165+ $ dummyDbi ->addResult ('SELECT `username` FROM `pmadb`.`users` WHERE `usergroup`= \'user<br>group \'' , []);
166+
167+ $ output = UserGroups::getHtmlForListingUsersofAGroup ($ this ->configurableMenusFeature , 'user<br>group ' );
168+ $ this ->assertStringContainsString ('Users of \'user<br>group \' user group ' , $ output );
169+ $ this ->assertStringContainsString ('No users were found belonging to this user group. ' , $ output );
170+ }
158171}
0 commit comments