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');
109 $this->root = vfs\vfsStream::setup(
'ilias.de');
110 $this->file_one = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_123/dummy.jpg')
111 ->at($this->root)->setContent(
'dummy');
112 $this->file_one_subfolder = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_123/mobile/dummy.jpg')
113 ->at($this->root)->setContent(
'dummy');
114 $this->file_one_subfolder_two = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_123/mobile/device/dummy.jpg')
115 ->at($this->root)->setContent(
'dummy');
116 $this->file_two = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_123/dummy2.jpg')
117 ->at($this->root)->setContent(
'dummy2');
118 $this->file_three = vfs\vfsStream::newFile(
'data/client_name/mobs/mm_124/dummy.jpg')
119 ->at($this->root)->setContent(
'dummy');
120 $this->file_four = vfs\vfsStream::newFile(
'data/client_name/sec/ilBlog/mm_124/dummy.jpg')
121 ->at($this->root)->setContent(
'dummy');
126 return Mockery::mock(GlobalHttpState::class);
134 $this->cookieFactory = Mockery::mock(CookieFactoryImpl::class);
137 $this->cookieFactory->shouldDeferMissing();
147 $cookieJar = Mockery::mock(CookieJar::class);
150 ->shouldReceive(
'getAll')
155 $this->
http->shouldReceive(
'cookieJar')
158 ->andReturn($cookieJar);
160 $request = Mockery::mock(Psr\Http\Message\RequestInterface::class);
161 $request->shouldReceive(
'getCookieParams')
164 $this->
http->shouldReceive(
'request')
166 ->andReturn($request);
168 $this->assertFalse($ilWACSignedPath->isSignedPath());
169 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
170 $this->assertFalse($ilWACSignedPath->isFolderSigned());
171 $this->assertFalse($ilWACSignedPath->isFolderTokenValid());
179 .
$query), $this->
http, $this->cookieFactory);
181 $this->assertEquals(
'dummy.jpg', $ilWACSignedPath->getPathObject()->getFileName());
182 $this->assertEquals(
$query, $ilWACSignedPath->getPathObject()->getQuery());
183 $this->assertEquals(
'./data/' . self::CLIENT_NAME
184 .
'/sec/ilBlog/mm_124/', $ilWACSignedPath->getPathObject()
186 $this->assertEquals(
'ilBlog', $ilWACSignedPath->getPathObject()->getSecurePathId());
187 $this->assertFalse($ilWACSignedPath->getPathObject()->isStreamable());
193 $ilWacPath =
new ilWacPath($this->file_four->url());
194 $ilWACToken =
new ilWACToken($ilWacPath->getPath(), self::CLIENT_NAME, 123456, 20);
196 $this->assertEquals(
'SALT-client_name-123456-20', $ilWACToken->getRawToken());
197 $this->assertEquals(
'./data/client_name/sec/ilBlog/mm_124/dummy.jpg', $ilWACToken->getId());
200 $ilWACToken =
new ilWACToken($ilWacPath->getPath(), self::CLIENT_NAME, 123456, 20);
201 $this->assertEquals(
'b541e2bae42ee222f9be959b7ad2ab8844cbb05b', $ilWACToken->getToken());
202 $this->assertEquals(
'e45b98f267dc891c8206c844f7df29ea', $ilWACToken->getHashedId());
208 $this->markTestSkipped(
'unable to use http cookies at this point');
209 $expected_cookies = [
210 '19ab58dae37d8d8cf931727c35514642',
211 '19ab58dae37d8d8cf931727c35514642ts',
212 '19ab58dae37d8d8cf931727c35514642ttl',
215 $cookieJar = Mockery::mock(CookieJar::class);
217 $response = Mockery::mock(ResponseInterface::class);
220 ->shouldReceive(
'response')
227 ->shouldReceive(
'with')
233 ->shouldReceive(
'with')
239 ->shouldReceive(
'with')
245 $this->
http->shouldReceive(
'cookieJar')
247 ->andReturn($cookieJar);
268 $this->assertTrue($ilWACSignedPath->isSignedPath());
269 $this->assertTrue($ilWACSignedPath->isSignedPathValid());
270 $this->assertEquals($ilWACSignedPath->getPathObject()->getClient(), self::CLIENT_NAME);
271 $this->assertFalse($ilWACSignedPath->getPathObject()->isInSecFolder());
272 $this->assertTrue($ilWACSignedPath->getPathObject()->isImage());
273 $this->assertFalse($ilWACSignedPath->getPathObject()->isAudio());
274 $this->assertFalse($ilWACSignedPath->getPathObject()->isVideo());
275 $this->assertTrue($ilWACSignedPath->getPathObject()->hasTimestamp());
276 $this->assertTrue($ilWACSignedPath->getPathObject()->hasToken());
280 sleep($lifetime + self::ADDITIONAL_TIME);
282 $this->assertTrue($ilWACSignedPath->isSignedPath());
283 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
296 $this->assertTrue($ilWACSignedPath->isSignedPath());
297 $this->assertTrue($ilWACSignedPath->isSignedPathValid());
309 $this->assertTrue($ilWACSignedPath->isSignedPath());
310 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
319 * -1, 0)), $this->
http, $this->cookieFactory);
320 $this->assertTrue($ilWACSignedPath->isSignedPath());
321 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
330 $this->assertTrue($ilWACSignedPath->isSignedPath());
331 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
340 $this->assertTrue($ilWACSignedPath->isSignedPath());
341 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
350 $this->assertTrue($ilWACSignedPath->isSignedPath());
351 $this->assertFalse($ilWACSignedPath->isSignedPathValid());
366 $parts = parse_url($signed_path);
367 $path = $parts[
'path'];
369 parse_str(
$query, $query_array);
370 $token = $override_token ? $override_token : $query_array[
'il_wac_token'];
371 $ttl = (int) $query_array[
'il_wac_ttl'];
372 $ts = (int) $query_array[
'il_wac_ts'];
373 $path_with_token = $path .
'?il_wac_token=' .
$token;
375 $modified_ttl = $ttl + $add_ttl;
376 $modified_ts = $ts + $add_timestamp;
378 return $path_with_token .
'&il_wac_ttl=' . $modified_ttl .
'&il_wac_ts=' . $modified_ts;
getModifiedSignedPath($add_ttl=0, $add_timestamp=0, $override_token=null)
testModifiedTimestampAddTime()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
TestCase for the ilWACTokenTest.
static signFolderOfStartFile($start_file_path)
testModifiedTimestampSubTime()
static http()
Fetches the global http state from ILIAS.
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
testModifiedTTLAndTimestamp()
static signFile($path_to_file)
testModifiedTimestampNoMod()
static setTokenMaxLifetimeInSeconds($token_max_lifetime_in_seconds)
static getTokenMaxLifetimeInSeconds()