Files
filegator/tests/backend/Unit/UserTest.php
Chun-Sheng, Li ea6933883f Test enhancement (#18)
Wow! Thank you very much for fixing all this.

Cheers!
2019-10-22 14:06:37 +02:00

177 lines
4.8 KiB
PHP

<?php
/*
* This file is part of the FileGator package.
*
* (c) Milos Stojanovic <alcalbg@gmail.com>
*
* For the full copyright and license information, please view the LICENSE file
*/
namespace Tests\Unit;
use Filegator\Services\Auth\User;
use Tests\TestCase;
use Exception;
/**
* @internal
*/
class UserTest extends TestCase
{
public function testUser()
{
$name = 'John Doe';
$username = 'john.doe@example.com';
$homedir = '/';
$role = 'user';
$permissions = ['read'];
$user = new User($role, $homedir, $username, $name);
$user->setRole($role);
$user->setHomedir($homedir);
$user->setUsername($username);
$user->setName($name);
$user->setPermissions($permissions);
$this->assertTrue($user->isUser());
$decoded = json_decode(json_encode($user));
$this->assertEquals('user', $decoded->role);
$this->assertEquals($username, $decoded->username);
$this->assertEquals($name, $decoded->name);
$this->assertEquals($permissions, $decoded->permissions);
}
public function testAdmin()
{
$user = new User();
$user->setRole('admin');
$this->assertTrue($user->isAdmin());
}
public function testGuest()
{
$user = new User();
$this->assertTrue($user->isGuest());
$decoded = json_decode(json_encode($user), true);
$this->assertEquals([
'role' => 'guest',
'homedir' => '',
'username' => '',
'name' => '',
'permissions' => [],
], $decoded);
}
public function testUserCannotGetNonExistingRole()
{
$user = new User();
$this->expectException(Exception::class);
$user->setRole('nonexistent');
}
public function testUserCannotGetNonExistingPermision()
{
$user = new User();
$this->expectException(Exception::class);
$user->setPermissions(['read', 'write', 'nonexistent']);
}
public function testUserHasRole()
{
$user = new User();
$user->setRole('user');
$this->assertTrue($user->hasRole('user'));
$this->assertTrue($user->hasRole(['user']));
$this->assertTrue($user->hasRole(['admin', 'guest', 'user']));
$this->assertFalse($user->hasRole(['admin', 'guest']));
$this->assertFalse($user->hasRole('admin'));
}
public function testDefaultUserHasNoPermissions()
{
$user = new User();
$this->assertTrue($user->hasPermissions([]));
$this->assertFalse($user->hasPermissions('read'));
$this->assertFalse($user->hasPermissions(['read']));
$this->assertFalse($user->hasPermissions(['write', 'upload', 'read']));
$this->assertFalse($user->hasPermissions(['write', 'upload']));
$this->assertFalse($user->hasPermissions('upload'));
}
public function testUserHasOnlyPermissionsSet()
{
$user = new User();
$user->setPermissions(['read', 'write']);
$this->assertTrue($user->hasPermissions('read'));
$this->assertTrue($user->hasPermissions(['read']));
$this->assertTrue($user->hasPermissions('write'));
$this->assertTrue($user->hasPermissions(['write']));
$this->assertTrue($user->hasPermissions(['read', 'write']));
$this->assertTrue($user->hasPermissions(['write', 'read']));
$this->assertFalse($user->hasPermissions(['write', 'upload', 'read']));
$this->assertFalse($user->hasPermissions(['write', 'upload']));
$this->assertFalse($user->hasPermissions('upload'));
}
public function testUserCanHaveReadPermissions()
{
$user = new User();
$user->setPermissions(['read']);
$this->assertTrue($user->hasPermissions('read'));
}
public function testUserCanHaveWritePermissions()
{
$user = new User();
$user->setPermissions(['write']);
$this->assertTrue($user->hasPermissions('write'));
}
public function testUserCanHaveUploadPermissions()
{
$user = new User();
$user->setPermissions(['upload']);
$this->assertTrue($user->hasPermissions('upload'));
}
public function testUserCanHaveDownloadPermissions()
{
$user = new User();
$user->setPermissions(['download']);
$this->assertTrue($user->hasPermissions('download'));
}
public function testUserCanHaveBatchDownloadPermissions()
{
$user = new User();
$user->setPermissions(['batchdownload']);
$this->assertTrue($user->hasPermissions('batchdownload'));
}
public function testUserCanHaveZipPermissions()
{
$user = new User();
$user->setPermissions(['zip']);
$this->assertTrue($user->hasPermissions('zip'));
}
}