diff options
Diffstat (limited to 'lib/facebook-graph-sdk/tests/Http')
3 files changed, 257 insertions, 0 deletions
diff --git a/lib/facebook-graph-sdk/tests/Http/GraphRawResponseTest.php b/lib/facebook-graph-sdk/tests/Http/GraphRawResponseTest.php new file mode 100644 index 0000000..ecad26f --- /dev/null +++ b/lib/facebook-graph-sdk/tests/Http/GraphRawResponseTest.php @@ -0,0 +1,82 @@ +<?php +/** + * Copyright 2014 Facebook, Inc. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to + * use, copy, modify, and distribute this software in source code or binary + * form for use in connection with the web services and APIs provided by + * Facebook. + * + * As with any software that integrates with the Facebook platform, your use + * of this software is subject to the Facebook Developer Principles and + * Policies [http://developers.facebook.com/policy/]. This copyright notice + * shall be included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ +namespace Facebook\Tests\Http; + +use Facebook\Http\GraphRawResponse; + +class GraphRawResponseTest extends \PHPUnit_Framework_TestCase +{ + + protected $fakeRawProxyHeader = "HTTP/1.0 200 Connection established +Proxy-agent: Kerio Control/7.1.1 build 1971\r\n\r\n"; + protected $fakeRawHeader = <<<HEADER +HTTP/1.1 200 OK +Etag: "9d86b21aa74d74e574bbb35ba13524a52deb96e3" +Content-Type: text/javascript; charset=UTF-8 +X-FB-Rev: 9244768 +Date: Mon, 19 May 2014 18:37:17 GMT +X-FB-Debug: 02QQiffE7JG2rV6i/Agzd0gI2/OOQ2lk5UW0= +Access-Control-Allow-Origin: *\r\n\r\n +HEADER; + protected $fakeHeadersAsArray = [ + 'Etag' => '"9d86b21aa74d74e574bbb35ba13524a52deb96e3"', + 'Content-Type' => 'text/javascript; charset=UTF-8', + 'X-FB-Rev' => '9244768', + 'Date' => 'Mon, 19 May 2014 18:37:17 GMT', + 'X-FB-Debug' => '02QQiffE7JG2rV6i/Agzd0gI2/OOQ2lk5UW0=', + 'Access-Control-Allow-Origin' => '*', + ]; + + public function testCanSetTheHeadersFromAnArray() + { + $myHeaders = [ + 'foo' => 'bar', + 'baz' => 'faz', + ]; + $response = new GraphRawResponse($myHeaders, ''); + $headers = $response->getHeaders(); + + $this->assertEquals($myHeaders, $headers); + } + + public function testCanSetTheHeadersFromAString() + { + $response = new GraphRawResponse($this->fakeRawHeader, ''); + $headers = $response->getHeaders(); + $httpResponseCode = $response->getHttpResponseCode(); + + $this->assertEquals($this->fakeHeadersAsArray, $headers); + $this->assertEquals(200, $httpResponseCode); + } + + public function testWillIgnoreProxyHeaders() + { + $response = new GraphRawResponse($this->fakeRawProxyHeader . $this->fakeRawHeader, ''); + $headers = $response->getHeaders(); + $httpResponseCode = $response->getHttpResponseCode(); + + $this->assertEquals($this->fakeHeadersAsArray, $headers); + $this->assertEquals(200, $httpResponseCode); + } +} diff --git a/lib/facebook-graph-sdk/tests/Http/RequestBodyMultipartTest.php b/lib/facebook-graph-sdk/tests/Http/RequestBodyMultipartTest.php new file mode 100644 index 0000000..267cc49 --- /dev/null +++ b/lib/facebook-graph-sdk/tests/Http/RequestBodyMultipartTest.php @@ -0,0 +1,111 @@ +<?php +/** + * Copyright 2014 Facebook, Inc. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to + * use, copy, modify, and distribute this software in source code or binary + * form for use in connection with the web services and APIs provided by + * Facebook. + * + * As with any software that integrates with the Facebook platform, your use + * of this software is subject to the Facebook Developer Principles and + * Policies [http://developers.facebook.com/policy/]. This copyright notice + * shall be included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ +namespace Facebook\Tests\Http; + +use Facebook\Http\RequestBodyMultipart; +use Facebook\FileUpload\FacebookFile; + +class RequestBodyMultipartTest extends \PHPUnit_Framework_TestCase +{ + public function testCanProperlyEncodeAnArrayOfParams() + { + $message = new RequestBodyMultipart([ + 'foo' => 'bar', + 'scawy_vawues' => '@FooBar is a real twitter handle.', + ], [], 'foo_boundary'); + $body = $message->getBody(); + + $expectedBody = "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"foo\"\r\n\r\nbar\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"scawy_vawues\"\r\n\r\n@FooBar is a real twitter handle.\r\n"; + $expectedBody .= "--foo_boundary--\r\n"; + + $this->assertEquals($expectedBody, $body); + } + + public function testCanProperlyEncodeFilesAndParams() + { + $file = new FacebookFile(__DIR__ . '/../foo.txt'); + $message = new RequestBodyMultipart([ + 'foo' => 'bar', + ], [ + 'foo_file' => $file, + ], 'foo_boundary'); + $body = $message->getBody(); + + $expectedBody = "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"foo\"\r\n\r\nbar\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"foo_file\"; filename=\"foo.txt\"\r\n"; + $expectedBody .= "Content-Type: text/plain\r\n\r\nThis is a text file used for testing. Let's dance.\r\n"; + $expectedBody .= "--foo_boundary--\r\n"; + + $this->assertEquals($expectedBody, $body); + } + + public function testSupportsMultidimensionalParams() + { + $message = new RequestBodyMultipart([ + 'foo' => 'bar', + 'faz' => [1,2,3], + 'targeting' => [ + 'countries' => 'US,GB', + 'age_min' => 13, + ], + 'call_to_action' => [ + 'type' => 'LEARN_MORE', + 'value' => [ + 'link' => 'http://example.com', + 'sponsorship' => [ + 'image' => 'http://example.com/bar.jpg', + ], + ], + ], + ], [], 'foo_boundary'); + $body = $message->getBody(); + + $expectedBody = "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"foo\"\r\n\r\nbar\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"faz[0]\"\r\n\r\n1\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"faz[1]\"\r\n\r\n2\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"faz[2]\"\r\n\r\n3\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"targeting[countries]\"\r\n\r\nUS,GB\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"targeting[age_min]\"\r\n\r\n13\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"call_to_action[type]\"\r\n\r\nLEARN_MORE\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"call_to_action[value][link]\"\r\n\r\nhttp://example.com\r\n"; + $expectedBody .= "--foo_boundary\r\n"; + $expectedBody .= "Content-Disposition: form-data; name=\"call_to_action[value][sponsorship][image]\"\r\n\r\nhttp://example.com/bar.jpg\r\n"; + $expectedBody .= "--foo_boundary--\r\n"; + + $this->assertEquals($expectedBody, $body); + } +} diff --git a/lib/facebook-graph-sdk/tests/Http/RequestUrlEncodedTest.php b/lib/facebook-graph-sdk/tests/Http/RequestUrlEncodedTest.php new file mode 100644 index 0000000..3e22912 --- /dev/null +++ b/lib/facebook-graph-sdk/tests/Http/RequestUrlEncodedTest.php @@ -0,0 +1,64 @@ +<?php +/** + * Copyright 2014 Facebook, Inc. + * + * You are hereby granted a non-exclusive, worldwide, royalty-free license to + * use, copy, modify, and distribute this software in source code or binary + * form for use in connection with the web services and APIs provided by + * Facebook. + * + * As with any software that integrates with the Facebook platform, your use + * of this software is subject to the Facebook Developer Principles and + * Policies [http://developers.facebook.com/policy/]. This copyright notice + * shall be included in all copies or substantial portions of the software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + */ +namespace Facebook\Tests\Http; + +use Facebook\Http\RequestBodyUrlEncoded; + +class RequestUrlEncodedTest extends \PHPUnit_Framework_TestCase +{ + public function testCanProperlyEncodeAnArrayOfParams() + { + $message = new RequestBodyUrlEncoded([ + 'foo' => 'bar', + 'scawy_vawues' => '@FooBar is a real twitter handle.', + ]); + $body = $message->getBody(); + + $this->assertEquals('foo=bar&scawy_vawues=%40FooBar+is+a+real+twitter+handle.', $body); + } + + public function testSupportsMultidimensionalParams() + { + $message = new RequestBodyUrlEncoded([ + 'foo' => 'bar', + 'faz' => [1,2,3], + 'targeting' => [ + 'countries' => 'US,GB', + 'age_min' => 13, + ], + 'call_to_action' => [ + 'type' => 'LEARN_MORE', + 'value' => [ + 'link' => 'http://example.com', + 'sponsorship' => [ + 'image' => 'http://example.com/bar.jpg', + ], + ], + ], + ]); + $body = $message->getBody(); + + $this->assertEquals('foo=bar&faz%5B0%5D=1&faz%5B1%5D=2&faz%5B2%5D=3&targeting%5Bcountries%5D=US%2CGB&targeting%5Bage_min%5D=13&call_to_action%5Btype%5D=LEARN_MORE&call_to_action%5Bvalue%5D%5Blink%5D=http%3A%2F%2Fexample.com&call_to_action%5Bvalue%5D%5Bsponsorship%5D%5Bimage%5D=http%3A%2F%2Fexample.com%2Fbar.jpg', $body); + } +} |