24 require_once(
'./libs/composer/vendor/autoload.php');
26 require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
27 require_once(
'./Services/WebAccessChecker/classes/class.ilWebAccessChecker.php');
28 require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
29 require_once(
'./Services/WebAccessChecker/classes/class.ilWACToken.php');
107 $this->root = vfs\vfsStream::setup(
'ilias.de');
108 $this->file_one = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_123/dummy.jpg')
109 ->at($this->root)->setContent(
'dummy');
110 $this->file_one_subfolder = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_123/mobile/dummy.jpg')
111 ->at($this->root)->setContent(
'dummy');
112 $this->file_one_subfolder_two = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_123/mobile/device/dummy.jpg')
113 ->at($this->root)->setContent(
'dummy');
114 $this->file_two = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_123/dummy2.jpg')
115 ->at($this->root)->setContent(
'dummy2');
116 $this->file_three = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_124/dummy.jpg')
117 ->at($this->root)->setContent(
'dummy');
118 $this->file_four = vfs\vfsStream::newFile(
'data/client_name/sec/ilBlog/mm_124/dummy.jpg')
119 ->at($this->root)->setContent(
'dummy');
124 return Mockery::mock(GlobalHttpState::class);
132 $this->cookieFactory = Mockery::mock(CookieFactoryImpl::class);
135 $this->cookieFactory->shouldDeferMissing();
145 $cookieJar = Mockery::mock(CookieJar::class);
148 ->shouldReceive(
'get')
153 $this->
http->shouldReceive(
'cookieJar')
156 ->andReturn($cookieJar);
158 $this->assertFalse($ilWACSignedPath->isSignedPath());
159 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
160 $this->assertFalse($ilWACSignedPath->isFolderSigned());
161 $this->assertFalse($ilWACSignedPath->isFolderTokenValid());
169 .
$query), $this->
http, $this->cookieFactory);
171 $this->assertEquals(
'dummy.jpg', $ilWACSignedPath->getPathObject()->getFileName());
172 $this->assertEquals(
$query, $ilWACSignedPath->getPathObject()->getQuery());
173 $this->assertEquals(
'./data/' . self::CLIENT_NAME
174 .
'/sec/ilBlog/mm_124/', $ilWACSignedPath->getPathObject()
176 $this->assertEquals(
'ilBlog', $ilWACSignedPath->getPathObject()->getSecurePathId());
177 $this->assertFalse($ilWACSignedPath->getPathObject()->isStreamable());
183 $ilWacPath =
new ilWacPath($this->file_four->url());
184 $ilWACToken =
new ilWACToken($ilWacPath->getPath(), self::CLIENT_NAME, 123456, 20);
186 $this->assertEquals(
'SALT-client_name-123456-20', $ilWACToken->getRawToken());
187 $this->assertEquals(
'./data/client_name/sec/ilBlog/mm_124/dummy.jpg', $ilWACToken->getId());
190 $ilWACToken =
new ilWACToken($ilWacPath->getPath(), self::CLIENT_NAME, 123456, 20);
191 $this->assertEquals(
'b541e2bae42ee222f9be959b7ad2ab8844cbb05b', $ilWACToken->getToken());
192 $this->assertEquals(
'e45b98f267dc891c8206c844f7df29ea', $ilWACToken->getHashedId());
198 $expected_cookies = [
199 '19ab58dae37d8d8cf931727c35514642',
200 '19ab58dae37d8d8cf931727c35514642ts',
201 '19ab58dae37d8d8cf931727c35514642ttl',
204 $cookieJar = Mockery::mock(CookieJar::class);
206 $response = Mockery::mock(ResponseInterface::class);
209 ->shouldReceive(
'response')
215 ->shouldReceive(
'saveResponse')
220 ->shouldReceive(
'with')
222 ->with(Mockery::on(
function (
Cookie $cookie) use ($expected_cookies) {
223 return strcmp($cookie->
getName(), $expected_cookies[0]) === 0;
228 ->shouldReceive(
'with')
230 ->with(Mockery::on(
function (
Cookie $cookie) use ($expected_cookies) {
231 return strcmp($cookie->
getName(), $expected_cookies[1]) === 0;
236 ->shouldReceive(
'with')
238 ->with(Mockery::on(
function (
Cookie $cookie) use ($expected_cookies) {
239 return strcmp($cookie->
getName(), $expected_cookies[2]) === 0;
244 ->shouldReceive(
'renderIntoResponseHeader')
249 $this->
http->shouldReceive(
'cookieJar')
252 ->andReturn($cookieJar);
273 $this->assertTrue($ilWACSignedPath->isSignedPath());
274 $this->assertTrue($ilWACSignedPath->isSignedPathValid());
275 $this->assertEquals($ilWACSignedPath->getPathObject()->getClient(), self::CLIENT_NAME);
276 $this->assertFalse($ilWACSignedPath->getPathObject()->isInSecFolder());
277 $this->assertTrue($ilWACSignedPath->getPathObject()->isImage());
278 $this->assertFalse($ilWACSignedPath->getPathObject()->isAudio());
279 $this->assertFalse($ilWACSignedPath->getPathObject()->isVideo());
280 $this->assertTrue($ilWACSignedPath->getPathObject()->hasTimestamp());
281 $this->assertTrue($ilWACSignedPath->getPathObject()->hasToken());
285 sleep($lifetime + self::ADDITIONAL_TIME);
287 $this->assertTrue($ilWACSignedPath->isSignedPath());
288 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
297 $response = Mockery::mock(ResponseInterface::class);
298 $cookieJar = Mockery::mock(CookieJar::class);
301 ->shouldReceive(
'response')
307 ->shouldReceive(
'cookieJar')
310 ->andReturn($cookieJar)
313 ->shouldReceive(
'saveResponse')
319 $tokenId =
'19ab58dae37d8d8cf931727c35514642';
321 $tokenCookie = $this->cookieFactory->create($tokenId,
'344d7676240285cc714366038beb44d81bda1d4b');
322 $timestampCookie = $this->cookieFactory->create(
"{$tokenId}ts",
"$timestamp");
323 $ttlCookie = $this->cookieFactory->create(
"{$tokenId}ttl",
"$ttl");
326 ->shouldReceive(
'with')
328 ->with(Mockery::type(Cookie::class))
332 ->shouldReceive(
'renderIntoResponseHeader')
338 ->shouldReceive(
'get')
341 ->andReturnValues([$tokenCookie, $timestampCookie, $ttlCookie])
344 ->shouldReceive(
'get')
347 ->andReturnValues([$tokenCookie, $timestampCookie, $ttlCookie]);
352 $signed_path = $this->file_one->url();
357 self::markTestSkipped(
"WIP");
360 $this->assertTrue($ilWACSignedPath->isFolderSigned());
361 $this->assertTrue($ilWACSignedPath->isFolderTokenValid());
362 $this->assertEquals($ilWACSignedPath->getPathObject()->getClient(), self::CLIENT_NAME);
363 $this->assertFalse($ilWACSignedPath->getPathObject()->isInSecFolder());
364 $this->assertTrue($ilWACSignedPath->getPathObject()->isImage());
365 $this->assertFalse($ilWACSignedPath->getPathObject()->isAudio());
366 $this->assertFalse($ilWACSignedPath->getPathObject()->isVideo());
367 $this->assertTrue($ilWACSignedPath->getPathObject()->hasTimestamp());
368 $this->assertTrue($ilWACSignedPath->getPathObject()->hasToken());
372 sleep($lifetime + self::ADDITIONAL_TIME);
374 $this->assertTrue($ilWACSignedPath->isFolderSigned());
375 $this->assertFalse($ilWACSignedPath->isFolderTokenValid());
378 $ilWACSignedPath->revalidatingFolderToken();
380 $this->assertTrue($ilWACSignedPath->isFolderSigned());
381 $this->assertTrue($ilWACSignedPath->isFolderTokenValid());
385 $this->assertTrue($ilWACSignedPath->isFolderSigned());
386 $this->assertTrue($ilWACSignedPath->isFolderTokenValid());
395 self::markTestSkipped(
"WIP");
405 $this->assertTrue($ilWACSignedPath->isFolderSigned());
406 $this->assertTrue($ilWACSignedPath->isFolderTokenValid());
410 sleep($lifetime + self::ADDITIONAL_TIME);
412 $this->assertTrue($ilWACSignedPath->isFolderSigned());
413 $this->assertFalse($ilWACSignedPath->isFolderTokenValid());
416 $ilWACSignedPath->revalidatingFolderToken();
417 $this->assertTrue($ilWACSignedPath->isFolderSigned());
418 $this->assertTrue($ilWACSignedPath->isFolderTokenValid());
422 $this->assertFalse($ilWACSignedPath->isFolderSigned());
423 $this->assertFalse($ilWACSignedPath->isFolderTokenValid());
432 self::markTestSkipped(
"WIP");
435 $this->assertTrue($ilWACSignedPath->isSignedPath());
436 $this->assertTrue($ilWACSignedPath->isSignedPathValid());
445 self::markTestSkipped(
"WIP");
448 $this->assertTrue($ilWACSignedPath->isSignedPath());
449 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
455 self::markTestSkipped(
"WIP");
458 * -1, 0)), $this->
http, $this->cookieFactory);
459 $this->assertTrue($ilWACSignedPath->isSignedPath());
460 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
466 self::markTestSkipped(
"WIP");
469 $this->assertTrue($ilWACSignedPath->isSignedPath());
470 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
476 self::markTestSkipped(
"WIP");
479 $this->assertTrue($ilWACSignedPath->isSignedPath());
480 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
486 self::markTestSkipped(
"WIP");
489 $this->assertTrue($ilWACSignedPath->isSignedPath());
490 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
505 $parts = parse_url($signed_path);
506 $path = $parts[
'path'];
508 parse_str(
$query, $query_array);
509 $token = $override_token ? $override_token : $query_array[
'il_wac_token'];
510 $ttl = (int) $query_array[
'il_wac_ttl'];
511 $ts = (int) $query_array[
'il_wac_ts'];
512 $path_with_token =
$path .
'?il_wac_token=' . $token;
514 $modified_ttl = $ttl + $add_ttl;
515 $modified_ts = $ts + $add_timestamp;
517 return $path_with_token .
'&il_wac_ttl=' . $modified_ttl .
'&il_wac_ts=' . $modified_ts;
static getCookieMaxLifetimeInSeconds()
getModifiedSignedPath($add_ttl=0, $add_timestamp=0, $override_token=null)
testModifiedTimestampAddTime()
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
TestCase for the ilWACTokenTest.
testFolderTokenWithSecondFile()
static signFolderOfStartFile($start_file_path)
testModifiedTimestampSubTime()
static http()
Fetches the global http state from ILIAS.
static setCookieMaxLifetimeInSeconds($cookie_max_lifetime_in_seconds)
testModifiedTTLAndTimestamp()
static signFile($path_to_file)
testModifiedTimestampNoMod()
foreach($mandatory_scripts as $file) $timestamp
static setTokenMaxLifetimeInSeconds($token_max_lifetime_in_seconds)
static getTokenMaxLifetimeInSeconds()