19declare(strict_types=1);
29use PHPUnit\Framework\TestCase;
30use Psr\Http\Message\ResponseInterface;
31use Psr\Http\Message\ServerRequestInterface;
32use Psr\Http\Message\UriInterface;
41 $uri = $this->createStub(UriInterface::class);
42 $uri->method(
'getHost')->willReturn($request_host);
44 $request = $this->createStub(ServerRequestInterface::class);
45 $request->method(
'getUri')->willReturn($uri);
47 $http = $this->createStub(HttpServices::class);
50 $rb = $this->createStub(ResponseBuilder::class);
53 public function exposedHostAllowed():
bool
55 return $this->isRequestHostAllowed();
58 public function exposedOnContentHost():
bool
60 return $this->isRequestOnContentHost();
63 public function exposedIsolationHeaders(ResponseInterface $r): ResponseInterface
65 return $this->applyIsolationHeaders($r);
68 public function exposedGeneralHeaders(ResponseInterface $r): ResponseInterface
70 return $this->setGeneralHeaders(
72 '/tmp/user_content.txt',
93 $this->assertTrue($delivery->exposedHostAllowed());
99 $this->assertTrue($delivery->exposedHostAllowed());
105 $this->assertTrue($delivery->exposedHostAllowed());
111 $this->assertFalse($delivery->exposedHostAllowed());
117 $this->assertFalse($delivery->exposedOnContentHost());
123 $this->assertTrue($delivery->exposedOnContentHost());
129 $this->assertTrue($delivery->exposedOnContentHost());
135 $this->assertFalse($delivery->exposedOnContentHost());
143 $this->assertFalse($r->hasHeader(
'X-Content-Type-Options'));
144 $this->assertFalse($r->hasHeader(
'Cross-Origin-Resource-Policy'));
145 $this->assertFalse($r->hasHeader(
'Referrer-Policy'));
146 $this->assertFalse($r->hasHeader(
'Access-Control-Allow-Origin'));
154 $this->assertSame(
'nosniff', $r->getHeaderLine(
'X-Content-Type-Options'));
155 $this->assertSame(
'cross-origin', $r->getHeaderLine(
'Cross-Origin-Resource-Policy'));
156 $this->assertSame(
'no-referrer', $r->getHeaderLine(
'Referrer-Policy'));
157 $this->assertSame(
'https://app.example.org', $r->getHeaderLine(
'Access-Control-Allow-Origin'));
158 $this->assertSame(
'Origin', $r->getHeaderLine(
'Vary'));
166 $this->assertSame(
'nosniff', $r->getHeaderLine(
'X-Content-Type-Options'));
167 $this->assertSame(
'cross-origin', $r->getHeaderLine(
'Cross-Origin-Resource-Policy'));
168 $this->assertSame(
'no-referrer', $r->getHeaderLine(
'Referrer-Policy'));
169 $this->assertSame(
'https://app.example.org', $r->getHeaderLine(
'Access-Control-Allow-Origin'));
170 $this->assertSame(
'Origin', $r->getHeaderLine(
'Vary'));
178 $this->assertSame(
'text/plain', $r->getHeaderLine(
'Content-Type'));
180 'inline; filename="user_content.txt"; filename*=UTF-8\'\'user_content.txt',
181 $r->getHeaderLine(
'Content-Disposition')
190 $this->assertSame(
'text/plain', $r->getHeaderLine(
'Content-Type'));
191 $this->assertFalse($r->hasHeader(
'X-Content-Type-Options'));
192 $this->assertFalse($r->hasHeader(
'Cross-Origin-Resource-Policy'));
193 $this->assertFalse($r->hasHeader(
'Referrer-Policy'));
194 $this->assertFalse($r->hasHeader(
'Access-Control-Allow-Origin'));
Read-only configuration of the IRSS User Content Isolation feature.
static fromArray(array $data)
The currently used psr-7 implementation is created and published by guzzle under the MIT license.
testOnContentHostIsCaseInsensitive()
testGeneralHeadersKeepTheirRegularContentHeaders()
testOnContentHostWhenRequestHitsContentHost()
testGeneralHeadersCarryIsolationHeadersWhenActive()
testIsolationHeadersWhenActive()
testHostRejectedWhenRequestHitsIliasHost()
testHostAllowedWhenIsolationDisabled()
testHostAllowedIsCaseInsensitive()
testGeneralHeadersCarryNoIsolationHeadersWhenDisabled()
delivery(IsolationConfig $isolation, string $request_host='app.example.org')
testNotOnContentHostWhenRequestHitsIliasHost()
testNotOnContentHostWhenIsolationDisabled()
testHostAllowedWhenRequestHitsContentHost()
testNoIsolationHeadersWhenDisabled()
$request
@ilCtrl_Calls ilObjLearningSequenceContentGUI: ilObjLearningSequenceConditionsGUI
readonly HttpService $http