19 declare(strict_types=1);
    35         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
    36         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
    37         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
    38         $this->assertInstanceOf(AccessFileUploadAnswer::class, 
new AccessFileUploadAnswer($user, $database, $readable));
    43         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
    44         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
    45         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
    47         $instance = 
new AccessFileUploadAnswer($user, $database, $readable);
    49         $this->assertTrue($instance->isPermitted(
'/data/some/path/file.pdf')->isError());
    54         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
    55         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
    56         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
    58         $instance = 
new AccessFileUploadAnswer($user, $database, $readable);
    60         $object_id_of_test_id = 
function (): 
void {
    61             $this->assertFalse(
'Should not be called.');
    64         $this->assertFalse($instance->isPermitted(
'/data/assessment/tst_0/ignored/file.mp3')->value());
    70         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
    71         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
    72         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
    74         $object_id_of_test_id = 
function (
int $test) use (&$called): 
int {
    75             $this->assertEquals(8, $test);
    80         $instance = 
new AccessFileUploadAnswer($user, $database, $readable, $object_id_of_test_id);
    82         $this->assertFalse($instance->isPermitted(
'/data/assessment/tst_8/ignored/file.mp3')->value());
    83         $this->assertTrue($called);
    90         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
    91         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
    93         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
    94         $readable->expects(self::once())->method(
'references')->with([678])->willReturn(
false);
    98         $object_id_of_test_id = 
function (
int $test) use (&$called): 
int {
    99             $this->assertEquals(8, $test);
   104         $references_of = 
function (
int $object_id): array {
   105             $this->assertEquals(934, $object_id);
   109         $instance = 
new AccessFileUploadAnswer($user, $database, $readable, $object_id_of_test_id, $references_of);
   111         $this->assertFalse($instance->isPermitted(
'/data/assessment/tst_8/ignored/file.mp3')->value());
   112         $this->assertTrue($called);
   119         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
   120         $user->expects(self::never())->method(
'getId');
   121         $user->expects(self::once())->method(
'isAnonymous')->willReturn(
true);
   123         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
   125         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
   126         $readable->expects(self::once())->method(
'references')->with([678])->willReturn(
true);
   129         $object_id_of_test_id = 
function (
int $test) use (&$called): 
int {
   130             $this->assertEquals(8, $test);
   135         $references_of = 
function (
int $object_id): array {
   136             $this->assertEquals(934, $object_id);
   140         $session = 
function (
string $key): ?array {
   146         $instance = 
new AccessFileUploadAnswer($user, $database, $readable, $object_id_of_test_id, $references_of, $session);
   148         $this->assertFalse($instance->isPermitted(
'/data/assessment/tst_8/ignored/file.mp3')->value());
   149         $this->assertTrue($called);
   156         $statement = $this->getMockBuilder(ilDBStatement::class)->disableOriginalConstructor()->getMock();
   158         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
   159         $database->expects(self::once())->method(
'queryF')->willReturnCallback(
function (
string $query, array $types, array $values) use ($statement): 
ilDBStatement {
   160             $this->assertEquals([8389, 
'file.mp3', 
'Random access code.', 8], $values);
   164         $database->expects(self::once())->method(
'numRows')->with($statement)->willReturn(0);
   166         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
   167         $user->expects(self::once())->method(
'getId')->willReturn(8389);
   168         $user->expects(self::once())->method(
'isAnonymous')->willReturn(
true);
   170         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
   171         $readable->expects(self::once())->method(
'references')->with([678])->willReturn(
true);
   173         $object_id_of_test_id = 
function (
int $test) use (&$called): 
int {
   174             $this->assertEquals(8, $test);
   179         $references_of = 
function (
int $object_id): array {
   180             $this->assertEquals(934, $object_id);
   184         $session = 
function (
string $key): ?array {
   187             return [8 => 
'Random access code.'];
   190         $instance = 
new AccessFileUploadAnswer($user, $database, $readable, $object_id_of_test_id, $references_of, $session);
   192         $this->assertFalse($instance->isPermitted(
'/data/assessment/tst_8/ignored/file.mp3')->value());
   193         $this->assertTrue($called);
   200         $statement = $this->getMockBuilder(ilDBStatement::class)->disableOriginalConstructor()->getMock();
   202         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
   203         $database->expects(self::once())->method(
'queryF')->willReturnCallback(
function (
string $query, array $types, array $values) use ($statement): 
ilDBStatement {
   204             $this->assertEquals([8389, 
'file.mp3', 
'Random access code.', 8], $values);
   208         $database->expects(self::once())->method(
'numRows')->with($statement)->willReturn(1);
   210         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
   211         $user->expects(self::once())->method(
'getId')->willReturn(8389);
   212         $user->expects(self::once())->method(
'isAnonymous')->willReturn(
true);
   214         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
   215         $readable->expects(self::once())->method(
'references')->with([678])->willReturn(
true);
   217         $object_id_of_test_id = 
function (
int $test) use (&$called): 
int {
   218             $this->assertEquals(8, $test);
   223         $references_of = 
function (
int $object_id): array {
   224             $this->assertEquals(934, $object_id);
   228         $session = 
function (
string $key): ?array {
   231             return [8 => 
'Random access code.'];
   234         $instance = 
new AccessFileUploadAnswer($user, $database, $readable, $object_id_of_test_id, $references_of, $session);
   236         $this->assertTrue($instance->isPermitted(
'/data/assessment/tst_8/ignored/file.mp3')->value());
   237         $this->assertTrue($called);
   243         $checkResultsAccessCalled = 
false;
   245         $statement = $this->getMockBuilder(ilDBStatement::class)->disableOriginalConstructor()->getMock();
   247         $database = $this->getMockBuilder(ilDBInterface::class)->disableOriginalConstructor()->getMock();
   248         $database->expects(self::once())->method(
'queryF')->willReturnCallback(
function (
string $query, array $types, array $values) use ($statement): 
ilDBStatement {
   249             $this->assertEquals([
'assFileUpload', 8], $values);
   253         $database->expects(self::once())->method(
'fetchAssoc')->with($statement)->willReturn([
   254             'active_fi' => 
'11111',
   255             'value1' => 
'file.mp3'   258         $user = $this->getMockBuilder(ilObjUser::class)->disableOriginalConstructor()->getMock();
   259         $user->method(
'getId')->willReturn(8389);
   260         $user->expects(self::once())->method(
'isAnonymous')->willReturn(
false);
   262         $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
   263         $readable->expects(self::once())->method(
'references')->with([678])->willReturn(
true);
   265         $object_id_of_test_id = 
function (
int $test) use (&$called): 
int {
   266             $this->assertEquals(8, $test);
   271         $references_of = 
function (
int $object_id): array {
   272             $this->assertEquals(934, $object_id);
   276         $session = 
function (
string $key): ?array {
   279             return [8 => 
'Random access code.'];
   282         $checkResultsAccess = 
function (
int $reference, 
int $test, 
int $active_id) use (&$checkResultsAccessCalled): 
bool {
   283             $checkResultsAccessCalled = 
true;
   284             $this->assertEquals(
'678', $reference);
   285             $this->assertEquals(8, $test);
   286             $this->assertEquals(11111, $active_id);
   291         $instance = 
new AccessFileUploadAnswer($user, $database, $readable, $object_id_of_test_id, $references_of, $session, $checkResultsAccess);
   293         $this->assertTrue($instance->isPermitted(
'/data/assessment/tst_8/ignored/file.mp3')->value());
   294         $this->assertTrue($called);
   295         $this->assertTrue($checkResultsAccessCalled);
 testAnonymousWithInvalidAccessCode()
 
testAnonymousWithValidAccessCode()
 
testUserWhichCanAccessTheTestResults()
 
const ACCESS_CODE_SESSION_INDEX
 
testFalseWithZeroAsTestId()
 
testFalseWithInvalidTestId()
 
testAnonymousWithoutAccessCode()