summaryrefslogtreecommitdiff
path: root/http/codebird-php/test/requestparse_tests.php
diff options
context:
space:
mode:
Diffstat (limited to 'http/codebird-php/test/requestparse_tests.php')
-rw-r--r--http/codebird-php/test/requestparse_tests.php212
1 files changed, 212 insertions, 0 deletions
diff --git a/http/codebird-php/test/requestparse_tests.php b/http/codebird-php/test/requestparse_tests.php
new file mode 100644
index 0000000..279fdda
--- /dev/null
+++ b/http/codebird-php/test/requestparse_tests.php
@@ -0,0 +1,212 @@
+<?php
+
+namespace Codebird;
+require_once ('test/codebirdm.php');
+
+/**
+ * A Twitter library in PHP.
+ *
+ * @package codebird-test
+ * @author Jublo Solutions <support@jublo.net>
+ * @copyright 2010-2016 Jublo Solutions <support@jublo.net>
+ * @license https://opensource.org/licenses/GPL-3.0 GNU General Public License 3.0
+ * @link https://github.com/jublonet/codebird-php
+ */
+
+/**
+ * Request parsing tests
+ *
+ * @package codebird-test
+ */
+class Requestparse_Test extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * Initialise Codebird class
+ *
+ * @return \Codebird\Codebird The Codebird class
+ */
+ protected function getCB()
+ {
+ Codebird::setConsumerKey('123', '456');
+ $cb = new CodebirdM();
+ $cb->setToken('234', '567');
+
+ return $cb;
+ }
+
+ /**
+ * Tests _parseApiParams
+ */
+ public function testParseApiParams()
+ {
+ $cb = $this->getCB();
+ // empty list
+ $this->assertEquals([], $cb->call('_parseApiParams', [[]]));
+ // arrays
+ $this->assertEquals(['test' => 1], $cb->call('_parseApiParams', [[['test' => 1]]]));
+ $this->assertEquals(
+ ['media[]' => '123'],
+ $cb->call('_parseApiParams', [[['media[]' => 123]]])
+ );
+ // urlencoded strings
+ $this->assertEquals(['testdata' => ''], $cb->call('_parseApiParams', [['testdata']]));
+ $this->assertEquals(
+ ['param1' => '12', 'param2' => 'ab'],
+ $cb->call('_parseApiParams', [['param1=12&param2=ab']])
+ );
+ $this->assertEquals(
+ ['media' => ['123', '456']],
+ $cb->call('_parseApiParams', [['media[]=123&media[]=456']])
+ );
+ }
+
+ /**
+ * Tests _stringifyNullBoolParams
+ */
+ public function testStringifyNullBoolParams()
+ {
+ $cb = $this->getCB();
+ $result = $cb->call(
+ '_stringifyNullBoolParams',
+ [['a' => 123, 'b' => null, 'c' => true, 'd' => false, 'e' => 'x']]
+ );
+ $this->assertEquals('123', $result['a']);
+ $this->assertNull($result['b']);
+ $this->assertEquals('true', $result['c']);
+ $this->assertEquals('false', $result['d']);
+ }
+
+ /**
+ * Tests _mapFnToApiMethod
+ */
+ public function testMapFnToApiMethod()
+ {
+ $cb = $this->getCB();
+ $apiparams = [
+ 'test' => 1,
+ 'account_id' => '1234'
+ ];
+ $result = $cb->call(
+ '_mapFnToApiMethod',
+ 'ads_accounts_ACCOUNT_ID_cards_appDownload',
+ $apiparams
+ );
+ $this->assertEquals([
+ 'ads/accounts/1234/cards/app_download',
+ 'ads/accounts/:account_id/cards/app_download'
+ ], $result);
+ // check that inline parameter was removed from array
+ $this->assertArrayNotHasKey('account_id', $apiparams);
+ }
+
+ /**
+ * Tests _mapFnInsertSlashes
+ */
+ public function testMapFnInsertSlashes()
+ {
+ $cb = $this->getCB();
+ $result = $cb->call(
+ '_mapFnInsertSlashes',
+ ['ads_accounts_ACCOUNT_ID_cards_appDownload']
+ );
+ $this->assertEquals(
+ 'ads/accounts/ACCOUNT/ID/cards/appDownload',
+ $result
+ );
+ }
+
+ /**
+ * Tests _mapFnRestoreParamUnderscores
+ */
+ public function testMapFnRestoreParamUnderscores()
+ {
+ $cb = $this->getCB();
+ $params_underscore = [
+ 'screen_name', 'place_id',
+ 'account_id', 'campaign_id', 'card_id', 'line_item_id',
+ 'tweet_id', 'web_event_tag_id'
+ ];
+ $params_slash = [];
+ foreach ($params_underscore as $param) {
+ $params_slash[] = str_replace('_', '/', $param);
+ }
+ for ($i = 0; $i < count($params_underscore); $i++) {
+ $result = $cb->call(
+ '_mapFnRestoreParamUnderscores',
+ ['ads/accounts/' . strtoupper($params_slash[$i]) . '/cards/appDownload']
+ );
+ $this->assertEquals(
+ 'ads/accounts/' . strtoupper($params_underscore[$i]) . '/cards/appDownload',
+ $result
+ );
+ }
+ }
+
+ /**
+ * Tests _mapFnInlineParams
+ */
+ public function testMapFnInlineParams()
+ {
+ $cb = $this->getCB();
+ // normal parameters
+ $apiparams = [
+ 'test' => 1,
+ 'account_id' => '1234'
+ ];
+ $result = $cb->call(
+ '_mapFnInlineParams',
+ 'ads/accounts/ACCOUNT_ID/cards/app_download',
+ $apiparams
+ );
+ $this->assertEquals([
+ 'ads/accounts/1234/cards/app_download',
+ 'ads/accounts/:account_id/cards/app_download'
+ ],
+ $result
+ );
+ // check that inline parameter was removed from array
+ $this->assertArrayNotHasKey('account_id', $apiparams);
+
+ // special parameters (TON API)
+ $apiparams = [
+ 'test' => 1,
+ 'bucket' => 'ta_partner',
+ 'file' => 'test_Ab.mp4',
+ 'resumeId' => '56789'
+ ];
+ $result = $cb->call(
+ '_mapFnInlineParams',
+ 'ton/bucket/BUCKET/FILE?resumable=true&resumeId=RESUMEID',
+ $apiparams
+ );
+ $this->assertEquals([
+ 'ton/bucket/ta_partner/test_Ab.mp4?resumable=true&resumeId=56789',
+ 'ton/bucket/:bucket/:file?resumable=true&resumeId=:resumeId'
+ ],
+ $result
+ );
+ $this->assertArrayNotHasKey('bucket', $apiparams);
+ $this->assertArrayNotHasKey('file', $apiparams);
+ $this->assertArrayNotHasKey('resumeId', $apiparams);
+ $this->assertEquals(['test' => 1], $apiparams);
+ }
+
+ /**
+ * Tests _json_decode
+ */
+ public function testJsonDecode()
+ {
+ $json = '{"id": 123456789123456789, "id_str": "123456789123456789"}';
+ $array = [
+ 'id' => 123456789123456789,
+ 'id_str' => '123456789123456789'
+ ];
+ $object = (object) $array;
+
+ $cb = $this->getCB();
+ $result = $cb->call('_json_decode', [$json]);
+ $this->assertEquals($object, $result);
+ $result = $cb->call('_json_decode', [$json, true]);
+ $this->assertEquals($array, $result);
+ }
+}