diff options
author | emkael <emkael@tlen.pl> | 2016-12-27 14:44:39 +0100 |
---|---|---|
committer | emkael <emkael@tlen.pl> | 2016-12-27 14:44:39 +0100 |
commit | 59bd9d51cc705dd44bdce753a56cc6ae914b02ce (patch) | |
tree | d61f42dccd15b1b630204c1575b4dedc1c98e9cf /lib/codebird-php/test/requestparse_tests.php | |
parent | b76bf844db1f196e3fa709461fcb4706839744e5 (diff) |
* directory structure
Diffstat (limited to 'lib/codebird-php/test/requestparse_tests.php')
-rw-r--r-- | lib/codebird-php/test/requestparse_tests.php | 212 |
1 files changed, 212 insertions, 0 deletions
diff --git a/lib/codebird-php/test/requestparse_tests.php b/lib/codebird-php/test/requestparse_tests.php new file mode 100644 index 0000000..279fdda --- /dev/null +++ b/lib/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¶m2=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); + } +} |