mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-23 09:53:15 +00:00
udpate facebook SDK to 5.6
This commit is contained in:
@@ -5,6 +5,7 @@ namespace Alchemy\Tests\Phrasea\Authentication\Provider;
|
||||
use Alchemy\Phrasea\Authentication\Provider\Facebook;
|
||||
use Alchemy\Phrasea\Authentication\Provider\ProviderInterface;
|
||||
use Alchemy\Phrasea\Authentication\Provider\Token\Identity;
|
||||
use Facebook\Authentication\AccessToken;
|
||||
|
||||
/**
|
||||
* @group functional
|
||||
@@ -12,6 +13,8 @@ use Alchemy\Phrasea\Authentication\Provider\Token\Identity;
|
||||
*/
|
||||
class FacebookTest extends ProviderTestCase
|
||||
{
|
||||
const TOKEN = 'aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789';
|
||||
|
||||
public function testGetSetSession()
|
||||
{
|
||||
$this->markTestSkipped('testGetSetSession disabled for facebook');
|
||||
@@ -35,10 +38,6 @@ class FacebookTest extends ProviderTestCase
|
||||
public function provideDataForFailingCallback()
|
||||
{
|
||||
$provider = $this->getProvider();
|
||||
$provider->getFacebook()->expects($this->any())
|
||||
->method('getUser')
|
||||
->will($this->returnValue(null));
|
||||
|
||||
return [
|
||||
[$provider, $this->getRequestMock()]
|
||||
];
|
||||
@@ -52,10 +51,8 @@ class FacebookTest extends ProviderTestCase
|
||||
public function provideDataForSuccessCallback()
|
||||
{
|
||||
$provider = $this->getProvider();
|
||||
$provider->getFacebook()->expects($this->any())
|
||||
->method('getUser')
|
||||
->will($this->returnValue('123456'));
|
||||
|
||||
$facebookMock = $this->getFacebookMock(true);
|
||||
$provider->setFacebook($facebookMock);
|
||||
return [
|
||||
[$provider, $this->getRequestMock()]
|
||||
];
|
||||
@@ -63,14 +60,14 @@ class FacebookTest extends ProviderTestCase
|
||||
|
||||
protected function getProvider()
|
||||
{
|
||||
return new Facebook($this->getFacebookMock(), $this->getUrlGeneratorMock());
|
||||
return new Facebook($this->getFacebookMock(), $this->getUrlGeneratorMock(), $this->getMockSession());
|
||||
}
|
||||
|
||||
protected function authenticateProvider(ProviderInterface $provider)
|
||||
{
|
||||
$provider->getFacebook()->expects($this->any())
|
||||
->method('getUser')
|
||||
->will($this->returnValue('123456'));
|
||||
$facebookMock = $this->getFacebookMock(true);
|
||||
$provider->setFacebook($facebookMock);
|
||||
$provider->getSession()->set('fb_access_token', self::TOKEN);
|
||||
}
|
||||
|
||||
protected function getProviderForSuccessIdentity()
|
||||
@@ -78,27 +75,6 @@ class FacebookTest extends ProviderTestCase
|
||||
$provider = $this->getProvider();
|
||||
$this->authenticateProvider($provider);
|
||||
|
||||
$facebook = $this->getMockBuilder('Facebook')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(['getLoginUrl', 'api', 'getUser'])
|
||||
->getMock();
|
||||
|
||||
$facebook->expects($this->any())
|
||||
->method('getLoginUrl')
|
||||
->will($this->returnValue('http://www.facebook.com/'));
|
||||
|
||||
$facebook->expects($this->once())
|
||||
->method('api')
|
||||
->will($this->returnValue([
|
||||
'id' => self::ID,
|
||||
'username' => self::FIRSTNAME,
|
||||
'first_name' => self::FIRSTNAME,
|
||||
'last_name' => self::LASTNAME,
|
||||
'email' => self::EMAIL,
|
||||
]));
|
||||
|
||||
$provider->setFacebook($facebook);
|
||||
|
||||
return $provider;
|
||||
}
|
||||
|
||||
@@ -123,6 +99,7 @@ class FacebookTest extends ProviderTestCase
|
||||
return [
|
||||
'app-id' => 'zizi',
|
||||
'secret' => 's3cr3t',
|
||||
'default-graph-version' => 'v2.10'
|
||||
];
|
||||
}
|
||||
|
||||
@@ -131,27 +108,100 @@ class FacebookTest extends ProviderTestCase
|
||||
return $this->getProvider();
|
||||
}
|
||||
|
||||
private function getFacebookMock()
|
||||
private function getFacebookMock($ValidAccessToken = false)
|
||||
{
|
||||
$facebook = $this->getMockBuilder('Facebook')
|
||||
$facebook = $this->getMockBuilder('Facebook\Facebook')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(['getLoginUrl', 'api', 'getUser'])
|
||||
->setMethods(['getRedirectLoginHelper', 'get', 'getOAuth2Client'])
|
||||
->getMock();
|
||||
|
||||
$facebook->expects($this->any())
|
||||
->method('getLoginUrl')
|
||||
->will($this->returnValue('http://www.facebook.com/'));
|
||||
$helper = $this->getFacebookRedirectLoginHelperMock($ValidAccessToken);
|
||||
|
||||
$facebook->expects($this->any())
|
||||
->method('api')
|
||||
->will($this->returnCallback(function () use ($facebook) {
|
||||
if (!$facebook->getUser()) {
|
||||
throw new \FacebookApiException([
|
||||
'error_msg' => 'Not authenticated'
|
||||
]);
|
||||
}
|
||||
}));
|
||||
->method('getRedirectLoginHelper')
|
||||
->will($this->returnValue($helper));
|
||||
|
||||
$OAuth2Client = $this->getOAuth2ClientMock();
|
||||
|
||||
$facebook->expects($this->any())
|
||||
->method('getOAuth2Client')
|
||||
->will($this->returnValue($OAuth2Client));
|
||||
|
||||
if ($ValidAccessToken)
|
||||
{
|
||||
$FacebookResponse = $this->getFacebookResponseMock();
|
||||
|
||||
$facebook->expects($this->any())
|
||||
->method('get')
|
||||
->will($this->returnValue($FacebookResponse));
|
||||
}
|
||||
|
||||
return $facebook;
|
||||
}
|
||||
|
||||
private function getAccessTokenMock($valid = true)
|
||||
{
|
||||
$expiresAt = (time() + 3600);
|
||||
return ($valid)? new AccessToken(self::TOKEN, $expiresAt) : null;
|
||||
}
|
||||
|
||||
private function getFacebookRedirectLoginHelperMock($ValidAccessToken = true)
|
||||
{
|
||||
$accessToken = $this->getAccessTokenMock($ValidAccessToken);
|
||||
|
||||
$helper = $this->getMockBuilder('Facebook\Helpers\FacebookRedirectLoginHelper')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(['getLoginUrl', 'getAccessToken', 'getError'])
|
||||
->getMock();
|
||||
|
||||
$helper->expects($this->any())
|
||||
->method('getLoginUrl')
|
||||
->will($this->returnValue('http://www.facebook.com/'));
|
||||
|
||||
$helper->expects($this->any())
|
||||
->method('getAccessToken')
|
||||
->will($this->returnValue($accessToken));
|
||||
|
||||
$helper->expects($this->any())
|
||||
->method('getError')
|
||||
->will($this->returnValue(null));
|
||||
|
||||
return $helper;
|
||||
}
|
||||
|
||||
private function getOAuth2ClientMock()
|
||||
{
|
||||
$OAuth2Client = $this->getMockBuilder('Facebook\Authentication\OAuth2Client')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(['getLongLivedAccessToken'])
|
||||
->getMock();
|
||||
|
||||
$OAuth2Client->expects($this->any())
|
||||
->method('getLongLivedAccessToken')
|
||||
->will($this->returnValue(self::TOKEN));
|
||||
|
||||
return $OAuth2Client;
|
||||
}
|
||||
|
||||
private function getFacebookResponseMock()
|
||||
{
|
||||
$FacebookResponse = $this->getMockBuilder('Facebook\FacebookResponse')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(['getGraphUser'])
|
||||
->getMock();
|
||||
|
||||
$FacebookResponse->expects($this->any())
|
||||
->method('getGraphUser')
|
||||
->will($this->returnValue([
|
||||
'id' => self::ID,
|
||||
'name' => self::FIRSTNAME,
|
||||
'first_name' => self::FIRSTNAME,
|
||||
'last_name' => self::LASTNAME,
|
||||
'email' => self::EMAIL,
|
||||
'picture' => self::IMAGEURL
|
||||
]));
|
||||
|
||||
return $FacebookResponse;
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user