Skip to content

Commit

Permalink
test: added more tests for MediumPermission class
Browse files Browse the repository at this point in the history
  • Loading branch information
thorsten committed Mar 31, 2024
1 parent a0b0535 commit 244dc5d
Show file tree
Hide file tree
Showing 2 changed files with 194 additions and 47 deletions.
63 changes: 16 additions & 47 deletions phpmyfaq/src/phpMyFAQ/Permission/MediumPermission.php
Original file line number Diff line number Diff line change
Expand Up @@ -548,7 +548,7 @@ public function getGroupName(int $groupId): string
*/
public function getAllUserRights(int $userId): array
{
if ($userId <= 0 || !is_numeric($userId)) {
if ($userId <= 0) {
return [];
}

Expand All @@ -568,7 +568,7 @@ public function getAllUserRights(int $userId): array
*/
public function getUserGroupRights(int $userId): array
{
if ($userId <= 0 || !is_numeric($userId)) {
if ($userId <= 0) {
return [];
}

Expand Down Expand Up @@ -617,18 +617,12 @@ public function getUserGroupRights(int $userId): array
*/
public function autoJoin(int $userId): bool
{
if ($userId <= 0 || !is_numeric($userId)) {
if ($userId <= 0) {
return false;
}

$select = sprintf(
'
SELECT
group_id
FROM
%sfaqgroup
WHERE
auto_join = 1',
'SELECT group_id FROM %sfaqgroup WHERE auto_join = 1',
Database::getTablePrefix()
);

Expand All @@ -652,14 +646,14 @@ public function autoJoin(int $userId): bool

/**
* Adds a new member $userId to the group $groupId.
* Returns true on success, otherwise false.
* Returns true if successful, otherwise false.
*
* @param int $userId User ID
* @param int $groupId Group ID
*/
public function addToGroup(int $userId, int $groupId): bool
{
if ($userId <= 0 || $groupId <= 0 || !is_numeric($userId) || !is_numeric($groupId)) {
if ($userId <= 0 || $groupId <= 0) {
return false;
}

Expand All @@ -669,12 +663,7 @@ public function addToGroup(int $userId, int $groupId): bool

// add user to group
$insert = sprintf(
'
INSERT INTO
%sfaquser_group
(user_id, group_id)
VALUES
(%d, %d)',
'INSERT INTO %sfaquser_group (user_id, group_id) VALUES (%d, %d)',
Database::getTablePrefix(),
$userId,
$groupId
Expand All @@ -694,21 +683,12 @@ public function addToGroup(int $userId, int $groupId): bool
*/
public function getGroupData(int $groupId): array
{
if ($groupId <= 0 || !is_numeric($groupId)) {
if ($groupId <= 0) {
return [];
}

$select = sprintf(
'
SELECT
group_id,
name,
description,
auto_join
FROM
%sfaqgroup
WHERE
group_id = %d',
'SELECT group_id, name, description, auto_join FROM %sfaqgroup WHERE group_id = %d',
Database::getTablePrefix(),
$groupId
);
Expand All @@ -729,22 +709,17 @@ public function getGroupData(int $groupId): array
*/
public function removeFromAllGroups(int $userId): bool
{
if ($userId <= 0 || !is_numeric($userId)) {
if ($userId <= 0) {
return false;
}

$delete = sprintf(
'
DELETE FROM
%sfaquser_group
WHERE
user_id = %d',
'DELETE FROM %sfaquser_group WHERE user_id = %d',
Database::getTablePrefix(),
$userId
);

$res = $this->configuration->getDb()->query($delete);
return (bool) $res;
return (bool) $this->configuration->getDb()->query($delete);
}

/**
Expand All @@ -755,22 +730,17 @@ public function removeFromAllGroups(int $userId): bool
*/
public function refuseAllGroupRights(int $groupId): bool
{
if ($groupId <= 0 || !is_numeric($groupId)) {
if ($groupId <= 0) {
return false;
}

$delete = sprintf(
'
DELETE FROM
%sfaqgroup_right
WHERE
group_id = %d',
'DELETE FROM %sfaqgroup_right WHERE group_id = %d',
Database::getTablePrefix(),
$groupId
);

$res = $this->configuration->getDb()->query($delete);
return (bool) $res;
return (bool) $this->configuration->getDb()->query($delete);
}

/**
Expand All @@ -791,7 +761,6 @@ public function removeAllUsersFromGroup(int $groupId): bool
$groupId
);

$res = $this->configuration->getDb()->query($delete);
return (bool) $res;
return (bool) $this->configuration->getDb()->query($delete);
}
}
178 changes: 178 additions & 0 deletions tests/phpMyFAQ/Permission/MediumPermissionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -254,4 +254,182 @@ public function testGetAllGroupsOptions(): void
// Cleanup
$this->mediumPermission->deleteGroup(1);
}

/**
* @throws Exception
*/
public function testGetAllGroups(): void
{
$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => false,
];
$this->mediumPermission->addGroup($groupData);
$this->mediumPermission->addToGroup(1, 1);

$user = new CurrentUser($this->configuration);
$user->getUserById(1);

$this->assertEquals([1], $this->mediumPermission->getAllGroups($user));

// Cleanup
$this->mediumPermission->deleteGroup(1);
}

public function testGetGroupName(): void
{
$this->assertEquals('-', $this->mediumPermission->getGroupName(0));

$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => false,
];
$this->mediumPermission->addGroup($groupData);

$this->assertEquals('TestGroup', $this->mediumPermission->getGroupName(1));

// Cleanup
$this->mediumPermission->deleteGroup(1);
}

public function testGetAllUserRights(): void
{
$this->assertEquals([], $this->mediumPermission->getAllUserRights(0));
$this->assertIsArray($this->mediumPermission->getAllUserRights(1));
}

public function testGetUserGroupRights(): void
{
$this->assertEmpty($this->mediumPermission->getUserGroupRights(0));

$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => false,
];
$this->mediumPermission->addGroup($groupData);
$this->mediumPermission->addToGroup(1, 1);
$this->mediumPermission->grantGroupRight(1, 1);

$this->assertEquals([1], $this->mediumPermission->getUserGroupRights(1));

// Cleanup
$this->mediumPermission->deleteGroup(1);
}

public function testAutoJoin(): void
{
$this->assertFalse($this->mediumPermission->autoJoin(0));

$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => true,
];
$this->mediumPermission->addGroup($groupData);

$this->assertTrue($this->mediumPermission->autoJoin(1));

// Cleanup
$this->mediumPermission->deleteGroup(1);
}

public function testAddToGroup(): void
{
$this->assertFalse($this->mediumPermission->addToGroup(0, 0));

$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => true,
];
$this->mediumPermission->addGroup($groupData);

$this->assertTrue($this->mediumPermission->addToGroup(1, 1));

// Cleanup
$this->mediumPermission->deleteGroup(1);
}

public function testGetGroupData(): void
{
$this->assertEquals([], $this->mediumPermission->getGroupData(0));

$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => true,
];
$this->mediumPermission->addGroup($groupData);

$this->assertEquals(
[
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => 1,
'group_id' => 1,
],
$this->mediumPermission->getGroupData(1)
);

// Cleanup
$this->mediumPermission->deleteGroup(1);
}

public function testRemoveFromAllGroups(): void
{
$this->assertFalse($this->mediumPermission->removeFromAllGroups(0));

$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => true,
];
$this->mediumPermission->addGroup($groupData);
$this->mediumPermission->addToGroup(1, 1);

$this->assertTrue($this->mediumPermission->removeFromAllGroups(1));

// Cleanup
$this->mediumPermission->deleteGroup(1);
}

public function testRefuseAllGroupRights(): void
{
$this->assertFalse($this->mediumPermission->refuseAllGroupRights(0));

$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => true,
];
$this->mediumPermission->addGroup($groupData);
$this->mediumPermission->addToGroup(1, 1);
$this->mediumPermission->grantGroupRight(1, 1);

$this->assertTrue($this->mediumPermission->refuseAllGroupRights(1));

// Cleanup
$this->mediumPermission->deleteGroup(1);
}

public function testRemoveAllUsersFromGroup(): void
{
$this->assertFalse($this->mediumPermission->removeAllUsersFromGroup(0));

$groupData = [
'name' => 'TestGroup',
'description' => 'TestDescription',
'auto_join' => true,
];
$this->mediumPermission->addGroup($groupData);
$this->mediumPermission->addToGroup(1, 1);

$this->assertTrue($this->mediumPermission->removeAllUsersFromGroup(1));

// Cleanup
$this->mediumPermission->deleteGroup(1);
}
}

0 comments on commit 244dc5d

Please sign in to comment.