2017-05-29 19:11:59 +00:00
|
|
|
<?php
|
2019-10-03 19:24:12 +00:00
|
|
|
|
2017-05-29 19:11:59 +00:00
|
|
|
/**
|
|
|
|
* LocaleMiddlewareTest class.
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace Alltube\Test;
|
|
|
|
|
2020-10-21 20:47:15 +00:00
|
|
|
use Alltube\Exception\DependencyException;
|
|
|
|
use Alltube\Factory\LocaleManagerFactory;
|
|
|
|
use Alltube\Factory\SessionFactory;
|
2020-10-20 21:13:48 +00:00
|
|
|
use Alltube\Middleware\LocaleMiddleware;
|
2017-05-30 21:41:26 +00:00
|
|
|
use Slim\Container;
|
2017-05-29 19:11:59 +00:00
|
|
|
use Slim\Http\Environment;
|
|
|
|
use Slim\Http\Request;
|
|
|
|
use Slim\Http\Response;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Unit tests for the FrontController class.
|
|
|
|
*/
|
2019-04-21 16:30:02 +00:00
|
|
|
class LocaleMiddlewareTest extends BaseTest
|
2017-05-29 19:11:59 +00:00
|
|
|
{
|
2017-05-30 21:49:38 +00:00
|
|
|
/**
|
|
|
|
* LocaleMiddleware instance.
|
|
|
|
*
|
|
|
|
* @var LocaleMiddleware
|
|
|
|
*/
|
|
|
|
private $middleware;
|
2017-05-29 20:00:30 +00:00
|
|
|
|
2017-11-12 15:39:56 +00:00
|
|
|
/**
|
|
|
|
* Slim dependency container.
|
|
|
|
*
|
|
|
|
* @var Container
|
|
|
|
*/
|
|
|
|
private $container;
|
|
|
|
|
2017-05-29 19:11:59 +00:00
|
|
|
/**
|
|
|
|
* Prepare tests.
|
2020-10-21 20:47:15 +00:00
|
|
|
* @throws DependencyException
|
2017-05-29 19:11:59 +00:00
|
|
|
*/
|
2019-11-30 13:08:18 +00:00
|
|
|
protected function setUp(): void
|
2017-05-29 19:11:59 +00:00
|
|
|
{
|
2017-11-10 11:18:20 +00:00
|
|
|
$this->container = new Container();
|
2020-10-21 20:47:15 +00:00
|
|
|
$this->container['session'] = SessionFactory::create();
|
|
|
|
$this->container['locale'] = LocaleManagerFactory::create($this->container);
|
2017-11-10 11:18:20 +00:00
|
|
|
$this->middleware = new LocaleMiddleware($this->container);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Unset locale cookie after each test.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
2019-11-30 13:08:18 +00:00
|
|
|
protected function tearDown(): void
|
2017-11-10 11:18:20 +00:00
|
|
|
{
|
|
|
|
$this->container['locale']->unsetLocale();
|
2017-05-29 19:11:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test the testLocale() function.
|
|
|
|
*
|
|
|
|
* @return void
|
2017-11-11 21:48:11 +00:00
|
|
|
* @requires OS Linux
|
2017-05-29 19:11:59 +00:00
|
|
|
*/
|
|
|
|
public function testTestLocale()
|
|
|
|
{
|
|
|
|
$locale = [
|
2017-11-11 21:39:41 +00:00
|
|
|
'language' => 'en',
|
|
|
|
'region' => 'US',
|
2017-05-29 19:11:59 +00:00
|
|
|
];
|
2017-11-11 21:39:41 +00:00
|
|
|
$this->assertEquals('en_US', $this->middleware->testLocale($locale));
|
2017-05-29 19:11:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Test the testLocale() function with an unsupported locale.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function testLocaleWithWrongLocale()
|
|
|
|
{
|
|
|
|
$locale = [
|
2017-10-29 22:21:13 +00:00
|
|
|
'language' => 'foo',
|
|
|
|
'region' => 'BAR',
|
2017-05-29 19:11:59 +00:00
|
|
|
];
|
|
|
|
$this->assertNull($this->middleware->testLocale($locale));
|
|
|
|
$this->assertNull($this->middleware->testLocale([]));
|
|
|
|
}
|
|
|
|
|
2017-10-02 18:29:09 +00:00
|
|
|
/**
|
2017-11-10 11:18:20 +00:00
|
|
|
* Check that the request contains an Accept-Language header.
|
|
|
|
*
|
|
|
|
* @param Request $request PSR-7 request
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function assertHeader(Request $request)
|
|
|
|
{
|
|
|
|
$header = $request->getHeader('Accept-Language');
|
|
|
|
$this->assertEquals('foo-BAR', $header[0]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check that the request contains no Accept-Language header.
|
|
|
|
*
|
|
|
|
* @param Request $request PSR-7 request
|
2017-10-02 18:29:09 +00:00
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
2017-11-10 11:18:20 +00:00
|
|
|
public function assertNoHeader(Request $request)
|
2017-10-02 18:29:09 +00:00
|
|
|
{
|
2017-11-10 11:18:20 +00:00
|
|
|
$header = $request->getHeader('Accept-Language');
|
|
|
|
$this->assertEmpty($header);
|
2017-10-02 18:29:09 +00:00
|
|
|
}
|
|
|
|
|
2017-05-29 19:11:59 +00:00
|
|
|
/**
|
|
|
|
* Test the __invoke() function.
|
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function testInvoke()
|
|
|
|
{
|
|
|
|
$request = Request::createFromEnvironment(Environment::mock());
|
|
|
|
$this->middleware->__invoke(
|
2017-11-10 11:18:20 +00:00
|
|
|
$request->withHeader('Accept-Language', 'foo-BAR'),
|
2017-05-29 19:11:59 +00:00
|
|
|
new Response(),
|
2017-11-10 11:18:20 +00:00
|
|
|
[$this, 'assertHeader']
|
2017-05-29 19:11:59 +00:00
|
|
|
);
|
|
|
|
}
|
2017-05-30 21:41:26 +00:00
|
|
|
|
|
|
|
/**
|
2017-11-10 11:18:20 +00:00
|
|
|
* Test the __invoke() function without the Accept-Language header.
|
2017-05-30 21:41:26 +00:00
|
|
|
*
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
public function testInvokeWithoutHeader()
|
|
|
|
{
|
|
|
|
$request = Request::createFromEnvironment(Environment::mock());
|
|
|
|
$this->middleware->__invoke(
|
|
|
|
$request->withoutHeader('Accept-Language'),
|
|
|
|
new Response(),
|
2017-11-10 11:18:20 +00:00
|
|
|
[$this, 'assertNoHeader']
|
2017-05-30 21:41:26 +00:00
|
|
|
);
|
2017-05-30 21:59:15 +00:00
|
|
|
}
|
2017-05-29 19:11:59 +00:00
|
|
|
}
|