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
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
testFalseWithZeroAsTestId()
testFalseWithInvalidTestId()
testAnonymousWithoutAccessCode()