<?php
namespace OAuth2;
use OAuth2\Request\TestRequest;
use OAuth2\Storage\Bootstrap;
use OAuth2\GrantType\AuthorizationCode;
use PHPUnit\Framework\TestCase;
class RequestTest extends TestCase
{
public function testRequestOverride()
{
$request = new TestRequest();
$server = $this->getTestServer();
// Smoke test for override request class
// $server->handleTokenRequest($request, $response = new Response());
// $this->assertInstanceOf('Response', $response);
// $server->handleAuthorizeRequest($request, $response = new Response(), true);
// $this->assertInstanceOf('Response', $response);
// $response = $server->verifyResourceRequest($request, $response = new Response());
// $this->assertTrue(is_bool($response));
/*** make some valid requests ***/
// Valid Token Request
$request->setPost(array(
'grant_type' => 'authorization_code',
'client_id' => 'Test Client ID',
'client_secret' => 'TestSecret',
'code' => 'testcode',
));
$server->handleTokenRequest($request, $response = new Response());
$this->assertEquals($response->getStatusCode(), 200);
$this->assertNull($response->getParameter('error'));
$this->assertNotNUll($response->getParameter('access_token'));
}
public function testHeadersReturnsValueByKey()
{
$request = new Request(
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array('AUTHORIZATION' => 'Basic secret')
);
$this->assertEquals('Basic secret', $request->headers('AUTHORIZATION'));
}
public function testHeadersReturnsDefaultIfHeaderNotPresent()
{
$request = new Request();
$this->assertEquals('Bearer', $request->headers('AUTHORIZATION', 'Bearer'));
}
public function testHeadersIsCaseInsensitive()
{
$request = new Request(
array(),
array(),
array(),
array(),
array(),
array(),
array(),
array('AUTHORIZATION' => 'Basic secret')
);
$this->assertEquals('Basic secret', $request->headers('Authorization'));
}
public function testRequestReturnsPostParamIfNoQueryParamAvailable()
{
$request = new Request(
array(),
array('client_id' => 'correct')
);
$this->assertEquals('correct', $request->query('client_id', $request->request('client_id')));
}
public function testRequestHasHeadersAndServerHeaders()
{
$request = new Request(
array(),
array(),
array(),
array(),
array(),
array('CONTENT_TYPE' => 'text/xml', 'PHP_AUTH_USER' => 'client_id', 'PHP_AUTH_PW' => 'client_pass'),
null,
array('CONTENT_TYPE' => 'application/json')
);
$this->assertSame('client_id', $request->headers('PHP_AUTH_USER'));
$this->assertSame('client_pass', $request->headers('PHP_AUTH_PW'));
$this->assertSame('application/json', $request->headers('CONTENT_TYPE'));
}
private function getTestServer($config = array())
{
$storage = Bootstrap::getInstance()->getMemoryStorage();
$server = new Server($storage, $config);
// Add the two types supported for authorization grant
$server->addGrantType(new AuthorizationCode($storage));
return $server;
}
}