ILIAS  release_7 Revision v7.30-3-g800a261c036
ilWACCheckingInstanceTest.php
Go to the documentation of this file.
1<?php
2// declare(strict_types=1);
3
4require_once('./libs/composer/vendor/autoload.php');
5
8use Mockery\Adapter\Phpunit\MockeryTestCase;
9use Mockery\MockInterface;
10use org\bovigo\vfs;
11use Psr\Http\Message\ServerRequestInterface;
12use Psr\Http\Message\UriInterface;
13
27class ilWACCheckingInstanceTest extends MockeryTestCase
28{
29
33 protected $file_one;
37 protected $root;
41 private $http;
42
43
47 protected function setUp() : void
48 {
49 //error_reporting(E_ALL);
50 parent::setUp();
51 require_once('./Services/WebAccessChecker/classes/class.ilWebAccessChecker.php');
52 require_once('./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
53 require_once('./Services/WebAccessChecker/classes/class.ilWACToken.php');
54 require_once('./Services/WebAccessChecker/classes/class.ilWebAccessCheckerDelivery.php');
55 $this->root = vfs\vfsStream::setup('ilias.de');
56 $this->file_one = vfs\vfsStream::newFile('data/trunk/mobs/mm_123/dummy.jpg')
57 ->at($this->root)->setContent('dummy');
58
59 //setup container for HttpServiceAware classes
60 $container = new \ILIAS\DI\Container();
61 $container['http'] = function ($c) {
62 return Mockery::mock(GlobalHttpState::class);
63 };
64
65 $this->http = $container['http'];
66
67
68 $GLOBALS["DIC"] = $container;
69 ilWACToken::setSALT('TOKEN');
70 }
71
72
79 public function testDeliver()
80 {
81 self::markTestSkipped("WIP");
82 return;
83 $base64 = "iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODBEQTA1Rjk1NjYwMTFFNkE3RjBGNDkyNUNBOTg3NTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODBEQTA1RkE1NjYwMTFFNkE3RjBGNDkyNUNBOTg3NTkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4MERBMDVGNzU2NjAxMUU2QTdGMEY0OTI1Q0E5ODc1OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4MERBMDVGODU2NjAxMUU2QTdGMEY0OTI1Q0E5ODc1OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsPQ2nYAAAyXSURBVHja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";
84 $image = vfs\vfsStream::newFile('data/trunk/mobs/mm_123/dummy.png')->at($this->root)
85 ->setContent($base64);
86 $this->assertEquals($base64, $image->getContent());
87
88 require_once('./Services/PHPUnit/classes/class.ilUnitUtil.php');
89 try {
90 $GLOBALS['DIC']['ilAuthSession']->setAuthenticated(true, ANONYMOUS_USER_ID);
91 ilUnitUtil::performInitialisation();
92 } catch (ErrorException $e) {
93 // echo $e->getMessage();
94 }
95
99 $ilUser = $GLOBALS["DIC"]->user();
100 $this->assertTrue($ilUser instanceof ilObjUser);
101
102 ob_start(function ($buffer) {
103 unset($buffer);
104
105 return '';
106 });
107
111 $httpService = $this->http;
115 $request = Mockery::mock(ServerRequestInterface::class);
119 $uri = Mockery::mock(UriInterface::class);
120
121 $uri
122 ->shouldReceive('getPath')
123 ->once()
124 ->withNoArgs()
125 ->andReturn($image->url());
126
127 $request
128 ->shouldReceive('getUri')
129 ->once()
130 ->withNoArgs()
131 ->andReturn($uri);
132
133 $httpService
134 ->shouldReceive('request')
135 ->once()
136 ->withNoArgs()
137 ->andReturn($uri);
138
139 ilWebAccessCheckerDelivery::run($httpService, Mockery::mock(CookieFactory::class));
140 ob_end_clean();
141 ob_end_flush();
142 $this->assertEquals(404, $this->response()->getStatusCode());
143 }
144
145
146 public function testBasic()
147 {
148 self::markTestSkipped("Can't run test without db.");
149
150 return;
151
152 require_once('./Services/User/classes/class.ilObjUser.php');
153 $ilWebAccessChecker = new ilWebAccessChecker($this->file_one->url());
154 $check = false;
155 try {
156 $check = $ilWebAccessChecker->check();
157 } catch (ilWACException $ilWACException) {
158 $this->assertEquals($ilWACException->getCode(), ilWACException::ACCESS_DENIED_NO_PUB);
159 }
160 $this->assertFalse($check);
161 $this->assertEquals(array(
162 $ilWebAccessChecker::CM_CHECKINGINSTANCE,
163 ), $ilWebAccessChecker->getAppliedCheckingMethods());
164 }
165
166
167 public function testBasicWithFileSigning()
168 {
169 self::markTestSkipped("WIP");
170 return;
171 $signed_path = ilWACSignedPath::signFile($this->file_one->url());
172
173 $ilWebAccessChecker = new ilWebAccessChecker($this->http, Mockery::mock(CookieFactory::class));
174 $check = false;
175 try {
176 $check = $ilWebAccessChecker->check();
177 } catch (ilWACException $ilWACException) {
178 $this->assertEquals($ilWACException->getCode(), ilWACException::ACCESS_DENIED_NO_PUB);
179 }
180 $this->assertTrue($check);
181 $this->assertEquals(array(
182 $ilWebAccessChecker::CM_FILE_TOKEN,
183 ), $ilWebAccessChecker->getAppliedCheckingMethods());
184
185 $headerName = 'X-ILIAS-WebAccessChecker';
186 $response = $this->response();
187 $this->assertTrue($response->hasHeader($headerName));
188 $this->assertEquals([ 'checked using token' ], $response->getHeader($headerName));
189 }
190
191
193 {
194 self::markTestSkipped("WIP");
195 return;
196 ilWACSignedPath::signFolderOfStartFile($this->file_one->url());
197 $ilWebAccessChecker = new ilWebAccessChecker($this->http, Mockery::mock(CookieFactory::class));
198 $check = false;
199 try {
200 $check = $ilWebAccessChecker->check();
201 } catch (ilWACException $ilWACException) {
202 $this->assertEquals($ilWACException->getCode(), ilWACException::ACCESS_DENIED_NO_PUB);
203 }
204 $this->assertTrue($check);
205 $this->assertEquals(array(
206 $ilWebAccessChecker::CM_FOLDER_TOKEN,
207 ), $ilWebAccessChecker->getAppliedCheckingMethods());
208
209 $headerName = 'X-ILIAS-WebAccessChecker';
210 $response = $this->response();
211 $this->assertTrue($response->hasHeader($headerName));
212 $this->assertEquals([ 'checked using secure folder' ], $response->getHeader($headerName));
213 }
214
215
220 {
221 self::markTestSkipped("Can't run test without db.");
222
223 return;
224
225 $file = vfs\vfsStream::newFile('data/trunk/dummy/mm_123/dummy.jpg')->at($this->root)
226 ->setContent('dummy');
227 $ilWebAccessChecker = new ilWebAccessChecker($file->url());
228 $check = false;
229 try {
230 if (!defined('IL_PHPUNIT_TEST')) {
231 define('IL_PHPUNIT_TEST', true);
232 }
233 session_id('phpunittest');
234 $_SESSION = array();
235 include 'Services/PHPUnit/config/cfg.phpunit.php';
236
237 $check = $ilWebAccessChecker->check();
238 } catch (ilWACException $ilWACException) {
239 $this->assertEquals($ilWACException->getCode(), ilWACException::ACCESS_DENIED_NO_PUB);
240 }
241 // $this->assertTrue($check); // Currently not able to init ILIAS in WAC during PHPUnit
242 // $this->assertEquals(array(
243 // $ilWebAccessChecker::CM_SECFOLDER,
244 // ), $ilWebAccessChecker->getAppliedCheckingMethods());
245 }
246}
if(!defined('PATH_SEPARATOR')) $GLOBALS['_PEAR_default_error_mode']
Definition: PEAR.php:64
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
TestCase for the ilWACCheckingInstanceTest.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static signFile($path_to_file)
static signFolderOfStartFile($start_file_path)
static setSALT($salt)
static run(GlobalHttpState $httpState, CookieFactory $cookieFactory)
Class ilWebAccessChecker.
$c
Definition: cli.php:37
const ANONYMOUS_USER_ID
Definition: constants.php:25
$ilUser
Definition: imgupload.php:18
Interface GlobalHttpState.
static http()
Fetches the global http state from ILIAS.
$response
$container
Definition: wac.php:13