|
|
@@ -28,6 +28,19 @@ use Cake\View\XmlView;
|
|
|
use TestApp\Controller\RequestHandlerTestController;
|
|
|
use Zend\Diactoros\Stream;
|
|
|
|
|
|
+class RequestHandlerComponentExt extends RequestHandlerComponent
|
|
|
+{
|
|
|
+ public function getExt()
|
|
|
+ {
|
|
|
+ return $this->ext;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function setExt($ext)
|
|
|
+ {
|
|
|
+ $this->ext = $ext;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* RequestHandlerComponentTest class
|
|
|
*/
|
|
|
@@ -84,7 +97,7 @@ class RequestHandlerComponentTest extends TestCase
|
|
|
->setMethods(['_sendHeader', 'stop'])
|
|
|
->getMock();
|
|
|
$this->Controller = new RequestHandlerTestController($request, $response);
|
|
|
- $this->RequestHandler = $this->Controller->components()->load('RequestHandler');
|
|
|
+ $this->RequestHandler = $this->Controller->components()->load(RequestHandlerComponentExt::class);
|
|
|
$this->request = $request;
|
|
|
|
|
|
Router::scope('/', function ($routes): void {
|
|
|
@@ -147,9 +160,9 @@ class RequestHandlerComponentTest extends TestCase
|
|
|
Router::reload();
|
|
|
$this->Controller->setRequest($this->request->withHeader('Accept', 'application/json'));
|
|
|
|
|
|
- $this->RequestHandler->ext = null;
|
|
|
+ $this->RequestHandler->setExt(null);
|
|
|
$this->RequestHandler->startup(new Event('Controller.startup', $this->Controller));
|
|
|
- $this->assertEquals('json', $this->RequestHandler->ext);
|
|
|
+ $this->assertEquals('json', $this->RequestHandler->getExt());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -163,7 +176,7 @@ class RequestHandlerComponentTest extends TestCase
|
|
|
$this->Controller->setRequest($this->request
|
|
|
->withHeader('Accept', 'application/json, application/javascript, */*; q=0.01')
|
|
|
->withHeader('X-Requested-With', 'XMLHttpRequest'));
|
|
|
- $this->RequestHandler->ext = null;
|
|
|
+ $this->RequestHandler->setExt(null);
|
|
|
Router::extensions('json', false);
|
|
|
|
|
|
$this->RequestHandler->startup(new Event('Controller.startup', $this->Controller));
|
|
|
@@ -194,7 +207,7 @@ class RequestHandlerComponentTest extends TestCase
|
|
|
{
|
|
|
Router::reload();
|
|
|
$this->Controller->setRequest($this->request->withHeader('Accept', 'application/json, application/javascript, */*; q=0.01'));
|
|
|
- $this->RequestHandler->ext = null;
|
|
|
+ $this->RequestHandler->setExt(null);
|
|
|
Router::extensions(['rss', 'json'], false);
|
|
|
|
|
|
$this->RequestHandler->startup(new Event('Controller.startup', $this->Controller));
|
|
|
@@ -230,13 +243,13 @@ class RequestHandlerComponentTest extends TestCase
|
|
|
'Accept',
|
|
|
'application/json, application/javascript, application/xml, */*; q=0.01'
|
|
|
));
|
|
|
- $this->RequestHandler->ext = null;
|
|
|
+ $this->RequestHandler->setExt(null);
|
|
|
Router::extensions(['xml', 'json'], false);
|
|
|
|
|
|
$this->RequestHandler->startup(new Event('Controller.startup', $this->Controller));
|
|
|
$this->assertEquals('xml', $this->RequestHandler->ext);
|
|
|
|
|
|
- $this->RequestHandler->ext = null;
|
|
|
+ $this->RequestHandler->setExt(null);
|
|
|
Router::extensions(['json', 'xml'], false);
|
|
|
|
|
|
$this->RequestHandler->startup(new Event('Controller.startup', $this->Controller));
|
|
|
@@ -255,7 +268,7 @@ class RequestHandlerComponentTest extends TestCase
|
|
|
'Accept',
|
|
|
'text/csv;q=1.0, application/json;q=0.8, application/xml;q=0.7'
|
|
|
));
|
|
|
- $this->RequestHandler->ext = null;
|
|
|
+ $this->RequestHandler->setExt(null);
|
|
|
|
|
|
$this->RequestHandler->startup(new Event('Controller.startup', $this->Controller));
|
|
|
$this->assertEquals('json', $this->RequestHandler->ext);
|
|
|
@@ -273,7 +286,7 @@ class RequestHandlerComponentTest extends TestCase
|
|
|
'HTTP_ACCEPT',
|
|
|
'application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5'
|
|
|
);
|
|
|
- $this->RequestHandler->ext = null;
|
|
|
+ $this->RequestHandler->setExt(null);
|
|
|
|
|
|
$this->RequestHandler->startup(new Event('Controller.startup', $this->Controller));
|
|
|
$this->assertNull($this->RequestHandler->ext);
|
|
|
@@ -821,60 +834,23 @@ XML;
|
|
|
'Accept',
|
|
|
'text/xml,application/xml,application/xhtml+xml,text/html,text/plain,image/png,*/*'
|
|
|
));
|
|
|
- $this->assertTrue($this->RequestHandler->isXml());
|
|
|
- $this->assertFalse($this->RequestHandler->isAtom());
|
|
|
- $this->assertFalse($this->RequestHandler->isRSS());
|
|
|
+ $this->assertTrue($this->RequestHandler->prefers('xml'));
|
|
|
+ $this->assertFalse($this->RequestHandler->prefers('atom'));
|
|
|
+ $this->assertFalse($this->RequestHandler->prefers('rss'));
|
|
|
|
|
|
$this->Controller->setRequest($this->request->withHeader(
|
|
|
'Accept',
|
|
|
'application/atom+xml,text/xml,application/xml,application/xhtml+xml,text/html,text/plain,image/png,*/*'
|
|
|
));
|
|
|
- $this->assertTrue($this->RequestHandler->isAtom());
|
|
|
- $this->assertFalse($this->RequestHandler->isRSS());
|
|
|
+ $this->assertTrue($this->RequestHandler->prefers('atom'));
|
|
|
+ $this->assertFalse($this->RequestHandler->prefers('rss'));
|
|
|
|
|
|
$this->Controller->setRequest($this->request->withHeader(
|
|
|
'Accept',
|
|
|
'application/rss+xml,text/xml,application/xml,application/xhtml+xml,text/html,text/plain,image/png,*/*'
|
|
|
));
|
|
|
- $this->assertFalse($this->RequestHandler->isAtom());
|
|
|
- $this->assertTrue($this->RequestHandler->isRSS());
|
|
|
-
|
|
|
- $this->assertFalse($this->RequestHandler->isWap());
|
|
|
- $this->Controller->setRequest($this->request->withHeader(
|
|
|
- 'Accept',
|
|
|
- 'text/vnd.wap.wml,text/html,text/plain,image/png,*/*'
|
|
|
- ));
|
|
|
- $this->assertTrue($this->RequestHandler->isWap());
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * testResponseContentType method
|
|
|
- *
|
|
|
- * @return void
|
|
|
- */
|
|
|
- public function testResponseContentType(): void
|
|
|
- {
|
|
|
- $this->assertEquals('html', $this->RequestHandler->responseType());
|
|
|
- $this->assertTrue($this->RequestHandler->respondAs('atom'));
|
|
|
- $this->assertEquals('atom', $this->RequestHandler->responseType());
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * testMobileDeviceDetection method
|
|
|
- *
|
|
|
- * @return void
|
|
|
- */
|
|
|
- public function testMobileDeviceDetection(): void
|
|
|
- {
|
|
|
- $request = $this->getMockBuilder('Cake\Http\ServerRequest')
|
|
|
- ->setMethods(['is'])
|
|
|
- ->getMock();
|
|
|
- $request->expects($this->once())->method('is')
|
|
|
- ->with('mobile')
|
|
|
- ->will($this->returnValue(true));
|
|
|
-
|
|
|
- $this->Controller->setRequest($request);
|
|
|
- $this->assertTrue($this->RequestHandler->isMobile());
|
|
|
+ $this->assertFalse($this->RequestHandler->prefers('atom'));
|
|
|
+ $this->assertTrue($this->RequestHandler->prefers('rss'));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -929,7 +905,7 @@ XML;
|
|
|
));
|
|
|
$this->assertNotEquals('rss', $this->RequestHandler->prefers());
|
|
|
|
|
|
- $this->RequestHandler->ext = 'rss';
|
|
|
+ $this->RequestHandler->setExt('rss');
|
|
|
$this->assertEquals('rss', $this->RequestHandler->prefers());
|
|
|
$this->assertFalse($this->RequestHandler->prefers('xml'));
|
|
|
$this->assertEquals('xml', $this->RequestHandler->prefers(['js', 'xml', 'xhtml']));
|
|
|
@@ -950,7 +926,7 @@ XML;
|
|
|
$this->assertFalse($this->RequestHandler->prefers('rss'));
|
|
|
|
|
|
$this->Controller->setRequest($this->request->withEnv('HTTP_ACCEPT', ''));
|
|
|
- $this->RequestHandler->ext = 'json';
|
|
|
+ $this->RequestHandler->setExt('json');
|
|
|
$this->assertFalse($this->RequestHandler->prefers('xml'));
|
|
|
}
|
|
|
|