81 lines
2.0 KiB
PHP
81 lines
2.0 KiB
PHP
|
<?php
|
||
|
use Aura\Session\SessionFactory;
|
||
|
use GuzzleHttp\Client;
|
||
|
use GuzzleHttp\Handler\MockHandler;
|
||
|
use GuzzleHttp\HandlerStack;
|
||
|
use GuzzleHttp\Psr7\Response;
|
||
|
|
||
|
use Aviat\Ion\Friend;
|
||
|
use Aviat\AnimeClient\Auth\HummingbirdAuth;
|
||
|
|
||
|
class HummingbirdAuthTest extends AnimeClient_TestCase {
|
||
|
|
||
|
static $session;
|
||
|
static $sessionHandler;
|
||
|
|
||
|
public static function setUpBeforeClass()
|
||
|
{
|
||
|
self::$session = (new SessionFactory)->newInstance([]);
|
||
|
}
|
||
|
|
||
|
public function setUp()
|
||
|
{
|
||
|
parent::setUp();
|
||
|
$auth = new HummingbirdAuth($this->container);
|
||
|
$friend = new Friend($auth);
|
||
|
$this->auth = $friend;
|
||
|
$this->container->set('session', self::$session);
|
||
|
}
|
||
|
|
||
|
public function dataAuthenticate()
|
||
|
{
|
||
|
$testToken = 'notReallyAValidTokenButThisIsATest';
|
||
|
|
||
|
return [
|
||
|
'successful auth call' => [
|
||
|
'username' => 'timw4mailtest',
|
||
|
'password' => 'password',
|
||
|
'response_data' => [
|
||
|
'code' => 201,
|
||
|
'body' => json_encode($testToken)
|
||
|
],
|
||
|
'session_value' => $testToken,
|
||
|
'expected' => TRUE,
|
||
|
],
|
||
|
'unsuccessful auth call' => [
|
||
|
'username' => 'foo',
|
||
|
'password' => 'foobarbaz',
|
||
|
'response_data' => [
|
||
|
'code' => 401,
|
||
|
'body' => '{"error":"Invalid credentials"}',
|
||
|
],
|
||
|
'session_value' => FALSE,
|
||
|
'expected' => FALSE,
|
||
|
]
|
||
|
];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider dataAuthenticate
|
||
|
*/
|
||
|
public function testAuthenticate($username, $password, $response_data, $session_value, $expected)
|
||
|
{
|
||
|
$this->container->get('config')
|
||
|
->set('hummingbird_username', $username);
|
||
|
$model = new MockBaseApiModel($this->container);
|
||
|
$mock = new MockHandler([
|
||
|
new Response($response_data['code'], [], $response_data['body'])
|
||
|
]);
|
||
|
$handler = HandlerStack::create($mock);
|
||
|
$client = new Client([
|
||
|
'handler' => $handler,
|
||
|
'http_errors' => FALSE // Don't throw an exception for 400/500 class status codes
|
||
|
]);
|
||
|
$model->__set('client', $client);
|
||
|
$this->auth->__set('model', $model);
|
||
|
|
||
|
$actual = $this->auth->authenticate($password);
|
||
|
$this->assertEquals($expected, $actual);
|
||
|
|
||
|
}
|
||
|
}
|