summaryrefslogtreecommitdiff
path: root/lib/facebook-graph-sdk/tests/Http
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2017-01-16 22:04:43 +0100
committeremkael <emkael@tlen.pl>2017-01-16 22:50:24 +0100
commit677953067f2bb5502a70f0d004f1ac844b18a128 (patch)
tree003c26454b543c2a8d73f0602446482fdbbef8db /lib/facebook-graph-sdk/tests/Http
parentf7b2bfae9778af2c99e0c7fe7b2634e0f4f0973f (diff)
* Facebook support
Diffstat (limited to 'lib/facebook-graph-sdk/tests/Http')
-rw-r--r--lib/facebook-graph-sdk/tests/Http/GraphRawResponseTest.php82
-rw-r--r--lib/facebook-graph-sdk/tests/Http/RequestBodyMultipartTest.php111
-rw-r--r--lib/facebook-graph-sdk/tests/Http/RequestUrlEncodedTest.php64
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);
+ }
+}