Refactor FrontControllerTest
This commit is contained in:
parent
8aee9054a8
commit
a5252393de
1 changed files with 117 additions and 113 deletions
|
@ -83,6 +83,70 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
Config::destroyInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* Run controller function with custom query parameters and return the result
|
||||
*
|
||||
* @param string $request Controller function to call
|
||||
* @param array $params Query parameters
|
||||
* @param Config $config Custom config
|
||||
*
|
||||
* @return Response HTTP response
|
||||
*/
|
||||
private function getRequestResult($request, array $params, Config $config = null)
|
||||
{
|
||||
if (isset($config)) {
|
||||
$controller = new FrontController($this->container, $config);
|
||||
} else {
|
||||
$controller= $this->controller;
|
||||
}
|
||||
return $controller->$request(
|
||||
$this->request->withQueryParams($params),
|
||||
$this->response
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert that calling controller function with these parameters returns a 200 HTTP response
|
||||
*
|
||||
* @param string $request Controller function to call
|
||||
* @param array $params Query parameters
|
||||
* @param Config $config Custom config
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function assertRequestIsOk($request, array $params = [], Config $config = null)
|
||||
{
|
||||
$this->assertTrue($this->getRequestResult($request, $params, $config)->isOk());
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert that calling controller function with these parameters returns an HTTP redirect
|
||||
*
|
||||
* @param string $request Controller function to call
|
||||
* @param array $params Query parameters
|
||||
* @param Config $config Custom config
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function assertRequestIsRedirect($request, array $params = [], Config $config = null)
|
||||
{
|
||||
$this->assertTrue($this->getRequestResult($request, $params, $config)->isRedirect());
|
||||
}
|
||||
|
||||
/**
|
||||
* Assert that calling controller function with these parameters returns an HTTP redirect
|
||||
*
|
||||
* @param string $request Controller function to call
|
||||
* @param array $params Query parameters
|
||||
* @param Config $config Custom config
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
private function assertRequestIsServerError($request, array $params = [], Config $config = null)
|
||||
{
|
||||
$this->assertTrue($this->getRequestResult($request, $params, $config)->isServerError());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the constructor.
|
||||
*
|
||||
|
@ -112,8 +176,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testIndex()
|
||||
{
|
||||
$result = $this->controller->index($this->request, $this->response);
|
||||
$this->assertTrue($result->isOk());
|
||||
$this->assertRequestIsOk('index');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -139,8 +202,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testExtractors()
|
||||
{
|
||||
$result = $this->controller->extractors($this->request, $this->response);
|
||||
$this->assertTrue($result->isOk());
|
||||
$this->assertRequestIsOk('extractors');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -150,8 +212,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testPassword()
|
||||
{
|
||||
$result = $this->controller->password($this->request, $this->response);
|
||||
$this->assertTrue($result->isOk());
|
||||
$this->assertRequestIsOk('password');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -161,8 +222,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testVideoWithoutUrl()
|
||||
{
|
||||
$result = $this->controller->video($this->request, $this->response);
|
||||
$this->assertTrue($result->isRedirect());
|
||||
$this->assertRequestIsRedirect('video');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -172,11 +232,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testVideo()
|
||||
{
|
||||
$result = $this->controller->video(
|
||||
$this->request->withQueryParams(['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU']),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
$this->assertRequestIsOk('video', ['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -186,11 +242,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testVideoWithoutTitle()
|
||||
{
|
||||
$result = $this->controller->video(
|
||||
$this->request->withQueryParams(['url'=>'http://html5demos.com/video']),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
$this->assertRequestIsOk('video', ['url'=>'http://html5demos.com/video']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -200,11 +252,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testVideoWithAudio()
|
||||
{
|
||||
$result = $this->controller->video(
|
||||
$this->request->withQueryParams(['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU', 'audio'=>true]),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
$this->assertRequestIsOk('video', ['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU', 'audio'=>true]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -214,14 +262,10 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testVideoWithUnconvertedAudio()
|
||||
{
|
||||
$result = $this->controller->video(
|
||||
$this->request->withQueryParams(
|
||||
['url' => 'https://2080.bandcamp.com/track/cygnus-x-the-orange-theme-2080-faulty-chip-cover',
|
||||
'audio'=> true, ]
|
||||
),
|
||||
$this->response
|
||||
$this->assertRequestIsRedirect(
|
||||
'video',
|
||||
['url'=>'https://2080.bandcamp.com/track/cygnus-x-the-orange-theme-2080-faulty-chip-cover', 'audio'=>true]
|
||||
);
|
||||
$this->assertTrue($result->isRedirect());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -246,16 +290,8 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testVideoWithMissingPassword()
|
||||
{
|
||||
$result = $this->controller->video(
|
||||
$this->request->withQueryParams(['url'=>'http://vimeo.com/68375962']),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
$result = $this->controller->video(
|
||||
$this->request->withQueryParams(['url'=>'http://vimeo.com/68375962', 'audio'=>true]),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
$this->assertRequestIsOk('video', ['url'=>'http://vimeo.com/68375962']);
|
||||
$this->assertRequestIsOk('video', ['url'=>'http://vimeo.com/68375962', 'audio'=>true]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -265,17 +301,13 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testVideoWithStream()
|
||||
{
|
||||
$controller = new FrontController($this->container, new Config(['stream'=>true]));
|
||||
$result = $controller->video(
|
||||
$this->request->withQueryParams(['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU']),
|
||||
$this->response
|
||||
$config = new Config(['stream'=>true]);
|
||||
$this->assertRequestIsOk('video', ['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU'], $config);
|
||||
$this->assertRequestIsOk(
|
||||
'video',
|
||||
['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU', 'audio'=>true],
|
||||
$config
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
$result = $controller->video(
|
||||
$this->request->withQueryParams(['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU', 'audio'=>true]),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -285,13 +317,10 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testVideoWithPlaylist()
|
||||
{
|
||||
$result = $this->controller->video(
|
||||
$this->request->withQueryParams(
|
||||
$this->assertRequestIsOk(
|
||||
'video',
|
||||
['url'=>'https://www.youtube.com/playlist?list=PLgdySZU6KUXL_8Jq5aUkyNV7wCa-4wZsC']
|
||||
),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -312,8 +341,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithoutUrl()
|
||||
{
|
||||
$result = $this->controller->redirect($this->request, $this->response);
|
||||
$this->assertTrue($result->isRedirect());
|
||||
$this->assertRequestIsRedirect('redirect');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -323,11 +351,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirect()
|
||||
{
|
||||
$result = $this->controller->redirect(
|
||||
$this->request->withQueryParams(['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU']),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isRedirect());
|
||||
$this->assertRequestIsRedirect('redirect', ['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -337,11 +361,10 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithFormat()
|
||||
{
|
||||
$result = $this->controller->redirect(
|
||||
$this->request->withQueryParams(['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU', 'format'=>'worst']),
|
||||
$this->response
|
||||
$this->assertRequestIsRedirect(
|
||||
'redirect',
|
||||
['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU', 'format'=>'worst']
|
||||
);
|
||||
$this->assertTrue($result->isRedirect());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -351,12 +374,11 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithStream()
|
||||
{
|
||||
$controller = new FrontController($this->container, new Config(['stream'=>true]));
|
||||
$result = $controller->redirect(
|
||||
$this->request->withQueryParams(['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU']),
|
||||
$this->response
|
||||
$this->assertRequestIsOk(
|
||||
'redirect',
|
||||
['url'=>'https://www.youtube.com/watch?v=M7IpKCZ47pU'],
|
||||
new Config(['stream'=>true])
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -366,12 +388,11 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithM3uStream()
|
||||
{
|
||||
$controller = new FrontController($this->container, new Config(['stream'=>true]));
|
||||
$result = $controller->redirect(
|
||||
$this->request->withQueryParams(['url'=>'https://twitter.com/verge/status/813055465324056576/video/1']),
|
||||
$this->response
|
||||
$this->assertRequestIsOk(
|
||||
'redirect',
|
||||
['url'=>'https://twitter.com/verge/status/813055465324056576/video/1'],
|
||||
new Config(['stream'=>true])
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -381,14 +402,11 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithRtmpStream()
|
||||
{
|
||||
$controller = new FrontController($this->container, new Config(['stream'=>true]));
|
||||
$result = $controller->redirect(
|
||||
$this->request->withQueryParams(
|
||||
['url'=>'http://www.rtl2.de/sendung/grip-das-motormagazin/folge/folge-203-0']
|
||||
),
|
||||
$this->response
|
||||
$this->assertRequestIsOk(
|
||||
'redirect',
|
||||
['url'=>'http://www.rtl2.de/sendung/grip-das-motormagazin/folge/folge-203-0'],
|
||||
new Config(['stream'=>true])
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -398,17 +416,14 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithRemux()
|
||||
{
|
||||
$controller = new FrontController($this->container, new Config(['remux'=>true]));
|
||||
$result = $controller->redirect(
|
||||
$this->request->withQueryParams(
|
||||
$this->assertRequestIsOk(
|
||||
'redirect',
|
||||
[
|
||||
'url' => 'https://www.youtube.com/watch?v=M7IpKCZ47pU',
|
||||
'format'=> 'bestvideo+bestaudio',
|
||||
]
|
||||
),
|
||||
$this->response
|
||||
],
|
||||
new Config(['remux'=>true])
|
||||
);
|
||||
$this->assertTrue($result->isOk());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -418,16 +433,13 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithRemuxDisabled()
|
||||
{
|
||||
$result = $this->controller->redirect(
|
||||
$this->request->withQueryParams(
|
||||
$this->assertRequestIsServerError(
|
||||
'redirect',
|
||||
[
|
||||
'url' => 'https://www.youtube.com/watch?v=M7IpKCZ47pU',
|
||||
'format'=> 'bestvideo+bestaudio',
|
||||
]
|
||||
),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isServerError());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -437,11 +449,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithMissingPassword()
|
||||
{
|
||||
$result = $this->controller->redirect(
|
||||
$this->request->withQueryParams(['url'=>'http://vimeo.com/68375962']),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isRedirect());
|
||||
$this->assertRequestIsRedirect('redirect', ['url'=>'http://vimeo.com/68375962']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -451,10 +459,6 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
*/
|
||||
public function testRedirectWithError()
|
||||
{
|
||||
$result = $this->controller->redirect(
|
||||
$this->request->withQueryParams(['url'=>'http://example.com/foo']),
|
||||
$this->response
|
||||
);
|
||||
$this->assertTrue($result->isServerError());
|
||||
$this->assertRequestIsServerError('redirect', ['url'=>'http://example.com/foo']);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue