diff --git a/src/Facebook/Authentication/OAuth2Client.php b/src/Facebook/Authentication/OAuth2Client.php index 5016465c6..455c451ba 100644 --- a/src/Facebook/Authentication/OAuth2Client.php +++ b/src/Facebook/Authentication/OAuth2Client.php @@ -74,13 +74,13 @@ class OAuth2Client /** * @param FacebookApp $app * @param FacebookClient $client - * @param string|null $graphVersion The version of the Graph API to use. + * @param string $graphVersion The version of the Graph API to use. */ - public function __construct(FacebookApp $app, FacebookClient $client, $graphVersion = null) + public function __construct(FacebookApp $app, FacebookClient $client, $graphVersion) { $this->app = $app; $this->client = $client; - $this->graphVersion = $graphVersion ?: Facebook::DEFAULT_GRAPH_VERSION; + $this->graphVersion = $graphVersion; } /** diff --git a/src/Facebook/Facebook.php b/src/Facebook/Facebook.php index 7e40c52f9..7ac784cd5 100644 --- a/src/Facebook/Facebook.php +++ b/src/Facebook/Facebook.php @@ -53,11 +53,6 @@ class Facebook */ const VERSION = '6.0-dev'; - /** - * @const string Default Graph API version for requests. - */ - const DEFAULT_GRAPH_VERSION = 'v2.7'; - /** * @const string The name of the environment variable that contains the app ID. */ @@ -120,7 +115,7 @@ public function __construct(array $config = []) $config = array_merge([ 'app_id' => getenv(static::APP_ID_ENV_NAME), 'app_secret' => getenv(static::APP_SECRET_ENV_NAME), - 'default_graph_version' => static::DEFAULT_GRAPH_VERSION, + 'default_graph_version' => null, 'enable_beta_mode' => false, 'http_client_handler' => null, 'persistent_data_handler' => null, @@ -133,6 +128,9 @@ public function __construct(array $config = []) if (!$config['app_secret']) { throw new FacebookSDKException('Required "app_secret" key not supplied in config and could not find fallback environment variable "' . static::APP_SECRET_ENV_NAME . '"'); } + if (!$config['default_graph_version']) { + throw new \InvalidArgumentException('Required "default_graph_version" key not supplied in config'); + } $this->app = new FacebookApp($config['app_id'], $config['app_secret']); $this->client = new FacebookClient( @@ -148,7 +146,6 @@ public function __construct(array $config = []) $this->setDefaultAccessToken($config['default_access_token']); } - // @todo v6: Throw an InvalidArgumentException if "default_graph_version" is not set $this->defaultGraphVersion = $config['default_graph_version']; } diff --git a/src/Facebook/FacebookRequest.php b/src/Facebook/FacebookRequest.php index 2edd103a9..a03127442 100644 --- a/src/Facebook/FacebookRequest.php +++ b/src/Facebook/FacebookRequest.php @@ -102,7 +102,7 @@ public function __construct(FacebookApp $app = null, $accessToken = null, $metho $this->setEndpoint($endpoint); $this->setParams($params); $this->setETag($eTag); - $this->graphVersion = $graphVersion ?: Facebook::DEFAULT_GRAPH_VERSION; + $this->graphVersion = $graphVersion; } /** @@ -490,7 +490,7 @@ public function getPostParams() /** * The graph version used for this request. * - * @return string + * @return string|null */ public function getGraphVersion() { diff --git a/src/Facebook/Helpers/FacebookPageTabHelper.php b/src/Facebook/Helpers/FacebookPageTabHelper.php index 8e7be7b20..9b419644d 100644 --- a/src/Facebook/Helpers/FacebookPageTabHelper.php +++ b/src/Facebook/Helpers/FacebookPageTabHelper.php @@ -43,9 +43,9 @@ class FacebookPageTabHelper extends FacebookCanvasHelper * * @param FacebookApp $app The FacebookApp entity. * @param FacebookClient $client The client to make HTTP requests. - * @param string|null $graphVersion The version of Graph to use. + * @param string $graphVersion The version of Graph to use. */ - public function __construct(FacebookApp $app, FacebookClient $client, $graphVersion = null) + public function __construct(FacebookApp $app, FacebookClient $client, $graphVersion) { parent::__construct($app, $client, $graphVersion); diff --git a/src/Facebook/Helpers/FacebookSignedRequestFromInputHelper.php b/src/Facebook/Helpers/FacebookSignedRequestFromInputHelper.php index a0cff3dd8..5d213795f 100644 --- a/src/Facebook/Helpers/FacebookSignedRequestFromInputHelper.php +++ b/src/Facebook/Helpers/FacebookSignedRequestFromInputHelper.php @@ -57,12 +57,11 @@ abstract class FacebookSignedRequestFromInputHelper * * @param FacebookApp $app The FacebookApp entity. * @param FacebookClient $client The client to make HTTP requests. - * @param string|null $graphVersion The version of Graph to use. + * @param string $graphVersion The version of Graph to use. */ - public function __construct(FacebookApp $app, FacebookClient $client, $graphVersion = null) + public function __construct(FacebookApp $app, FacebookClient $client, $graphVersion) { $this->app = $app; - $graphVersion = $graphVersion ?: Facebook::DEFAULT_GRAPH_VERSION; $this->oAuth2Client = new OAuth2Client($this->app, $client, $graphVersion); $this->instantiateSignedRequest(); diff --git a/src/Facebook/Url/FacebookUrlManipulator.php b/src/Facebook/Url/FacebookUrlManipulator.php index 870071091..065dd94d1 100644 --- a/src/Facebook/Url/FacebookUrlManipulator.php +++ b/src/Facebook/Url/FacebookUrlManipulator.php @@ -142,12 +142,12 @@ public static function mergeUrlParams($urlToStealFrom, $urlToAddTo) * * @param string|null $string * - * @return string|null + * @return string */ public static function forceSlashPrefix($string) { if (!$string) { - return $string; + return ''; } return strpos($string, '/') === 0 ? $string : '/' . $string; diff --git a/tests/FacebookBatchRequestTest.php b/tests/FacebookBatchRequestTest.php index 4d41a6f4d..d2079722a 100755 --- a/tests/FacebookBatchRequestTest.php +++ b/tests/FacebookBatchRequestTest.php @@ -23,7 +23,6 @@ */ namespace Facebook\Tests; -use Facebook\Facebook; use Facebook\FacebookApp; use Facebook\FacebookRequest; use Facebook\FacebookBatchRequest; @@ -216,7 +215,6 @@ public function testBatchRequestEntitiesProperlyGetConvertedToAnArray($request, public function requestsAndExpectedResponsesProvider() { $headers = $this->defaultHeaders(); - $apiVersion = Facebook::DEFAULT_GRAPH_VERSION; return [ [ @@ -224,7 +222,7 @@ public function requestsAndExpectedResponsesProvider() [ 'headers' => $headers, 'method' => 'GET', - 'relative_url' => '/' . $apiVersion . '/foo?foo=bar&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9', + 'relative_url' => '/foo?foo=bar&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9', 'name' => 'foo_name', ], ], @@ -233,7 +231,7 @@ public function requestsAndExpectedResponsesProvider() [ 'headers' => $headers, 'method' => 'POST', - 'relative_url' => '/' . $apiVersion . '/bar', + 'relative_url' => '/bar', 'body' => 'bar=baz&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9', 'name' => 'foo_name', ], @@ -243,7 +241,7 @@ public function requestsAndExpectedResponsesProvider() [ 'headers' => $headers, 'method' => 'DELETE', - 'relative_url' => '/' . $apiVersion . '/bar?access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9', + 'relative_url' => '/bar?access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9', 'name' => 'foo_name', ], ], @@ -273,7 +271,7 @@ public function testBatchRequestsWithFilesGetConvertedToAnArray() $this->assertEquals([ 'headers' => $this->defaultHeaders(), 'method' => 'POST', - 'relative_url' => '/' . Facebook::DEFAULT_GRAPH_VERSION . '/bar', + 'relative_url' => '/bar', 'body' => 'message=foobar&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9', 'name' => 'foo_name', 'attached_files' => $attachedFiles, @@ -290,10 +288,9 @@ public function testPreppingABatchRequestProperlySetsThePostParams() $params = $batchRequest->getParams(); $expectedHeaders = json_encode($this->defaultHeaders()); - $version = Facebook::DEFAULT_GRAPH_VERSION; $expectedBatchParams = [ - 'batch' => '[{"headers":' . $expectedHeaders . ',"method":"GET","relative_url":"\\/' . $version . '\\/foo?access_token=bar_token&appsecret_proof=2ceec40b7b9fd7d38fff1767b766bcc6b1f9feb378febac4612c156e6a8354bd","name":"foo_name"},' - . '{"headers":' . $expectedHeaders . ',"method":"POST","relative_url":"\\/' . $version . '\\/bar","body":"foo=bar&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9"}]', + 'batch' => '[{"headers":' . $expectedHeaders . ',"method":"GET","relative_url":"\\/foo?access_token=bar_token&appsecret_proof=2ceec40b7b9fd7d38fff1767b766bcc6b1f9feb378febac4612c156e6a8354bd","name":"foo_name"},' + . '{"headers":' . $expectedHeaders . ',"method":"POST","relative_url":"\\/bar","body":"foo=bar&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9"}]', 'include_headers' => true, 'access_token' => 'foo_token', 'appsecret_proof' => 'df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9', @@ -317,10 +314,9 @@ public function testPreppingABatchRequestProperlyMovesTheFiles() $attachedFiles = implode(',', array_keys($files)); $expectedHeaders = json_encode($this->defaultHeaders()); - $version = Facebook::DEFAULT_GRAPH_VERSION; $expectedBatchParams = [ - 'batch' => '[{"headers":' . $expectedHeaders . ',"method":"GET","relative_url":"\\/' . $version . '\\/foo?access_token=bar_token&appsecret_proof=2ceec40b7b9fd7d38fff1767b766bcc6b1f9feb378febac4612c156e6a8354bd","name":"foo_name"},' - . '{"headers":' . $expectedHeaders . ',"method":"POST","relative_url":"\\/' . $version . '\\/me\\/photos","body":"message=foobar&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9","attached_files":"' . $attachedFiles . '"}]', + 'batch' => '[{"headers":' . $expectedHeaders . ',"method":"GET","relative_url":"\\/foo?access_token=bar_token&appsecret_proof=2ceec40b7b9fd7d38fff1767b766bcc6b1f9feb378febac4612c156e6a8354bd","name":"foo_name"},' + . '{"headers":' . $expectedHeaders . ',"method":"POST","relative_url":"\\/me\\/photos","body":"message=foobar&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9","attached_files":"' . $attachedFiles . '"}]', 'include_headers' => true, 'access_token' => 'foo_token', 'appsecret_proof' => 'df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9', diff --git a/tests/FacebookClientTest.php b/tests/FacebookClientTest.php index b9903184c..cf5153c17 100644 --- a/tests/FacebookClientTest.php +++ b/tests/FacebookClientTest.php @@ -24,7 +24,6 @@ namespace Facebook\Tests; use Facebook\Exceptions\FacebookSDKException; -use Facebook\Facebook; use Facebook\FacebookApp; use Facebook\FacebookRequest; use Facebook\FacebookBatchRequest; @@ -165,7 +164,7 @@ public function testAFacebookBatchRequestWillProperlyBatchFiles() list($url, $method, $headers, $body) = $this->fbClient->prepareRequestMessage($fbBatchRequest); - $this->assertEquals(FacebookClient::BASE_GRAPH_VIDEO_URL . '/' . Facebook::DEFAULT_GRAPH_VERSION, $url); + $this->assertEquals(FacebookClient::BASE_GRAPH_VIDEO_URL, $url); $this->assertEquals('POST', $method); $this->assertContains('multipart/form-data; boundary=', $headers['Content-Type']); $this->assertContains('Content-Disposition: form-data; name="batch"', $body); diff --git a/tests/FacebookRequestTest.php b/tests/FacebookRequestTest.php index 6759e4da6..414b0f0f0 100755 --- a/tests/FacebookRequestTest.php +++ b/tests/FacebookRequestTest.php @@ -23,7 +23,6 @@ */ namespace Facebook\Tests; -use Facebook\Facebook; use Facebook\FacebookApp; use Facebook\FacebookRequest; use Facebook\FileUpload\FacebookFile; @@ -125,14 +124,14 @@ public function testAProperUrlWillBeGenerated() $getUrl = $getRequest->getUrl(); $expectedParams = 'foo=bar&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9'; - $expectedUrl = '/' . Facebook::DEFAULT_GRAPH_VERSION . '/foo?' . $expectedParams; + $expectedUrl = '/foo?' . $expectedParams; $this->assertEquals($expectedUrl, $getUrl); - $postRequest = new FacebookRequest($app, 'foo_token', 'POST', '/bar', ['foo' => 'bar']); + $postRequest = new FacebookRequest($app, 'foo_token', 'POST', '/bar', ['foo' => 'bar'], null, 'v0.0'); $postUrl = $postRequest->getUrl(); - $expectedUrl = '/' . Facebook::DEFAULT_GRAPH_VERSION . '/bar'; + $expectedUrl = '/v0.0/bar'; $this->assertEquals($expectedUrl, $postUrl); } @@ -156,7 +155,7 @@ public function testAuthenticationParamsAreStrippedAndReapplied() $url = $request->getUrl(); $expectedParams = 'bar=baz&access_token=foo_token&appsecret_proof=df4256903ba4e23636cc142117aa632133d75c642bd2a68955be1443bd14deb9'; - $expectedUrl = '/' . Facebook::DEFAULT_GRAPH_VERSION . '/foo?' . $expectedParams; + $expectedUrl = '/foo?' . $expectedParams; $this->assertEquals($expectedUrl, $url); $params = $request->getParams(); diff --git a/tests/FacebookTest.php b/tests/FacebookTest.php index 1ee717e66..ddab17ff5 100644 --- a/tests/FacebookTest.php +++ b/tests/FacebookTest.php @@ -29,7 +29,6 @@ use Facebook\Authentication\AccessToken; use Facebook\GraphNodes\GraphEdge; use Facebook\Tests\Fixtures\FakeGraphApiForResumableUpload; -use Facebook\Tests\Fixtures\FooBarPseudoRandomStringGenerator; use Facebook\Tests\Fixtures\FooClientInterface; use Facebook\Tests\Fixtures\FooPersistentDataInterface; use Facebook\Tests\Fixtures\FooUrlDetectionInterface; @@ -39,6 +38,7 @@ class FacebookTest extends \PHPUnit_Framework_TestCase protected $config = [ 'app_id' => '1337', 'app_secret' => 'foo_secret', + 'default_graph_version' => 'v0.0', ]; /** @@ -50,6 +50,7 @@ public function testInstantiatingWithoutAppIdThrows() putenv(Facebook::APP_ID_ENV_NAME.'='); $config = [ 'app_secret' => 'foo_secret', + 'default_graph_version' => 'v0.0', ]; new Facebook($config); } @@ -63,6 +64,19 @@ public function testInstantiatingWithoutAppSecretThrows() putenv(Facebook::APP_SECRET_ENV_NAME.'='); $config = [ 'app_id' => 'foo_id', + 'default_graph_version' => 'v0.0', + ]; + new Facebook($config); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testInstantiatingWithoutDefaultGraphVersionThrows() + { + $config = [ + 'app_id' => 'foo_id', + 'app_secret' => 'foo_secret', ]; new Facebook($config); } diff --git a/tests/Helpers/FacebookCanvasHelperTest.php b/tests/Helpers/FacebookCanvasHelperTest.php index a7506dd57..2396aa915 100644 --- a/tests/Helpers/FacebookCanvasHelperTest.php +++ b/tests/Helpers/FacebookCanvasHelperTest.php @@ -25,6 +25,7 @@ use Facebook\FacebookApp; use Facebook\FacebookClient; +use Facebook\Tests\FacebookTest; use Facebook\Helpers\FacebookCanvasHelper; class FacebookCanvasHelperTest extends \PHPUnit_Framework_TestCase @@ -39,7 +40,7 @@ class FacebookCanvasHelperTest extends \PHPUnit_Framework_TestCase protected function setUp() { $app = new FacebookApp('123', 'foo_app_secret'); - $this->helper = new FacebookCanvasHelper($app, new FacebookClient()); + $this->helper = new FacebookCanvasHelper($app, new FacebookClient(), 'v0.0'); } public function testSignedRequestDataCanBeRetrievedFromPostData() diff --git a/tests/Helpers/FacebookJavaScriptHelperTest.php b/tests/Helpers/FacebookJavaScriptHelperTest.php index abef58ec1..28d594e7e 100644 --- a/tests/Helpers/FacebookJavaScriptHelperTest.php +++ b/tests/Helpers/FacebookJavaScriptHelperTest.php @@ -25,6 +25,7 @@ use Facebook\FacebookApp; use Facebook\FacebookClient; +use Facebook\Tests\FacebookTest; use Facebook\Helpers\FacebookJavaScriptHelper; class FacebookJavaScriptHelperTest extends \PHPUnit_Framework_TestCase @@ -36,7 +37,7 @@ public function testARawSignedRequestCanBeRetrievedFromCookieData() $_COOKIE['fbsr_123'] = $this->rawSignedRequestAuthorized; $app = new FacebookApp('123', 'foo_app_secret'); - $helper = new FacebookJavaScriptHelper($app, new FacebookClient()); + $helper = new FacebookJavaScriptHelper($app, new FacebookClient(), 'v0.0'); $rawSignedRequest = $helper->getRawSignedRequest(); diff --git a/tests/Helpers/FacebookPageTabHelperTest.php b/tests/Helpers/FacebookPageTabHelperTest.php index 29770342b..8ecd93bc1 100644 --- a/tests/Helpers/FacebookPageTabHelperTest.php +++ b/tests/Helpers/FacebookPageTabHelperTest.php @@ -25,6 +25,7 @@ use Facebook\FacebookApp; use Facebook\FacebookClient; +use Facebook\Tests\FacebookTest; use Facebook\Helpers\FacebookPageTabHelper; class FacebookPageTabHelperTest extends \PHPUnit_Framework_TestCase @@ -36,7 +37,7 @@ public function testPageDataCanBeAccessed() $_POST['signed_request'] = $this->rawSignedRequestAuthorized; $app = new FacebookApp('123', 'foo_app_secret'); - $helper = new FacebookPageTabHelper($app, new FacebookClient()); + $helper = new FacebookPageTabHelper($app, new FacebookClient(), 'v0.0'); $this->assertFalse($helper->isAdmin()); $this->assertEquals('42', $helper->getPageId()); diff --git a/tests/Helpers/FacebookSignedRequestFromInputHelperTest.php b/tests/Helpers/FacebookSignedRequestFromInputHelperTest.php index bfb3e0cf7..79cf182a8 100644 --- a/tests/Helpers/FacebookSignedRequestFromInputHelperTest.php +++ b/tests/Helpers/FacebookSignedRequestFromInputHelperTest.php @@ -24,6 +24,7 @@ namespace Facebook\Tests\Helpers; use Facebook\FacebookApp; +use Facebook\Tests\FacebookTest; use Facebook\Tests\Fixtures\FooSignedRequestHelper; use Facebook\Tests\Fixtures\FooSignedRequestHelperFacebookClient; @@ -41,7 +42,7 @@ class FacebookSignedRequestFromInputHelperTest extends \PHPUnit_Framework_TestCa protected function setUp() { $app = new FacebookApp('123', 'foo_app_secret'); - $this->helper = new FooSignedRequestHelper($app, new FooSignedRequestHelperFacebookClient()); + $this->helper = new FooSignedRequestHelper($app, new FooSignedRequestHelperFacebookClient(), 'v0.0'); } public function testSignedRequestDataCanBeRetrievedFromPostData()