1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
<?php
/**
* Slim Framework (https://slimframework.com)
*
* @license https://github.com/slimphp/Slim/blob/3.x/LICENSE.md (MIT License)
*/
namespace Slim\Tests\Handlers;
use PHPUnit\Framework\Attributes\RequiresPhpunit;
use PHPUnit;
use ReflectionClass;
use Slim\Handlers\AbstractHandler;
class AbstractHandlerTest extends PHPUnit\Framework\TestCase
{
#[RequiresPhpunit('< 12')]
public function testHalfValidContentType()
{
$req = $this->getMockBuilder('Slim\Http\Request')->disableOriginalConstructor()->getMock();
$req->expects($this->any())->method('getHeaderLine')->willReturn('unknown/+json');
$abstractHandler = $this->getMockForAbstractClass(AbstractHandler::class);
$newTypes = [
'application/xml',
'text/xml',
'text/html',
];
$class = new ReflectionClass(AbstractHandler::class);
$reflectionProperty = $class->getProperty('knownContentTypes');
$reflectionProperty->setAccessible(true);
$reflectionProperty->setValue($abstractHandler, $newTypes);
$method = $class->getMethod('determineContentType');
$method->setAccessible(true);
$return = $method->invoke($abstractHandler, $req);
$this->assertEquals('text/html', $return);
}
/**
* Ensure that an acceptable media-type is found in the Accept header even
* if it's not the first in the list.
*/
#[RequiresPhpunit('< 12')]
public function testAcceptableMediaTypeIsNotFirstInList()
{
$request = $this->getMockBuilder('Slim\Http\Request')
->disableOriginalConstructor()
->getMock();
$request->expects($this->any())
->method('getHeaderLine')
->willReturn('text/plain,text/html');
// provide access to the determineContentType() as it's a protected method
$class = new ReflectionClass(AbstractHandler::class);
$method = $class->getMethod('determineContentType');
$method->setAccessible(true);
// use a mock object here as AbstractHandler cannot be directly instantiated
$abstractHandler = $this->getMockForAbstractClass(AbstractHandler::class);
// call determineContentType()
$return = $method->invoke($abstractHandler, $request);
$this->assertEquals('text/html', $return);
}
}
|