213 lines
5.5 KiB
PHP
213 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace Codebird;
|
|
require_once ('test/codebirdm.php');
|
|
|
|
/**
|
|
* A Twitter library in PHP.
|
|
*
|
|
* @package codebird-test
|
|
* @author Jublo Limited <support@jublo.net>
|
|
* @copyright 2010-2018 Jublo Limited <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);
|
|
}
|
|
}
|