blob: 6a5cc0b49295d16c8ceffd50f490a7c16ac3b007 [file] [log] [blame]
<?php
namespace OAuth2\Storage;
class ClientTest extends BaseTest
{
/** @dataProvider provideStorage */
public function testGetClientDetails(ClientInterface $storage)
{
if ($storage instanceof NullStorage) {
$this->markTestSkipped('Skipped Storage: ' . $storage->getMessage());
return;
}
// nonexistant client_id
$details = $storage->getClientDetails('fakeclient');
$this->assertFalse($details);
// valid client_id
$details = $storage->getClientDetails('oauth_test_client');
$this->assertNotNull($details);
$this->assertArrayHasKey('client_id', $details);
$this->assertArrayHasKey('client_secret', $details);
$this->assertArrayHasKey('redirect_uri', $details);
}
/** @dataProvider provideStorage */
public function testCheckRestrictedGrantType(ClientInterface $storage)
{
if ($storage instanceof NullStorage) {
$this->markTestSkipped('Skipped Storage: ' . $storage->getMessage());
return;
}
// Check invalid
$pass = $storage->checkRestrictedGrantType('oauth_test_client', 'authorization_code');
$this->assertFalse($pass);
// Check valid
$pass = $storage->checkRestrictedGrantType('oauth_test_client', 'implicit');
$this->assertTrue($pass);
}
/** @dataProvider provideStorage */
public function testGetAccessToken(ClientInterface $storage)
{
if ($storage instanceof NullStorage) {
$this->markTestSkipped('Skipped Storage: ' . $storage->getMessage());
return;
}
// nonexistant client_id
$details = $storage->getAccessToken('faketoken');
$this->assertFalse($details);
// valid client_id
$details = $storage->getAccessToken('testtoken');
$this->assertNotNull($details);
}
/** @dataProvider provideStorage */
public function testIsPublicClient(ClientInterface $storage)
{
if ($storage instanceof NullStorage) {
$this->markTestSkipped('Skipped Storage: ' . $storage->getMessage());
return;
}
$publicClientId = 'public-client-'.rand();
$confidentialClientId = 'confidential-client-'.rand();
// create a new client
$success1 = $storage->setClientDetails($publicClientId, '');
$success2 = $storage->setClientDetails($confidentialClientId, 'some-secret');
$this->assertTrue($success1);
$this->assertTrue($success2);
// assert isPublicClient for both
$this->assertTrue($storage->isPublicClient($publicClientId));
$this->assertFalse($storage->isPublicClient($confidentialClientId));
}
/** @dataProvider provideStorage */
public function testSaveClient(ClientInterface $storage)
{
if ($storage instanceof NullStorage) {
$this->markTestSkipped('Skipped Storage: ' . $storage->getMessage());
return;
}
$clientId = 'some-client-'.rand();
// create a new client
$success = $storage->setClientDetails($clientId, 'somesecret', 'http://test.com', 'client_credentials', 'clientscope1', 'brent@brentertainment.com');
$this->assertTrue($success);
// valid client_id
$details = $storage->getClientDetails($clientId);
$this->assertEquals($details['client_secret'], 'somesecret');
$this->assertEquals($details['redirect_uri'], 'http://test.com');
$this->assertEquals($details['grant_types'], 'client_credentials');
$this->assertEquals($details['scope'], 'clientscope1');
$this->assertEquals($details['user_id'], 'brent@brentertainment.com');
}
}