2018-04-09 19:23:41 +00:00
< ? php
/**
* ApiTest class .
*/
2020-09-11 17:38:41 +00:00
namespace Friendica\Test\legacy ;
2018-04-09 19:23:41 +00:00
2019-02-05 21:03:07 +00:00
use Friendica\App ;
2020-01-19 20:29:36 +00:00
use Friendica\Core\Config\IConfig ;
2020-01-19 21:23:44 +00:00
use Friendica\Core\PConfig\IPConfig ;
2018-07-10 02:39:59 +00:00
use Friendica\Core\Protocol ;
2019-12-15 21:34:11 +00:00
use Friendica\DI ;
2018-04-09 19:23:41 +00:00
use Friendica\Network\HTTPException ;
2020-09-11 17:38:41 +00:00
use Friendica\Test\FixtureTest ;
2020-01-31 20:40:45 +00:00
use Friendica\Util\Temporal ;
2018-12-30 20:42:56 +00:00
use Monolog\Handler\TestHandler ;
2018-04-09 19:23:41 +00:00
2018-11-01 12:45:21 +00:00
require_once __DIR__ . '/../../include/api.php' ;
2018-10-22 18:59:51 +00:00
2018-04-09 19:23:41 +00:00
/**
* Tests for the API functions .
*
* Functions that use header () need to be tested in a separate process .
* @ see https :// phpunit . de / manual / 5.7 / en / appendixes . annotations . html #appendixes.annotations.runTestsInSeparateProcesses
2021-04-01 19:19:45 +00:00
*
* @ backupGlobals enabled
2018-04-09 19:23:41 +00:00
*/
2020-06-09 12:38:31 +00:00
class ApiTest extends FixtureTest
2018-04-09 19:23:41 +00:00
{
2018-12-30 20:42:56 +00:00
/**
* @ var TestHandler Can handle log - outputs
*/
protected $logOutput ;
2019-03-23 14:02:32 +00:00
/** @var array */
protected $selfUser ;
/** @var array */
protected $friendUser ;
/** @var array */
protected $otherUser ;
protected $wrongUserId ;
2019-07-26 13:54:14 +00:00
/** @var App */
protected $app ;
2020-01-19 20:29:36 +00:00
/** @var IConfig */
2019-08-04 16:50:24 +00:00
protected $config ;
2018-04-09 19:23:41 +00:00
/**
* Create variables used by tests .
*/
2021-04-01 21:04:30 +00:00
protected function setUp () : void
2018-04-09 19:23:41 +00:00
{
2020-09-11 18:14:47 +00:00
global $API , $called_api ;
$API = [];
$called_api = [];
2019-07-28 15:40:42 +00:00
parent :: setUp ();
2018-07-01 18:46:24 +00:00
2020-01-19 20:29:36 +00:00
/** @var IConfig $config */
$this -> config = $this -> dice -> create ( IConfig :: class );
2019-08-04 17:02:16 +00:00
$this -> config -> set ( 'system' , 'url' , 'http://localhost' );
$this -> config -> set ( 'system' , 'hostname' , 'localhost' );
$this -> config -> set ( 'system' , 'worker_dont_fork' , true );
// Default config
$this -> config -> set ( 'config' , 'hostname' , 'localhost' );
$this -> config -> set ( 'system' , 'throttle_limit_day' , 100 );
$this -> config -> set ( 'system' , 'throttle_limit_week' , 100 );
$this -> config -> set ( 'system' , 'throttle_limit_month' , 100 );
$this -> config -> set ( 'system' , 'theme' , 'system_theme' );
2019-07-28 15:40:42 +00:00
2019-08-04 17:02:16 +00:00
/** @var App app */
2019-12-15 21:34:11 +00:00
$this -> app = DI :: app ();
2019-07-27 12:37:24 +00:00
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgc ( 1 );
2019-07-26 13:54:14 +00:00
2018-04-09 19:23:41 +00:00
// User data that the test database is populated with
2019-07-28 15:40:42 +00:00
$this -> selfUser = [
'id' => 42 ,
2018-04-09 19:23:41 +00:00
'name' => 'Self contact' ,
'nick' => 'selfcontact' ,
2018-07-01 19:07:50 +00:00
'nurl' => 'http://localhost/profile/selfcontact'
2018-07-01 18:46:24 +00:00
];
$this -> friendUser = [
2019-07-28 15:40:42 +00:00
'id' => 44 ,
2018-07-01 18:46:24 +00:00
'name' => 'Friend contact' ,
'nick' => 'friendcontact' ,
2018-07-01 19:07:50 +00:00
'nurl' => 'http://localhost/profile/friendcontact'
2018-04-09 19:23:41 +00:00
];
2019-07-28 15:40:42 +00:00
$this -> otherUser = [
'id' => 43 ,
2018-04-09 19:23:41 +00:00
'name' => 'othercontact' ,
'nick' => 'othercontact' ,
2018-07-01 19:07:50 +00:00
'nurl' => 'http://localhost/profile/othercontact'
2018-04-09 19:23:41 +00:00
];
// User ID that we know is not in the database
$this -> wrongUserId = 666 ;
2019-12-16 00:35:26 +00:00
DI :: session () -> start ();
2019-12-10 21:29:49 +00:00
2018-04-09 19:23:41 +00:00
// Most API require login so we force the session
$_SESSION = [
2019-07-28 15:40:42 +00:00
'allow_api' => true ,
2018-04-09 19:23:41 +00:00
'authenticated' => true ,
2019-07-28 15:40:42 +00:00
'uid' => $this -> selfUser [ 'id' ]
2018-04-09 19:23:41 +00:00
];
}
/**
* Assert that an user array contains expected keys .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ param array $user User array
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
private function assertSelfUser ( array $user )
{
2020-10-17 12:19:57 +00:00
self :: assertEquals ( $this -> selfUser [ 'id' ], $user [ 'uid' ]);
self :: assertEquals ( $this -> selfUser [ 'id' ], $user [ 'cid' ]);
self :: assertEquals ( 1 , $user [ 'self' ]);
self :: assertEquals ( 'DFRN' , $user [ 'location' ]);
self :: assertEquals ( $this -> selfUser [ 'name' ], $user [ 'name' ]);
self :: assertEquals ( $this -> selfUser [ 'nick' ], $user [ 'screen_name' ]);
self :: assertEquals ( 'dfrn' , $user [ 'network' ]);
self :: assertTrue ( $user [ 'verified' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Assert that an user array contains expected keys .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ param array $user User array
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
2021-04-01 19:19:45 +00:00
private function assertOtherUser ( array $user = [])
2018-04-09 19:23:41 +00:00
{
2020-10-17 12:19:57 +00:00
self :: assertEquals ( $this -> otherUser [ 'id' ], $user [ 'id' ]);
self :: assertEquals ( $this -> otherUser [ 'id' ], $user [ 'id_str' ]);
self :: assertEquals ( 0 , $user [ 'self' ]);
self :: assertEquals ( $this -> otherUser [ 'name' ], $user [ 'name' ]);
self :: assertEquals ( $this -> otherUser [ 'nick' ], $user [ 'screen_name' ]);
self :: assertFalse ( $user [ 'verified' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Assert that a status array contains expected keys .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ param array $status Status array
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
2021-04-01 19:19:45 +00:00
private function assertStatus ( array $status = [])
2018-04-09 19:23:41 +00:00
{
2021-06-02 21:03:08 +00:00
self :: assertIsString ( $status [ 'text' ] ? ? '' );
self :: assertIsInt ( $status [ 'id' ] ? ? '' );
2018-04-09 19:23:41 +00:00
// We could probably do more checks here.
}
/**
* Assert that a list array contains expected keys .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ param array $list List array
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
2021-04-01 19:19:45 +00:00
private function assertList ( array $list = [])
2018-04-09 19:23:41 +00:00
{
2021-06-02 21:03:08 +00:00
self :: assertIsString ( $list [ 'name' ]);
self :: assertIsInt ( $list [ 'id' ]);
self :: assertIsString ( 'string' , $list [ 'id_str' ]);
2020-10-17 12:19:57 +00:00
self :: assertContains ( $list [ 'mode' ], [ 'public' , 'private' ]);
2018-04-09 19:23:41 +00:00
// We could probably do more checks here.
}
/**
* Assert that the string is XML and contain the root element .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ param string $result XML string
* @ param string $root_element Root element name
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
2021-04-01 19:19:45 +00:00
private function assertXml ( $result = '' , $root_element = '' )
2018-04-09 19:23:41 +00:00
{
2020-10-17 12:19:57 +00:00
self :: assertStringStartsWith ( '<?xml version="1.0"?>' , $result );
2021-05-23 21:16:33 +00:00
self :: assertStringContainsString ( '<' . $root_element , $result );
2018-04-09 19:23:41 +00:00
// We could probably do more checks here.
}
/**
* Get the path to a temporary empty PNG image .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return string Path
*/
private function getTempImage ()
{
$tmpFile = tempnam ( sys_get_temp_dir (), 'tmp_file' );
file_put_contents (
$tmpFile ,
base64_decode (
2019-07-28 15:40:42 +00:00
// Empty 1x1 px PNG image
2018-04-09 19:23:41 +00:00
'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg=='
)
);
return $tmpFile ;
}
/**
* Test the api_user () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUser ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals ( $this -> selfUser [ 'id' ], api_user ());
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_user () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUserWithUnallowedUser ()
{
$_SESSION = [ 'allow_api' => false ];
2020-10-17 12:19:57 +00:00
self :: assertEquals ( false , api_user ());
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_source () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSource ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'api' , api_source ());
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_source () function with a Twidere user agent .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSourceWithTwidere ()
{
$_SERVER [ 'HTTP_USER_AGENT' ] = 'Twidere' ;
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'Twidere' , api_source ());
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_source () function with a GET parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSourceWithGet ()
{
$_GET [ 'source' ] = 'source_name' ;
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'source_name' , api_source ());
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_date () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDate ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'Wed Oct 10 00:00:00 +0000 1990' , api_date ( '1990-10-10' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_register_func () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiRegisterFunc ()
{
global $API ;
2020-10-17 12:19:57 +00:00
self :: assertNull (
2018-04-09 19:23:41 +00:00
api_register_func (
'api_path' ,
function () {
},
true ,
'method'
)
);
2020-10-17 12:19:57 +00:00
self :: assertTrue ( $API [ 'api_path' ][ 'auth' ]);
self :: assertEquals ( 'method' , $API [ 'api_path' ][ 'method' ]);
self :: assertTrue ( is_callable ( $API [ 'api_path' ][ 'func' ]));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_login () function without any login .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 19:19:45 +00:00
* @ preserveGlobalState disabled
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiLoginWithoutLogin ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\UnauthorizedException :: class );
2018-04-09 19:23:41 +00:00
api_login ( $this -> app );
}
/**
* Test the api_login () function with a bad login .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 19:19:45 +00:00
* @ preserveGlobalState disabled
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiLoginWithBadLogin ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\UnauthorizedException :: class );
2018-04-09 19:23:41 +00:00
$_SERVER [ 'PHP_AUTH_USER' ] = 'user@server' ;
api_login ( $this -> app );
}
/**
* Test the api_login () function with oAuth .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiLoginWithOauth ()
{
$this -> markTestIncomplete ( 'Can we test this easily?' );
}
/**
* Test the api_login () function with authentication provided by an addon .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiLoginWithAddonAuth ()
{
$this -> markTestIncomplete ( 'Can we test this easily?' );
}
/**
* Test the api_login () function with a correct login .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2021-04-01 19:19:45 +00:00
* @ doesNotPerformAssertions
2018-04-09 19:23:41 +00:00
*/
public function testApiLoginWithCorrectLogin ()
{
$_SERVER [ 'PHP_AUTH_USER' ] = 'Test user' ;
2019-07-28 15:40:42 +00:00
$_SERVER [ 'PHP_AUTH_PW' ] = 'password' ;
2018-04-09 19:23:41 +00:00
api_login ( $this -> app );
}
/**
* Test the api_login () function with a remote user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiLoginWithRemoteUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\UnauthorizedException :: class );
2018-04-09 19:23:41 +00:00
$_SERVER [ 'REDIRECT_REMOTE_USER' ] = '123456dXNlcjpwYXNzd29yZA==' ;
api_login ( $this -> app );
}
/**
* Test the api_check_method () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiCheckMethod ()
{
2020-10-17 12:19:57 +00:00
self :: assertFalse ( api_check_method ( 'method' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_check_method () function with a correct method .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiCheckMethodWithCorrectMethod ()
{
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-10-17 12:19:57 +00:00
self :: assertTrue ( api_check_method ( 'method' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_check_method () function with a wildcard .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiCheckMethodWithWildcard ()
{
2020-10-17 12:19:57 +00:00
self :: assertTrue ( api_check_method ( '*' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_call () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCall ()
{
global $API ;
2019-07-28 15:40:42 +00:00
$API [ 'api_path' ] = [
2018-04-09 19:23:41 +00:00
'method' => 'method' ,
2019-07-28 15:40:42 +00:00
'func' => function () {
2018-04-09 19:23:41 +00:00
return [ 'data' => [ 'some_data' ]];
}
];
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path' ;
2019-07-28 15:40:42 +00:00
$_GET [ 'callback' ] = 'callback_name' ;
2018-04-09 19:23:41 +00:00
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
'callback_name(["some_data"])' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_call () function with the profiled enabled .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithProfiler ()
{
global $API ;
2019-07-28 15:40:42 +00:00
$API [ 'api_path' ] = [
2018-04-09 19:23:41 +00:00
'method' => 'method' ,
2019-07-28 15:40:42 +00:00
'func' => function () {
2018-04-09 19:23:41 +00:00
return [ 'data' => [ 'some_data' ]];
}
];
2019-12-16 00:35:26 +00:00
2018-04-09 19:23:41 +00:00
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path' ;
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2019-08-04 17:02:16 +00:00
$this -> config -> set ( 'system' , 'profiler' , true );
$this -> config -> set ( 'rendertime' , 'callstack' , true );
2018-04-09 19:23:41 +00:00
$this -> app -> callstack = [
2019-07-28 15:40:42 +00:00
'database' => [ 'some_function' => 200 ],
2018-04-09 19:23:41 +00:00
'database_write' => [ 'some_function' => 200 ],
2019-07-28 15:40:42 +00:00
'cache' => [ 'some_function' => 200 ],
'cache_write' => [ 'some_function' => 200 ],
'network' => [ 'some_function' => 200 ]
2018-04-09 19:23:41 +00:00
];
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
'["some_data"]' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_call () function without any result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithNoResult ()
{
global $API ;
2019-07-28 15:40:42 +00:00
$API [ 'api_path' ] = [
2018-04-09 19:23:41 +00:00
'method' => 'method' ,
2019-07-28 15:40:42 +00:00
'func' => function () {
2018-04-09 19:23:41 +00:00
return false ;
}
];
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path' ;
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2018-04-09 19:23:41 +00:00
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
'{"status":{"error":"Internal Server Error","code":"500 Internal Server Error","request":"api_path"}}' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_call () function with an unimplemented API .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithUninplementedApi ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2020-11-11 20:49:34 +00:00
'{"status":{"error":"Not Found","code":"404 Not Found","request":""}}' ,
2018-04-09 19:23:41 +00:00
api_call ( $this -> app )
);
}
/**
* Test the api_call () function with a JSON result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithJson ()
{
global $API ;
2019-07-28 15:40:42 +00:00
$API [ 'api_path' ] = [
2018-04-09 19:23:41 +00:00
'method' => 'method' ,
2019-07-28 15:40:42 +00:00
'func' => function () {
2018-04-09 19:23:41 +00:00
return [ 'data' => [ 'some_data' ]];
}
];
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path.json' ;
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2018-04-09 19:23:41 +00:00
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
'["some_data"]' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_call () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithXml ()
{
global $API ;
2019-07-28 15:40:42 +00:00
$API [ 'api_path' ] = [
2018-04-09 19:23:41 +00:00
'method' => 'method' ,
2019-07-28 15:40:42 +00:00
'func' => function () {
2018-04-09 19:23:41 +00:00
return 'some_data' ;
}
];
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path.xml' ;
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2018-04-09 19:23:41 +00:00
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
'some_data' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_call () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithRss ()
{
global $API ;
2019-07-28 15:40:42 +00:00
$API [ 'api_path' ] = [
2018-04-09 19:23:41 +00:00
'method' => 'method' ,
2019-07-28 15:40:42 +00:00
'func' => function () {
2018-04-09 19:23:41 +00:00
return 'some_data' ;
}
];
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path.rss' ;
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2018-04-09 19:23:41 +00:00
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-07-28 15:40:42 +00:00
'<?xml version="1.0" encoding="UTF-8"?>' . " \n " .
'some_data' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_call () function with an Atom result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithAtom ()
{
global $API ;
2019-07-28 15:40:42 +00:00
$API [ 'api_path' ] = [
2018-04-09 19:23:41 +00:00
'method' => 'method' ,
2019-07-28 15:40:42 +00:00
'func' => function () {
2018-04-09 19:23:41 +00:00
return 'some_data' ;
}
];
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path.atom' ;
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2018-04-09 19:23:41 +00:00
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-07-28 15:40:42 +00:00
'<?xml version="1.0" encoding="UTF-8"?>' . " \n " .
'some_data' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_call () function with an unallowed method .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithWrongMethod ()
{
global $API ;
$API [ 'api_path' ] = [ 'method' => 'method' ];
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path' ;
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
'{"status":{"error":"Method Not Allowed","code":"405 Method Not Allowed","request":"api_path"}}' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_call () function with an unauthorized user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiCallWithWrongAuth ()
{
global $API ;
2019-07-28 15:40:42 +00:00
$API [ 'api_path' ] = [
2018-04-09 19:23:41 +00:00
'method' => 'method' ,
2019-07-28 15:40:42 +00:00
'auth' => true
2018-04-09 19:23:41 +00:00
];
$_SESSION [ 'authenticated' ] = false ;
2019-12-16 00:35:26 +00:00
$_SERVER [ 'REQUEST_METHOD' ] = 'method' ;
2020-09-09 04:21:04 +00:00
$_SERVER [ 'QUERY_STRING' ] = 'pagename=api_path' ;
2019-12-16 00:35:26 +00:00
$args = DI :: args () -> determine ( $_SERVER , $_GET );
2018-04-09 19:23:41 +00:00
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
'{"status":{"error":"This API requires login","code":"401 Unauthorized","request":"api_path"}}' ,
2019-12-16 00:35:26 +00:00
api_call ( $this -> app , $args )
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_error () function with a JSON result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiErrorWithJson ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-05-02 03:20:25 +00:00
'{"status":{"error":"error_message","code":"200 OK","request":""}}' ,
2019-12-16 00:35:26 +00:00
api_error ( 'json' , new HTTPException\OKException ( 'error_message' ), DI :: args ())
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_error () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiErrorWithXml ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-07-28 15:40:42 +00:00
'<?xml version="1.0"?>' . " \n " .
'<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
'xmlns:georss="http://www.georss.org/georss">' . " \n " .
' <error>error_message</error>' . " \n " .
' <code>200 OK</code>' . " \n " .
' <request/>' . " \n " .
'</status>' . " \n " ,
2019-12-16 00:35:26 +00:00
api_error ( 'xml' , new HTTPException\OKException ( 'error_message' ), DI :: args ())
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_error () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiErrorWithRss ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-07-28 15:40:42 +00:00
'<?xml version="1.0"?>' . " \n " .
'<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
'xmlns:georss="http://www.georss.org/georss">' . " \n " .
' <error>error_message</error>' . " \n " .
' <code>200 OK</code>' . " \n " .
' <request/>' . " \n " .
'</status>' . " \n " ,
2019-12-16 00:35:26 +00:00
api_error ( 'rss' , new HTTPException\OKException ( 'error_message' ), DI :: args ())
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_error () function with an Atom result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiErrorWithAtom ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-07-28 15:40:42 +00:00
'<?xml version="1.0"?>' . " \n " .
'<status xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
'xmlns:georss="http://www.georss.org/georss">' . " \n " .
' <error>error_message</error>' . " \n " .
' <code>200 OK</code>' . " \n " .
' <request/>' . " \n " .
'</status>' . " \n " ,
2019-12-16 00:35:26 +00:00
api_error ( 'atom' , new HTTPException\OKException ( 'error_message' ), DI :: args ())
2018-04-09 19:23:41 +00:00
);
}
/**
* Test the api_rss_extra () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiRssExtra ()
{
2018-07-04 21:55:06 +00:00
$user_info = [ 'url' => 'user_url' , 'lang' => 'en' ];
2019-07-28 15:40:42 +00:00
$result = api_rss_extra ( $this -> app , [], $user_info );
2020-10-17 12:19:57 +00:00
self :: assertEquals ( $user_info , $result [ '$user' ]);
self :: assertEquals ( $user_info [ 'url' ], $result [ '$rss' ][ 'alternate' ]);
self :: assertArrayHasKey ( 'self' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'base' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'updated' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'atom_updated' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'language' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'logo' , $result [ '$rss' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_rss_extra () function without any user info .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiRssExtraWithoutUserInfo ()
{
$result = api_rss_extra ( $this -> app , [], null );
2021-06-02 21:03:08 +00:00
self :: assertIsArray ( $result [ '$user' ]);
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'alternate' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'self' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'base' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'updated' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'atom_updated' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'language' , $result [ '$rss' ]);
self :: assertArrayHasKey ( 'logo' , $result [ '$rss' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_unique_id_to_nurl () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUniqueIdToNurl ()
{
2020-10-17 12:19:57 +00:00
self :: assertFalse ( api_unique_id_to_nurl ( $this -> wrongUserId ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_unique_id_to_nurl () function with a correct ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUniqueIdToNurlWithCorrectId ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals ( $this -> otherUser [ 'nurl' ], api_unique_id_to_nurl ( $this -> otherUser [ 'id' ]));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUser ()
{
$user = api_get_user ( $this -> app );
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( $user );
self :: assertEquals ( '708fa0' , $user [ 'profile_sidebar_fill_color' ]);
self :: assertEquals ( '6fdbe8' , $user [ 'profile_link_color' ]);
self :: assertEquals ( 'ededed' , $user [ 'profile_background_color' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with a Frio schema .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithFrioSchema ()
{
2020-01-19 21:23:44 +00:00
$pConfig = $this -> dice -> create ( IPConfig :: class );
2019-08-04 16:50:24 +00:00
$pConfig -> set ( $this -> selfUser [ 'id' ], 'frio' , 'schema' , 'red' );
2018-04-09 19:23:41 +00:00
$user = api_get_user ( $this -> app );
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( $user );
self :: assertEquals ( '708fa0' , $user [ 'profile_sidebar_fill_color' ]);
self :: assertEquals ( '6fdbe8' , $user [ 'profile_link_color' ]);
self :: assertEquals ( 'ededed' , $user [ 'profile_background_color' ]);
2018-04-09 19:23:41 +00:00
}
/**
2020-06-09 12:38:31 +00:00
* Test the api_get_user () function with an empty Frio schema .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
2020-06-09 12:38:31 +00:00
public function testApiGetUserWithEmptyFrioSchema ()
2018-04-09 19:23:41 +00:00
{
2020-01-19 21:23:44 +00:00
$pConfig = $this -> dice -> create ( IPConfig :: class );
2019-08-04 16:50:24 +00:00
$pConfig -> set ( $this -> selfUser [ 'id' ], 'frio' , 'schema' , '---' );
2018-04-09 19:23:41 +00:00
$user = api_get_user ( $this -> app );
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( $user );
self :: assertEquals ( '708fa0' , $user [ 'profile_sidebar_fill_color' ]);
self :: assertEquals ( '6fdbe8' , $user [ 'profile_link_color' ]);
self :: assertEquals ( 'ededed' , $user [ 'profile_background_color' ]);
2018-04-09 19:23:41 +00:00
}
/**
2020-06-09 12:38:31 +00:00
* Test the api_get_user () function with a custom Frio schema .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
2020-06-09 12:38:31 +00:00
public function testApiGetUserWithCustomFrioSchema ()
2018-04-09 19:23:41 +00:00
{
2020-01-19 21:23:44 +00:00
$pConfig = $this -> dice -> create ( IPConfig :: class );
2019-08-04 16:50:24 +00:00
$pConfig -> set ( $this -> selfUser [ 'id' ], 'frio' , 'schema' , '---' );
2020-06-09 12:38:31 +00:00
$pConfig -> set ( $this -> selfUser [ 'id' ], 'frio' , 'nav_bg' , '#123456' );
$pConfig -> set ( $this -> selfUser [ 'id' ], 'frio' , 'link_color' , '#123456' );
$pConfig -> set ( $this -> selfUser [ 'id' ], 'frio' , 'background_color' , '#123456' );
2018-04-09 19:23:41 +00:00
$user = api_get_user ( $this -> app );
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( $user );
self :: assertEquals ( '123456' , $user [ 'profile_sidebar_fill_color' ]);
self :: assertEquals ( '123456' , $user [ 'profile_link_color' ]);
self :: assertEquals ( '123456' , $user [ 'profile_background_color' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with an user that is not allowed to use the API .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ runInSeparateProcess
2021-04-01 20:16:16 +00:00
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiGetUserWithoutApiUser ()
{
$_SERVER [ 'PHP_AUTH_USER' ] = 'Test user' ;
2019-07-28 15:40:42 +00:00
$_SERVER [ 'PHP_AUTH_PW' ] = 'password' ;
$_SESSION [ 'allow_api' ] = false ;
2020-10-17 12:19:57 +00:00
self :: assertFalse ( api_get_user ( $this -> app ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with an user ID in a GET parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithGetId ()
{
$_GET [ 'user_id' ] = $this -> otherUser [ 'id' ];
2020-10-17 12:19:57 +00:00
self :: assertOtherUser ( api_get_user ( $this -> app ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with a wrong user ID in a GET parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithWrongGetId ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
$_GET [ 'user_id' ] = $this -> wrongUserId ;
2020-10-17 12:19:57 +00:00
self :: assertOtherUser ( api_get_user ( $this -> app ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with an user name in a GET parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithGetName ()
{
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( api_get_user ( $this -> app ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with a profile URL in a GET parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithGetUrl ()
{
$_GET [ 'profileurl' ] = $this -> selfUser [ 'nurl' ];
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( api_get_user ( $this -> app ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with an user ID in the API path .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithNumericCalledApi ()
{
global $called_api ;
2019-07-28 15:40:42 +00:00
$called_api = [ 'api_path' ];
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ '' , $this -> otherUser [ 'id' ] . '.json' ]);
2020-10-17 12:19:57 +00:00
self :: assertOtherUser ( api_get_user ( $this -> app ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with the $called_api global variable .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithCalledApi ()
{
global $called_api ;
2018-07-01 04:16:32 +00:00
$called_api = [ 'api' , 'api_path' ];
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( api_get_user ( $this -> app ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with a valid user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithCorrectUser ()
{
2020-10-17 12:19:57 +00:00
self :: assertOtherUser ( api_get_user ( $this -> app , $this -> otherUser [ 'id' ]));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with a wrong user ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithWrongUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2020-10-17 12:19:57 +00:00
self :: assertOtherUser ( api_get_user ( $this -> app , $this -> wrongUserId ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_user () function with a 0 user ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetUserWithZeroUser ()
{
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( api_get_user ( $this -> app , 0 ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_item_get_user () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiItemGetUser ()
{
$users = api_item_get_user ( $this -> app , []);
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( $users [ 0 ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_item_get_user () function with a different item parent .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiItemGetUserWithDifferentParent ()
{
$users = api_item_get_user ( $this -> app , [ 'thr-parent' => 'item_parent' , 'uri' => 'item_uri' ]);
2020-10-17 12:19:57 +00:00
self :: assertSelfUser ( $users [ 0 ]);
self :: assertEquals ( $users [ 0 ], $users [ 1 ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_walk_recursive () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiWalkRecursive ()
{
$array = [ 'item1' ];
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
$array ,
api_walk_recursive (
$array ,
function () {
// Should we test this with a callback that actually does something?
return true ;
}
)
);
}
/**
* Test the api_walk_recursive () function with an array .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiWalkRecursiveWithArray ()
{
$array = [[ 'item1' ], [ 'item2' ]];
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
$array ,
api_walk_recursive (
$array ,
function () {
// Should we test this with a callback that actually does something?
return true ;
}
)
);
}
/**
* Test the api_reformat_xml () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiReformatXml ()
{
$item = true ;
2019-07-28 15:40:42 +00:00
$key = '' ;
2020-10-17 12:19:57 +00:00
self :: assertTrue ( api_reformat_xml ( $item , $key ));
self :: assertEquals ( 'true' , $item );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_reformat_xml () function with a statusnet_api key .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiReformatXmlWithStatusnetKey ()
{
$item = '' ;
2019-07-28 15:40:42 +00:00
$key = 'statusnet_api' ;
2020-10-17 12:19:57 +00:00
self :: assertTrue ( api_reformat_xml ( $item , $key ));
self :: assertEquals ( 'statusnet:api' , $key );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_reformat_xml () function with a friendica_api key .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiReformatXmlWithFriendicaKey ()
{
$item = '' ;
2019-07-28 15:40:42 +00:00
$key = 'friendica_api' ;
2020-10-17 12:19:57 +00:00
self :: assertTrue ( api_reformat_xml ( $item , $key ));
self :: assertEquals ( 'friendica:api' , $key );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_create_xml () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiCreateXml ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-07-28 15:40:42 +00:00
'<?xml version="1.0"?>' . " \n " .
'<root_element xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
'xmlns:georss="http://www.georss.org/georss">' . " \n " .
' <data>some_data</data>' . " \n " .
'</root_element>' . " \n " ,
2018-04-09 19:23:41 +00:00
api_create_xml ([ 'data' => [ 'some_data' ]], 'root_element' )
);
}
/**
* Test the api_create_xml () function without any XML namespace .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiCreateXmlWithoutNamespaces ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-07-28 15:40:42 +00:00
'<?xml version="1.0"?>' . " \n " .
'<ok>' . " \n " .
' <data>some_data</data>' . " \n " .
'</ok>' . " \n " ,
2018-04-09 19:23:41 +00:00
api_create_xml ([ 'data' => [ 'some_data' ]], 'ok' )
);
}
/**
* Test the api_format_data () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatData ()
{
$data = [ 'some_data' ];
2020-10-17 12:19:57 +00:00
self :: assertEquals ( $data , api_format_data ( 'root_element' , 'json' , $data ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_format_data () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatDataWithXml ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-07-28 15:40:42 +00:00
'<?xml version="1.0"?>' . " \n " .
'<root_element xmlns="http://api.twitter.com" xmlns:statusnet="http://status.net/schema/api/1/" ' .
'xmlns:friendica="http://friendi.ca/schema/api/1/" ' .
'xmlns:georss="http://www.georss.org/georss">' . " \n " .
' <data>some_data</data>' . " \n " .
'</root_element>' . " \n " ,
2018-04-09 19:23:41 +00:00
api_format_data ( 'root_element' , 'xml' , [ 'data' => [ 'some_data' ]])
);
}
/**
* Test the api_account_verify_credentials () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiAccountVerifyCredentials ()
{
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'user' , api_account_verify_credentials ( 'json' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_account_verify_credentials () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiAccountVerifyCredentialsWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_account_verify_credentials ( 'json' );
}
/**
* Test the requestdata () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testRequestdata ()
{
2020-10-17 12:19:57 +00:00
self :: assertNull ( requestdata ( 'variable_name' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the requestdata () function with a POST parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testRequestdataWithPost ()
{
$_POST [ 'variable_name' ] = 'variable_value' ;
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'variable_value' , requestdata ( 'variable_name' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the requestdata () function with a GET parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testRequestdataWithGet ()
{
$_GET [ 'variable_name' ] = 'variable_value' ;
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'variable_value' , requestdata ( 'variable_name' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_mediap () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesMediap ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgc ( 2 );
2018-04-09 19:23:41 +00:00
2019-07-28 15:40:42 +00:00
$_FILES = [
2018-04-09 19:23:41 +00:00
'media' => [
2019-07-28 15:40:42 +00:00
'id' => 666 ,
'size' => 666 ,
'width' => 666 ,
'height' => 666 ,
2018-04-09 19:23:41 +00:00
'tmp_name' => $this -> getTempImage (),
2019-07-28 15:40:42 +00:00
'name' => 'spacer.png' ,
'type' => 'image/png'
2018-04-09 19:23:41 +00:00
]
];
$_GET [ 'status' ] = '<b>Status content</b>' ;
$result = api_statuses_mediap ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_mediap () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesMediapWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_statuses_mediap ( 'json' );
}
/**
* Test the api_statuses_update () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUpdate ()
{
2019-07-28 15:40:42 +00:00
$_GET [ 'status' ] = 'Status content #friendica' ;
2018-04-09 19:23:41 +00:00
$_GET [ 'in_reply_to_status_id' ] = - 1 ;
2019-07-28 15:40:42 +00:00
$_GET [ 'lat' ] = 48 ;
$_GET [ 'long' ] = 7 ;
$_FILES = [
2018-04-09 19:23:41 +00:00
'media' => [
2019-07-28 15:40:42 +00:00
'id' => 666 ,
'size' => 666 ,
'width' => 666 ,
'height' => 666 ,
2018-04-09 19:23:41 +00:00
'tmp_name' => $this -> getTempImage (),
2019-07-28 15:40:42 +00:00
'name' => 'spacer.png' ,
'type' => 'image/png'
2018-04-09 19:23:41 +00:00
]
];
$result = api_statuses_update ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_update () function with an HTML status .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUpdateWithHtml ()
{
$_GET [ 'htmlstatus' ] = '<b>Status content</b>' ;
$result = api_statuses_update ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_update () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUpdateWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_statuses_update ( 'json' );
}
/**
* Test the api_statuses_update () function with a parent status .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUpdateWithParent ()
{
$this -> markTestIncomplete ( 'This triggers an exit() somewhere and kills PHPUnit.' );
}
/**
* Test the api_statuses_update () function with a media_ids parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUpdateWithMediaIds ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_statuses_update () function with the throttle limit reached .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUpdateWithDayThrottleReached ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_media_upload () function .
2021-04-01 19:19:45 +00:00
* @ runInSeparateProcess
* @ preserveGlobalState disabled
2018-04-09 19:23:41 +00:00
*/
public function testApiMediaUpload ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_media_upload ();
}
/**
* Test the api_media_upload () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiMediaUploadWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_media_upload ();
}
/**
* Test the api_media_upload () function with an invalid uploaded media .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiMediaUploadWithMedia ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\InternalServerErrorException :: class );
2018-04-09 19:23:41 +00:00
$_FILES = [
'media' => [
2019-07-28 15:40:42 +00:00
'id' => 666 ,
2018-07-18 19:36:51 +00:00
'tmp_name' => 'tmp_name'
2018-04-09 19:23:41 +00:00
]
];
api_media_upload ();
}
/**
* Test the api_media_upload () function with an valid uploaded media .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiMediaUploadWithValidMedia ()
{
2019-07-28 15:40:42 +00:00
$_FILES = [
2018-04-09 19:23:41 +00:00
'media' => [
2019-07-28 15:40:42 +00:00
'id' => 666 ,
'size' => 666 ,
'width' => 666 ,
'height' => 666 ,
2018-04-09 19:23:41 +00:00
'tmp_name' => $this -> getTempImage (),
2019-07-28 15:40:42 +00:00
'name' => 'spacer.png' ,
'type' => 'image/png'
2018-04-09 19:23:41 +00:00
]
];
2020-01-04 22:42:01 +00:00
$app = DI :: app ();
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgc ( 2 );
2018-04-09 19:23:41 +00:00
$result = api_media_upload ();
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'image/png' , $result [ 'media' ][ 'image' ][ 'image_type' ]);
self :: assertEquals ( 1 , $result [ 'media' ][ 'image' ][ 'w' ]);
self :: assertEquals ( 1 , $result [ 'media' ][ 'image' ][ 'h' ]);
self :: assertNotEmpty ( $result [ 'media' ][ 'image' ][ 'friendica_preview_url' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_status_show () function .
*/
2019-03-02 21:11:56 +00:00
public function testApiStatusShowWithJson ()
2018-04-09 19:23:41 +00:00
{
2019-03-23 14:02:32 +00:00
$result = api_status_show ( 'json' , 1 );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_status_show () function with an XML result .
*/
public function testApiStatusShowWithXml ()
{
2019-03-23 14:02:32 +00:00
$result = api_status_show ( 'xml' , 1 );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
2019-03-23 14:02:32 +00:00
* Test the api_get_last_status () function
2018-04-09 19:23:41 +00:00
*/
2019-03-02 21:11:56 +00:00
public function testApiGetLastStatus ()
2018-04-09 19:23:41 +00:00
{
2019-03-23 14:02:32 +00:00
$item = api_get_last_status ( $this -> selfUser [ 'id' ], $this -> selfUser [ 'id' ]);
2019-03-02 21:11:56 +00:00
2020-10-17 12:19:57 +00:00
self :: assertNotNull ( $item );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_users_show () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUsersShow ()
{
$result = api_users_show ( 'json' );
// We can't use assertSelfUser() here because the user object is missing some properties.
2020-10-17 12:19:57 +00:00
self :: assertEquals ( $this -> selfUser [ 'id' ], $result [ 'user' ][ 'cid' ]);
self :: assertEquals ( 'DFRN' , $result [ 'user' ][ 'location' ]);
self :: assertEquals ( $this -> selfUser [ 'name' ], $result [ 'user' ][ 'name' ]);
self :: assertEquals ( $this -> selfUser [ 'nick' ], $result [ 'user' ][ 'screen_name' ]);
self :: assertEquals ( 'dfrn' , $result [ 'user' ][ 'network' ]);
self :: assertTrue ( $result [ 'user' ][ 'verified' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_users_show () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUsersShowWithXml ()
{
$result = api_users_show ( 'xml' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_users_search () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUsersSearch ()
{
$_GET [ 'q' ] = 'othercontact' ;
2019-07-28 15:40:42 +00:00
$result = api_users_search ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertOtherUser ( $result [ 'users' ][ 0 ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_users_search () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUsersSearchWithXml ()
{
$_GET [ 'q' ] = 'othercontact' ;
2019-07-28 15:40:42 +00:00
$result = api_users_search ( 'xml' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'users' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_users_search () function without a GET q parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUsersSearchWithoutQuery ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_users_search ( 'json' );
}
/**
* Test the api_users_lookup () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUsersLookup ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\NotFoundException :: class );
2018-04-09 19:23:41 +00:00
api_users_lookup ( 'json' );
}
/**
* Test the api_users_lookup () function with an user ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiUsersLookupWithUserId ()
{
$_REQUEST [ 'user_id' ] = $this -> otherUser [ 'id' ];
2019-07-28 15:40:42 +00:00
$result = api_users_lookup ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertOtherUser ( $result [ 'users' ][ 0 ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_search () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSearch ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'q' ] = 'reply' ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2019-07-28 15:40:42 +00:00
$result = api_search ( 'json' );
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2021-05-23 21:16:33 +00:00
self :: assertStringContainsStringIgnoringCase ( 'reply' , $status [ 'text' ], '' , true );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_search () function a count parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSearchWithCount ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'q' ] = 'reply' ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'count' ] = 20 ;
2019-07-28 15:40:42 +00:00
$result = api_search ( 'json' );
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2021-05-23 21:16:33 +00:00
self :: assertStringContainsStringIgnoringCase ( 'reply' , $status [ 'text' ], '' , true );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_search () function with an rpp parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSearchWithRpp ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'q' ] = 'reply' ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'rpp' ] = 20 ;
2019-07-28 15:40:42 +00:00
$result = api_search ( 'json' );
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2021-05-23 21:16:33 +00:00
self :: assertStringContainsStringIgnoringCase ( 'reply' , $status [ 'text' ], '' , true );
2018-04-09 19:23:41 +00:00
}
}
2018-12-17 14:36:56 +00:00
/**
* Test the api_search () function with an q parameter contains hashtag .
2021-04-01 19:19:45 +00:00
* @ doesNotPerformAssertions
2018-12-17 14:36:56 +00:00
*/
public function testApiSearchWithHashtag ()
{
2018-12-17 14:52:04 +00:00
$_REQUEST [ 'q' ] = '%23friendica' ;
2019-07-28 15:40:42 +00:00
$result = api_search ( 'json' );
2018-12-17 14:36:56 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2021-05-23 21:16:33 +00:00
self :: assertStringContainsStringIgnoringCase ( '#friendica' , $status [ 'text' ], '' , true );
2018-12-17 14:36:56 +00:00
}
}
2018-04-09 19:23:41 +00:00
2018-12-21 16:00:56 +00:00
/**
* Test the api_search () function with an exclude_replies parameter .
2021-04-01 19:19:45 +00:00
* @ doesNotPerformAssertions
2018-12-21 16:00:56 +00:00
*/
public function testApiSearchWithExcludeReplies ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2018-12-21 16:00:56 +00:00
$_REQUEST [ 'exclude_replies' ] = true ;
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'q' ] = 'friendica' ;
$result = api_search ( 'json' );
2018-12-21 16:00:56 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-12-21 16:00:56 +00:00
}
}
2018-04-09 19:23:41 +00:00
/**
* Test the api_search () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSearchWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_search ( 'json' );
}
/**
* Test the api_search () function without any GET query parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSearchWithoutQuery ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_search ( 'json' );
}
/**
* Test the api_statuses_home_timeline () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesHomeTimeline ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'exclude_replies' ] = true ;
$_REQUEST [ 'conversation_id' ] = 1 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_home_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_home_timeline () function with a negative page parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesHomeTimelineWithNegativePage ()
{
$_REQUEST [ 'page' ] = - 2 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_home_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_home_timeline () with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesHomeTimelineWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_statuses_home_timeline ( 'json' );
}
/**
* Test the api_statuses_home_timeline () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesHomeTimelineWithRss ()
{
$result = api_statuses_home_timeline ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_public_timeline () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesPublicTimeline ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'conversation_id' ] = 1 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_public_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_public_timeline () function with the exclude_replies parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesPublicTimelineWithExcludeReplies ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'exclude_replies' ] = true ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_public_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_public_timeline () function with a negative page parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesPublicTimelineWithNegativePage ()
{
$_REQUEST [ 'page' ] = - 2 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_public_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_public_timeline () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesPublicTimelineWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_statuses_public_timeline ( 'json' );
}
/**
* Test the api_statuses_public_timeline () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesPublicTimelineWithRss ()
{
$result = api_statuses_public_timeline ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_networkpublic_timeline () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesNetworkpublicTimeline ()
{
$_REQUEST [ 'max_id' ] = 10 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_networkpublic_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_networkpublic_timeline () function with a negative page parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesNetworkpublicTimelineWithNegativePage ()
{
$_REQUEST [ 'page' ] = - 2 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_networkpublic_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_networkpublic_timeline () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesNetworkpublicTimelineWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_statuses_networkpublic_timeline ( 'json' );
}
/**
* Test the api_statuses_networkpublic_timeline () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesNetworkpublicTimelineWithRss ()
{
$result = api_statuses_networkpublic_timeline ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_show () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesShow ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_statuses_show ( 'json' );
}
/**
* Test the api_statuses_show () function with an ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesShowWithId ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ '' , '' , '' , 1 ]);
$result = api_statuses_show ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_show () function with the conversation parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesShowWithConversation ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ '' , '' , '' , 1 ]);
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'conversation' ] = 1 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_show ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_show () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesShowWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_statuses_show ( 'json' );
}
/**
* Test the api_conversation_show () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiConversationShow ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_conversation_show ( 'json' );
}
/**
* Test the api_conversation_show () function with an ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiConversationShowWithId ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ '' , '' , '' , 1 ]);
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'page' ] = - 2 ;
$result = api_conversation_show ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_conversation_show () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiConversationShowWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_conversation_show ( 'json' );
}
/**
* Test the api_statuses_repeat () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesRepeat ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
api_statuses_repeat ( 'json' );
}
/**
* Test the api_statuses_repeat () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesRepeatWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_statuses_repeat ( 'json' );
}
/**
* Test the api_statuses_repeat () function with an ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesRepeatWithId ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ '' , '' , '' , 1 ]);
$result = api_statuses_repeat ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
// Also test with a shared status
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ '' , '' , '' , 5 ]);
$result = api_statuses_repeat ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_destroy () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesDestroy ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_statuses_destroy ( 'json' );
}
/**
* Test the api_statuses_destroy () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesDestroyWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_statuses_destroy ( 'json' );
}
/**
* Test the api_statuses_destroy () function with an ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesDestroyWithId ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ '' , '' , '' , 1 ]);
$result = api_statuses_destroy ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_mentions () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesMentions ()
{
2021-08-09 20:56:15 +00:00
$this -> app -> setLoggedInUserNickname ( $this -> selfUser [ 'nick' ]);
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_mentions ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
// We should test with mentions in the database.
}
/**
* Test the api_statuses_mentions () function with a negative page parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesMentionsWithNegativePage ()
{
$_REQUEST [ 'page' ] = - 2 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_mentions ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_mentions () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesMentionsWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_statuses_mentions ( 'json' );
}
/**
* Test the api_statuses_mentions () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesMentionsWithRss ()
{
$result = api_statuses_mentions ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_user_timeline () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUserTimeline ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'exclude_replies' ] = true ;
$_REQUEST [ 'conversation_id' ] = 1 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_user_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_user_timeline () function with a negative page parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUserTimelineWithNegativePage ()
{
$_REQUEST [ 'page' ] = - 2 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_user_timeline ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNotEmpty ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_statuses_user_timeline () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUserTimelineWithRss ()
{
$result = api_statuses_user_timeline ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_user_timeline () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesUserTimelineWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_statuses_user_timeline ( 'json' );
}
/**
* Test the api_favorites_create_destroy () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesCreateDestroy ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , '1.1' , 'favorites' , 'create' ]);
2018-04-09 19:23:41 +00:00
api_favorites_create_destroy ( 'json' );
}
/**
* Test the api_favorites_create_destroy () function with an invalid ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesCreateDestroyWithInvalidId ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , '1.1' , 'favorites' , 'create' , '12.json' ]);
2018-04-09 19:23:41 +00:00
api_favorites_create_destroy ( 'json' );
}
/**
* Test the api_favorites_create_destroy () function with an invalid action .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesCreateDestroyWithInvalidAction ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , '1.1' , 'favorites' , 'change.json' ]);
$_REQUEST [ 'id' ] = 1 ;
2018-04-09 19:23:41 +00:00
api_favorites_create_destroy ( 'json' );
}
/**
* Test the api_favorites_create_destroy () function with the create action .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesCreateDestroyWithCreateAction ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , '1.1' , 'favorites' , 'create.json' ]);
$_REQUEST [ 'id' ] = 3 ;
$result = api_favorites_create_destroy ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_favorites_create_destroy () function with the create action and an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesCreateDestroyWithCreateActionAndRss ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , '1.1' , 'favorites' , 'create.rss' ]);
$_REQUEST [ 'id' ] = 3 ;
$result = api_favorites_create_destroy ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'status' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_favorites_create_destroy () function with the destroy action .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesCreateDestroyWithDestroyAction ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , '1.1' , 'favorites' , 'destroy.json' ]);
$_REQUEST [ 'id' ] = 3 ;
$result = api_favorites_create_destroy ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $result [ 'status' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_favorites_create_destroy () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesCreateDestroyWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , '1.1' , 'favorites' , 'create.json' ]);
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_favorites_create_destroy ( 'json' );
}
/**
* Test the api_favorites () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavorites ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'page' ] = - 1 ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2019-07-28 15:40:42 +00:00
$result = api_favorites ( 'json' );
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_favorites () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesWithRss ()
{
$result = api_favorites ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_favorites () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFavoritesWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_favorites ( 'json' );
}
/**
* Test the api_format_messages () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatMessages ()
{
$result = api_format_messages (
2021-07-10 14:02:03 +00:00
[ 'id' => 1 , 'uri-id' => 1 , 'title' => 'item_title' , 'body' => '[b]item_body[/b]' ],
[ 'id' => 2 , 'uri-id' => 2 , 'screen_name' => 'recipient_name' ],
[ 'id' => 3 , 'uri-id' => 2 , 'screen_name' => 'sender_name' ]
2018-04-09 19:23:41 +00:00
);
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'item_title' . " \n " . 'item_body' , $result [ 'text' ]);
self :: assertEquals ( 1 , $result [ 'id' ]);
self :: assertEquals ( 2 , $result [ 'recipient_id' ]);
self :: assertEquals ( 3 , $result [ 'sender_id' ]);
self :: assertEquals ( 'recipient_name' , $result [ 'recipient_screen_name' ]);
self :: assertEquals ( 'sender_name' , $result [ 'sender_screen_name' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_format_messages () function with HTML .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatMessagesWithHtmlText ()
{
$_GET [ 'getText' ] = 'html' ;
2019-07-28 15:40:42 +00:00
$result = api_format_messages (
2021-07-10 14:02:03 +00:00
[ 'id' => 1 , 'uri-id' => 1 , 'title' => 'item_title' , 'body' => '[b]item_body[/b]' ],
[ 'id' => 2 , 'uri-id' => 2 , 'screen_name' => 'recipient_name' ],
[ 'id' => 3 , 'uri-id' => 3 , 'screen_name' => 'sender_name' ]
2018-04-09 19:23:41 +00:00
);
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'item_title' , $result [ 'title' ]);
self :: assertEquals ( '<strong>item_body</strong>' , $result [ 'text' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_format_messages () function with plain text .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatMessagesWithPlainText ()
{
$_GET [ 'getText' ] = 'plain' ;
2019-07-28 15:40:42 +00:00
$result = api_format_messages (
2021-07-10 14:02:03 +00:00
[ 'id' => 1 , 'uri-id' => 1 , 'title' => 'item_title' , 'body' => '[b]item_body[/b]' ],
[ 'id' => 2 , 'uri-id' => 2 , 'screen_name' => 'recipient_name' ],
[ 'id' => 3 , 'uri-id' => 3 , 'screen_name' => 'sender_name' ]
2018-04-09 19:23:41 +00:00
);
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'item_title' , $result [ 'title' ]);
self :: assertEquals ( 'item_body' , $result [ 'text' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_format_messages () function with the getUserObjects GET parameter set to false .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatMessagesWithoutUserObjects ()
{
$_GET [ 'getUserObjects' ] = 'false' ;
2019-07-28 15:40:42 +00:00
$result = api_format_messages (
2021-07-10 14:04:27 +00:00
[ 'id' => 1 , 'uri-id' => 1 , 'title' => 'item_title' , 'body' => '[b]item_body[/b]' ],
[ 'id' => 2 , 'uri-id' => 2 , 'screen_name' => 'recipient_name' ],
[ 'id' => 3 , 'uri-id' => 3 , 'screen_name' => 'sender_name' ]
2018-04-09 19:23:41 +00:00
);
2020-10-17 12:19:57 +00:00
self :: assertTrue ( ! isset ( $result [ 'sender' ]));
self :: assertTrue ( ! isset ( $result [ 'recipient' ]));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_convert_item () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiConvertItem ()
{
$result = api_convert_item (
[
'network' => 'feed' ,
2019-07-28 15:40:42 +00:00
'title' => 'item_title' ,
2021-05-24 11:47:02 +00:00
'uri-id' => 1 ,
2018-04-09 19:23:41 +00:00
// We need a long string to test that it is correctly cut
2019-07-28 15:40:42 +00:00
'body' => 'perspiciatis impedit voluptatem quis molestiae ea qui ' .
'reiciendis dolorum aut ducimus sunt consequatur inventore dolor ' .
'officiis pariatur doloremque nemo culpa aut quidem qui dolore ' .
'laudantium atque commodi alias voluptatem non possimus aperiam ' .
'ipsum rerum consequuntur aut amet fugit quia aliquid praesentium ' .
'repellendus quibusdam et et inventore mollitia rerum sit autem ' .
'pariatur maiores ipsum accusantium perferendis vel sit possimus ' .
'veritatis nihil distinctio qui eum repellat officia illum quos ' .
'impedit quam iste esse unde qui suscipit aut facilis ut inventore ' .
'omnis exercitationem quo magnam consequatur maxime aut illum ' .
'soluta quaerat natus unde aspernatur et sed beatae nihil ullam ' .
'temporibus corporis ratione blanditiis perspiciatis impedit ' .
'voluptatem quis molestiae ea qui reiciendis dolorum aut ducimus ' .
'sunt consequatur inventore dolor officiis pariatur doloremque ' .
'nemo culpa aut quidem qui dolore laudantium atque commodi alias ' .
'voluptatem non possimus aperiam ipsum rerum consequuntur aut ' .
'amet fugit quia aliquid praesentium repellendus quibusdam et et ' .
'inventore mollitia rerum sit autem pariatur maiores ipsum accusantium ' .
'perferendis vel sit possimus veritatis nihil distinctio qui eum ' .
'repellat officia illum quos impedit quam iste esse unde qui ' .
'suscipit aut facilis ut inventore omnis exercitationem quo magnam ' .
'consequatur maxime aut illum soluta quaerat natus unde aspernatur ' .
'et sed beatae nihil ullam temporibus corporis ratione blanditiis' ,
'plink' => 'item_plink'
2018-04-09 19:23:41 +00:00
]
);
2020-10-17 12:19:57 +00:00
self :: assertStringStartsWith ( 'item_title' , $result [ 'text' ]);
self :: assertStringStartsWith ( '<h4>item_title</h4><br>perspiciatis impedit voluptatem' , $result [ 'html' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_convert_item () function with an empty item body .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiConvertItemWithoutBody ()
{
$result = api_convert_item (
[
'network' => 'feed' ,
2019-07-28 15:40:42 +00:00
'title' => 'item_title' ,
2021-05-25 07:21:37 +00:00
'uri-id' => - 1 ,
2019-07-28 15:40:42 +00:00
'body' => '' ,
'plink' => 'item_plink'
2018-04-09 19:23:41 +00:00
]
);
2021-05-25 07:21:37 +00:00
self :: assertEquals ( " item_title " , $result [ 'text' ]);
self :: assertEquals ( '<h4>item_title</h4><br>item_plink' , $result [ 'html' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_convert_item () function with the title in the body .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiConvertItemWithTitleInBody ()
{
$result = api_convert_item (
[
2021-05-24 11:47:02 +00:00
'title' => 'item_title' ,
'body' => 'item_title item_body' ,
'uri-id' => 1 ,
2018-04-09 19:23:41 +00:00
]
);
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'item_title item_body' , $result [ 'text' ]);
self :: assertEquals ( '<h4>item_title</h4><br>item_title item_body' , $result [ 'html' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_attachments () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetAttachments ()
{
$body = 'body' ;
2021-07-06 06:38:15 +00:00
self :: assertEmpty ( api_get_attachments ( $body , 0 ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_attachments () function with an img tag .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetAttachmentsWithImage ()
{
2018-07-01 18:46:24 +00:00
$body = '[img]http://via.placeholder.com/1x1.png[/img]' ;
2021-07-06 06:38:15 +00:00
self :: assertIsArray ( api_get_attachments ( $body , 0 ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_attachments () function with an img tag and an AndStatus user agent .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetAttachmentsWithImageAndAndStatus ()
{
$_SERVER [ 'HTTP_USER_AGENT' ] = 'AndStatus' ;
2019-07-28 15:40:42 +00:00
$body = '[img]http://via.placeholder.com/1x1.png[/img]' ;
2021-07-06 06:38:15 +00:00
self :: assertIsArray ( api_get_attachments ( $body , 0 ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_entitities () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetEntitities ()
{
$text = 'text' ;
2021-07-06 06:38:15 +00:00
self :: assertIsArray ( api_get_entitities ( $text , 'bbcode' , 0 ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_get_entitities () function with the include_entities parameter .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiGetEntititiesWithIncludeEntities ()
{
$_REQUEST [ 'include_entities' ] = 'true' ;
2019-07-28 15:40:42 +00:00
$text = 'text' ;
2021-07-06 06:38:15 +00:00
$result = api_get_entitities ( $text , 'bbcode' , 0 );
2021-06-02 21:03:08 +00:00
self :: assertIsArray ( $result [ 'hashtags' ]);
self :: assertIsArray ( $result [ 'symbols' ]);
self :: assertIsArray ( $result [ 'urls' ]);
self :: assertIsArray ( $result [ 'user_mentions' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_format_items_embeded_images () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatItemsEmbededImages ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2019-12-30 22:00:08 +00:00
'text ' . DI :: baseUrl () . '/display/item_guid' ,
2018-04-09 19:23:41 +00:00
api_format_items_embeded_images ([ 'guid' => 'item_guid' ], 'text data:image/foo' )
);
}
/**
* Test the api_contactlink_to_array () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiContactlinkToArray ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
[
'name' => 'text' ,
2019-07-28 15:40:42 +00:00
'url' => '' ,
2018-04-09 19:23:41 +00:00
],
api_contactlink_to_array ( 'text' )
);
}
/**
* Test the api_contactlink_to_array () function with an URL .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiContactlinkToArrayWithUrl ()
{
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
[
'name' => [ 'link_text' ],
2019-07-28 15:40:42 +00:00
'url' => [ 'url' ],
2018-04-09 19:23:41 +00:00
],
api_contactlink_to_array ( 'text <a href="url">link_text</a>' )
);
}
/**
* Test the api_format_items_activities () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatItemsActivities ()
{
2019-07-28 15:40:42 +00:00
$item = [ 'uid' => 0 , 'uri' => '' ];
2018-04-09 19:23:41 +00:00
$result = api_format_items_activities ( $item );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'like' , $result );
self :: assertArrayHasKey ( 'dislike' , $result );
self :: assertArrayHasKey ( 'attendyes' , $result );
self :: assertArrayHasKey ( 'attendno' , $result );
self :: assertArrayHasKey ( 'attendmaybe' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_format_items_activities () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFormatItemsActivitiesWithXml ()
{
2019-07-28 15:40:42 +00:00
$item = [ 'uid' => 0 , 'uri' => '' ];
2018-04-09 19:23:41 +00:00
$result = api_format_items_activities ( $item , 'xml' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'friendica:like' , $result );
self :: assertArrayHasKey ( 'friendica:dislike' , $result );
self :: assertArrayHasKey ( 'friendica:attendyes' , $result );
self :: assertArrayHasKey ( 'friendica:attendno' , $result );
self :: assertArrayHasKey ( 'friendica:attendmaybe' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_format_items () function .
2021-04-01 19:19:45 +00:00
* @ doesNotPerformAssertions
2018-04-09 19:23:41 +00:00
*/
public function testApiFormatItems ()
{
2019-07-28 15:40:42 +00:00
$items = [
2018-04-09 19:23:41 +00:00
[
2019-07-28 15:40:42 +00:00
'item_network' => 'item_network' ,
'source' => 'web' ,
'coord' => '5 7' ,
'body' => '' ,
'verb' => '' ,
'author-id' => 43 ,
2018-07-10 02:39:59 +00:00
'author-network' => Protocol :: DFRN ,
2019-07-28 15:40:42 +00:00
'author-link' => 'http://localhost/profile/othercontact' ,
'plink' => '' ,
2018-04-09 19:23:41 +00:00
]
];
2018-07-01 18:46:24 +00:00
$result = api_format_items ( $items , [ 'id' => 0 ], true );
2018-04-09 19:23:41 +00:00
foreach ( $result as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_format_items () function with an XML result .
2021-04-01 19:19:45 +00:00
* @ doesNotPerformAssertions
2018-04-09 19:23:41 +00:00
*/
public function testApiFormatItemsWithXml ()
{
2019-07-28 15:40:42 +00:00
$items = [
2018-04-09 19:23:41 +00:00
[
2019-07-28 15:40:42 +00:00
'coord' => '5 7' ,
'body' => '' ,
'verb' => '' ,
'author-id' => 43 ,
2018-07-10 02:39:59 +00:00
'author-network' => Protocol :: DFRN ,
2019-07-28 15:40:42 +00:00
'author-link' => 'http://localhost/profile/othercontact' ,
'plink' => '' ,
2018-04-09 19:23:41 +00:00
]
];
2018-07-01 18:46:24 +00:00
$result = api_format_items ( $items , [ 'id' => 0 ], true , 'xml' );
2018-04-09 19:23:41 +00:00
foreach ( $result as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_format_items () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiAccountRateLimitStatus ()
{
$result = api_account_rate_limit_status ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 150 , $result [ 'hash' ][ 'remaining_hits' ]);
self :: assertEquals ( 150 , $result [ 'hash' ][ 'hourly_limit' ]);
2021-06-02 21:03:08 +00:00
self :: assertIsInt ( $result [ 'hash' ][ 'reset_time_in_seconds' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_format_items () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiAccountRateLimitStatusWithXml ()
{
$result = api_account_rate_limit_status ( 'xml' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'hash' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_help_test () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiHelpTest ()
{
$result = api_help_test ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ([ 'ok' => 'ok' ], $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_help_test () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiHelpTestWithXml ()
{
$result = api_help_test ( 'xml' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'ok' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_lists_list () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsList ()
{
$result = api_lists_list ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ([ 'lists_list' => []], $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_lists_ownerships () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsOwnerships ()
{
$result = api_lists_ownerships ( 'json' );
foreach ( $result [ 'lists' ][ 'lists' ] as $list ) {
2020-10-17 12:19:57 +00:00
self :: assertList ( $list );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_lists_ownerships () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsOwnershipsWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_lists_ownerships ( 'json' );
}
/**
* Test the api_lists_statuses () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsStatuses ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_lists_statuses ( 'json' );
}
/**
* Test the api_lists_statuses () function with a list ID .
2021-04-01 19:19:45 +00:00
* @ doesNotPerformAssertions
2018-04-09 19:23:41 +00:00
*/
public function testApiListsStatusesWithListId ()
{
$_REQUEST [ 'list_id' ] = 1 ;
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'page' ] = - 1 ;
$_REQUEST [ 'max_id' ] = 10 ;
$result = api_lists_statuses ( 'json' );
2018-04-09 19:23:41 +00:00
foreach ( $result [ 'status' ] as $status ) {
2020-10-17 12:19:57 +00:00
self :: assertStatus ( $status );
2018-04-09 19:23:41 +00:00
}
}
/**
* Test the api_lists_statuses () function with a list ID and a RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsStatusesWithListIdAndRss ()
{
$_REQUEST [ 'list_id' ] = 1 ;
2019-07-28 15:40:42 +00:00
$result = api_lists_statuses ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'statuses' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_lists_statuses () function with an unallowed user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsStatusesWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_lists_statuses ( 'json' );
}
/**
* Test the api_statuses_f () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFWithFriends ()
{
$_GET [ 'page' ] = - 1 ;
2019-07-28 15:40:42 +00:00
$result = api_statuses_f ( 'friends' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'user' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_f () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFWithFollowers ()
{
$result = api_statuses_f ( 'followers' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'user' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_f () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFWithBlocks ()
{
$result = api_statuses_f ( 'blocks' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'user' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_f () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFWithIncoming ()
{
$result = api_statuses_f ( 'incoming' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'user' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_f () function an undefined cursor GET variable .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFWithUndefinedCursor ()
{
$_GET [ 'cursor' ] = 'undefined' ;
2020-10-17 12:19:57 +00:00
self :: assertFalse ( api_statuses_f ( 'friends' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_friends () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFriends ()
{
$result = api_statuses_friends ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'user' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_friends () function an undefined cursor GET variable .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFriendsWithUndefinedCursor ()
{
$_GET [ 'cursor' ] = 'undefined' ;
2020-10-17 12:19:57 +00:00
self :: assertFalse ( api_statuses_friends ( 'json' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_followers () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFollowers ()
{
$result = api_statuses_followers ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'user' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statuses_followers () function an undefined cursor GET variable .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusesFollowersWithUndefinedCursor ()
{
$_GET [ 'cursor' ] = 'undefined' ;
2020-10-17 12:19:57 +00:00
self :: assertFalse ( api_statuses_followers ( 'json' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_blocks_list () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiBlocksList ()
{
$result = api_blocks_list ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'user' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_blocks_list () function an undefined cursor GET variable .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiBlocksListWithUndefinedCursor ()
{
$_GET [ 'cursor' ] = 'undefined' ;
2020-10-17 12:19:57 +00:00
self :: assertFalse ( api_blocks_list ( 'json' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_friendships_incoming () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendshipsIncoming ()
{
$result = api_friendships_incoming ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'id' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_friendships_incoming () function an undefined cursor GET variable .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendshipsIncomingWithUndefinedCursor ()
{
$_GET [ 'cursor' ] = 'undefined' ;
2020-10-17 12:19:57 +00:00
self :: assertFalse ( api_friendships_incoming ( 'json' ));
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statusnet_config () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusnetConfig ()
{
$result = api_statusnet_config ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'localhost' , $result [ 'config' ][ 'site' ][ 'server' ]);
self :: assertEquals ( 'default' , $result [ 'config' ][ 'site' ][ 'theme' ]);
self :: assertEquals ( DI :: baseUrl () . '/images/friendica-64.png' , $result [ 'config' ][ 'site' ][ 'logo' ]);
self :: assertTrue ( $result [ 'config' ][ 'site' ][ 'fancy' ]);
self :: assertEquals ( 'en' , $result [ 'config' ][ 'site' ][ 'language' ]);
self :: assertEquals ( 'UTC' , $result [ 'config' ][ 'site' ][ 'timezone' ]);
self :: assertEquals ( 200000 , $result [ 'config' ][ 'site' ][ 'textlimit' ]);
self :: assertEquals ( 'false' , $result [ 'config' ][ 'site' ][ 'private' ]);
self :: assertEquals ( 'false' , $result [ 'config' ][ 'site' ][ 'ssl' ]);
self :: assertEquals ( 30 , $result [ 'config' ][ 'site' ][ 'shorturllength' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_statusnet_version () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiStatusnetVersion ()
{
$result = api_statusnet_version ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ( '0.9.7' , $result [ 'version' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_new () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesNew ()
{
$result = api_direct_messages_new ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertNull ( $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_new () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesNewWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_direct_messages_new ( 'json' );
}
/**
* Test the api_direct_messages_new () function with an user ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesNewWithUserId ()
{
2019-07-28 15:40:42 +00:00
$_POST [ 'text' ] = 'message_text' ;
2018-07-04 04:09:17 +00:00
$_POST [ 'user_id' ] = $this -> otherUser [ 'id' ];
2019-07-28 15:40:42 +00:00
$result = api_direct_messages_new ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ([ 'direct_message' => [ 'error' => - 1 ]], $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_new () function with a screen name .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesNewWithScreenName ()
{
2021-08-09 20:56:15 +00:00
$this -> app -> setLoggedInUserNickname ( $this -> selfUser [ 'nick' ]);
2019-07-28 15:40:42 +00:00
$_POST [ 'text' ] = 'message_text' ;
2018-07-01 18:46:24 +00:00
$_POST [ 'screen_name' ] = $this -> friendUser [ 'nick' ];
2019-07-28 15:40:42 +00:00
$result = api_direct_messages_new ( 'json' );
2021-05-23 21:16:33 +00:00
self :: assertStringContainsString ( 'message_text' , $result [ 'direct_message' ][ 'text' ]);
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'selfcontact' , $result [ 'direct_message' ][ 'sender_screen_name' ]);
self :: assertEquals ( 1 , $result [ 'direct_message' ][ 'friendica_seen' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_new () function with a title .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesNewWithTitle ()
{
2021-08-09 20:56:15 +00:00
$this -> app -> setLoggedInUserNickname ( $this -> selfUser [ 'nick' ]);
2019-07-28 15:40:42 +00:00
$_POST [ 'text' ] = 'message_text' ;
2018-07-01 18:46:24 +00:00
$_POST [ 'screen_name' ] = $this -> friendUser [ 'nick' ];
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'title' ] = 'message_title' ;
$result = api_direct_messages_new ( 'json' );
2021-05-23 21:16:33 +00:00
self :: assertStringContainsString ( 'message_text' , $result [ 'direct_message' ][ 'text' ]);
self :: assertStringContainsString ( 'message_title' , $result [ 'direct_message' ][ 'text' ]);
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'selfcontact' , $result [ 'direct_message' ][ 'sender_screen_name' ]);
self :: assertEquals ( 1 , $result [ 'direct_message' ][ 'friendica_seen' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_new () function with an RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesNewWithRss ()
{
2021-08-09 20:56:15 +00:00
$this -> app -> setLoggedInUserNickname ( $this -> selfUser [ 'nick' ]);
2019-07-28 15:40:42 +00:00
$_POST [ 'text' ] = 'message_text' ;
2018-07-01 18:46:24 +00:00
$_POST [ 'screen_name' ] = $this -> friendUser [ 'nick' ];
2019-07-28 15:40:42 +00:00
$result = api_direct_messages_new ( 'rss' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'direct-messages' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_destroy () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesDestroy ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_direct_messages_destroy ( 'json' );
}
/**
* Test the api_direct_messages_destroy () function with the friendica_verbose GET param .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesDestroyWithVerbose ()
{
$_GET [ 'friendica_verbose' ] = 'true' ;
2019-07-28 15:40:42 +00:00
$result = api_direct_messages_destroy ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
[
'$result' => [
2019-07-28 15:40:42 +00:00
'result' => 'error' ,
2018-04-09 19:23:41 +00:00
'message' => 'message id or parenturi not specified'
]
],
$result
);
}
/**
* Test the api_direct_messages_destroy () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesDestroyWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_direct_messages_destroy ( 'json' );
}
/**
* Test the api_direct_messages_destroy () function with a non - zero ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesDestroyWithId ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'id' ] = 1 ;
api_direct_messages_destroy ( 'json' );
}
/**
* Test the api_direct_messages_destroy () with a non - zero ID and the friendica_verbose GET param .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesDestroyWithIdAndVerbose ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'id' ] = 1 ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'friendica_parenturi' ] = 'parent_uri' ;
2019-07-28 15:40:42 +00:00
$_GET [ 'friendica_verbose' ] = 'true' ;
$result = api_direct_messages_destroy ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
[
'$result' => [
2019-07-28 15:40:42 +00:00
'result' => 'error' ,
2018-04-09 19:23:41 +00:00
'message' => 'message id not in database'
]
],
$result
);
}
/**
* Test the api_direct_messages_destroy () function with a non - zero ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesDestroyWithCorrectId ()
{
$this -> markTestIncomplete ( 'We need to add a dataset for this.' );
}
/**
* Test the api_direct_messages_box () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesBoxWithSentbox ()
{
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'page' ] = - 1 ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'max_id' ] = 10 ;
2019-07-28 15:40:42 +00:00
$result = api_direct_messages_box ( 'json' , 'sentbox' , 'false' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'direct_message' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_box () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesBoxWithConversation ()
{
$result = api_direct_messages_box ( 'json' , 'conversation' , 'false' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'direct_message' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_box () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesBoxWithAll ()
{
$result = api_direct_messages_box ( 'json' , 'all' , 'false' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'direct_message' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_box () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesBoxWithInbox ()
{
$result = api_direct_messages_box ( 'json' , 'inbox' , 'false' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'direct_message' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_box () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesBoxWithVerbose ()
{
$result = api_direct_messages_box ( 'json' , 'sentbox' , 'true' );
2020-10-17 12:19:57 +00:00
self :: assertEquals (
2018-04-09 19:23:41 +00:00
[
'$result' => [
2019-07-28 15:40:42 +00:00
'result' => 'error' ,
2018-04-09 19:23:41 +00:00
'message' => 'no mails available'
]
],
$result
);
}
/**
* Test the api_direct_messages_box () function with a RSS result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesBoxWithRss ()
{
$result = api_direct_messages_box ( 'rss' , 'sentbox' , 'false' );
2020-10-17 12:19:57 +00:00
self :: assertXml ( $result , 'direct-messages' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_box () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesBoxWithUnallowedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'allow_api' ] = false ;
2019-07-28 15:40:42 +00:00
$_GET [ 'screen_name' ] = $this -> selfUser [ 'nick' ];
2018-04-09 19:23:41 +00:00
api_direct_messages_box ( 'json' , 'sentbox' , 'false' );
}
/**
* Test the api_direct_messages_sentbox () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesSentbox ()
{
$result = api_direct_messages_sentbox ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'direct_message' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_inbox () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesInbox ()
{
$result = api_direct_messages_inbox ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'direct_message' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_all () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesAll ()
{
$result = api_direct_messages_all ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'direct_message' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_direct_messages_conversation () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiDirectMessagesConversation ()
{
$result = api_direct_messages_conversation ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'direct_message' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_oauth_request_token () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiOauthRequestToken ()
{
2020-01-04 22:43:13 +00:00
$this -> markTestIncomplete ( 'exit() kills phpunit as well' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_oauth_access_token () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiOauthAccessToken ()
{
2020-01-04 22:43:13 +00:00
$this -> markTestIncomplete ( 'exit() kills phpunit as well' );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_fr_photoalbum_delete () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoalbumDelete ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_fr_photoalbum_delete ( 'json' );
}
/**
* Test the api_fr_photoalbum_delete () function with an album name .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoalbumDeleteWithAlbum ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'album' ] = 'album_name' ;
api_fr_photoalbum_delete ( 'json' );
}
/**
* Test the api_fr_photoalbum_delete () function with an album name .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoalbumDeleteWithValidAlbum ()
{
$this -> markTestIncomplete ( 'We need to add a dataset for this.' );
}
/**
* Test the api_fr_photoalbum_delete () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoalbumUpdate ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_fr_photoalbum_update ( 'json' );
}
/**
* Test the api_fr_photoalbum_delete () function with an album name .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoalbumUpdateWithAlbum ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'album' ] = 'album_name' ;
api_fr_photoalbum_update ( 'json' );
}
/**
* Test the api_fr_photoalbum_delete () function with an album name .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoalbumUpdateWithAlbumAndNewAlbum ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2019-07-28 15:40:42 +00:00
$_REQUEST [ 'album' ] = 'album_name' ;
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'album_new' ] = 'album_name' ;
api_fr_photoalbum_update ( 'json' );
}
/**
* Test the api_fr_photoalbum_update () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoalbumUpdateWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_fr_photoalbum_update ( 'json' );
}
/**
* Test the api_fr_photoalbum_delete () function with an album name .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoalbumUpdateWithValidAlbum ()
{
$this -> markTestIncomplete ( 'We need to add a dataset for this.' );
}
/**
* Test the api_fr_photos_list () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotosList ()
{
$result = api_fr_photos_list ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'photo' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_fr_photos_list () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotosListWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_fr_photos_list ( 'json' );
}
/**
* Test the api_fr_photo_create_update () function .
*/
public function testApiFrPhotoCreateUpdate ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_fr_photo_create_update ( 'json' );
}
/**
* Test the api_fr_photo_create_update () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoCreateUpdateWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_fr_photo_create_update ( 'json' );
}
/**
* Test the api_fr_photo_create_update () function with an album name .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoCreateUpdateWithAlbum ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'album' ] = 'album_name' ;
api_fr_photo_create_update ( 'json' );
}
/**
* Test the api_fr_photo_create_update () function with the update mode .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoCreateUpdateWithUpdate ()
{
$this -> markTestIncomplete ( 'We need to create a dataset for this' );
}
/**
* Test the api_fr_photo_create_update () function with an uploaded file .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoCreateUpdateWithFile ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_fr_photo_delete () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoDelete ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_fr_photo_delete ( 'json' );
}
/**
* Test the api_fr_photo_delete () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoDeleteWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_fr_photo_delete ( 'json' );
}
/**
* Test the api_fr_photo_delete () function with a photo ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoDeleteWithPhotoId ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'photo_id' ] = 1 ;
api_fr_photo_delete ( 'json' );
}
/**
* Test the api_fr_photo_delete () function with a correct photo ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoDeleteWithCorrectPhotoId ()
{
$this -> markTestIncomplete ( 'We need to create a dataset for this.' );
}
/**
* Test the api_fr_photo_detail () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoDetail ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_fr_photo_detail ( 'json' );
}
/**
* Test the api_fr_photo_detail () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoDetailWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_fr_photo_detail ( 'json' );
}
/**
* Test the api_fr_photo_detail () function with a photo ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoDetailWithPhotoId ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\NotFoundException :: class );
2018-04-09 19:23:41 +00:00
$_REQUEST [ 'photo_id' ] = 1 ;
api_fr_photo_detail ( 'json' );
}
/**
* Test the api_fr_photo_detail () function with a correct photo ID .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFrPhotoDetailCorrectPhotoId ()
{
$this -> markTestIncomplete ( 'We need to create a dataset for this.' );
}
/**
* Test the api_account_update_profile_image () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiAccountUpdateProfileImage ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_account_update_profile_image ( 'json' );
}
/**
* Test the api_account_update_profile_image () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiAccountUpdateProfileImageWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_account_update_profile_image ( 'json' );
}
/**
* Test the api_account_update_profile_image () function with an uploaded file .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiAccountUpdateProfileImageWithUpload ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
$this -> markTestIncomplete ();
}
/**
* Test the api_account_update_profile () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiAccountUpdateProfile ()
{
2019-07-28 15:40:42 +00:00
$_POST [ 'name' ] = 'new_name' ;
2018-04-09 19:23:41 +00:00
$_POST [ 'description' ] = 'new_description' ;
2019-07-28 15:40:42 +00:00
$result = api_account_update_profile ( 'json' );
2018-04-09 19:23:41 +00:00
// We can't use assertSelfUser() here because the user object is missing some properties.
2020-10-17 12:19:57 +00:00
self :: assertEquals ( $this -> selfUser [ 'id' ], $result [ 'user' ][ 'cid' ]);
self :: assertEquals ( 'DFRN' , $result [ 'user' ][ 'location' ]);
self :: assertEquals ( $this -> selfUser [ 'nick' ], $result [ 'user' ][ 'screen_name' ]);
self :: assertEquals ( 'dfrn' , $result [ 'user' ][ 'network' ]);
self :: assertEquals ( 'new_name' , $result [ 'user' ][ 'name' ]);
self :: assertEquals ( 'new_description' , $result [ 'user' ][ 'description' ]);
2018-04-09 19:23:41 +00:00
}
/**
* Test the check_acl_input () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testCheckAclInput ()
{
$result = check_acl_input ( '<aclstring>' );
// Where does this result come from?
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 1 , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the check_acl_input () function with an empty ACL string .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testCheckAclInputWithEmptyAclString ()
{
$result = check_acl_input ( ' ' );
2020-10-17 12:19:57 +00:00
self :: assertFalse ( $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the save_media_to_database () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testSaveMediaToDatabase ()
{
$this -> markTestIncomplete ();
}
/**
* Test the post_photo_item () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testPostPhotoItem ()
{
$this -> markTestIncomplete ();
}
/**
* Test the prepare_photo_data () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testPreparePhotoData ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_share_as_retweet () function with a valid item .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiShareAsRetweetWithValidItem ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_in_reply_to () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiInReplyTo ()
{
2018-07-01 19:08:14 +00:00
$result = api_in_reply_to ([ 'id' => 0 , 'parent' => 0 , 'uri' => '' , 'thr-parent' => '' ]);
2020-10-17 12:19:57 +00:00
self :: assertArrayHasKey ( 'status_id' , $result );
self :: assertArrayHasKey ( 'user_id' , $result );
self :: assertArrayHasKey ( 'status_id_str' , $result );
self :: assertArrayHasKey ( 'user_id_str' , $result );
self :: assertArrayHasKey ( 'screen_name' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_in_reply_to () function with a valid item .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiInReplyToWithValidItem ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_clean_plain_items () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiCleanPlainItems ()
{
$_REQUEST [ 'include_entities' ] = 'true' ;
2019-07-28 15:40:42 +00:00
$result = api_clean_plain_items ( 'some_text [url="some_url"]some_text[/url]' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 'some_text [url="some_url"]"some_url"[/url]' , $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_best_nickname () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiBestNickname ()
{
$contacts = [];
2019-07-28 15:40:42 +00:00
$result = api_best_nickname ( $contacts );
2020-10-17 12:19:57 +00:00
self :: assertNull ( $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_best_nickname () function with contacts .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiBestNicknameWithContacts ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_friendica_group_show () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaGroupShow ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_friendica_group_delete () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaGroupDelete ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_lists_destroy () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsDestroy ()
{
$this -> markTestIncomplete ();
}
/**
* Test the group_create () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testGroupCreate ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_friendica_group_create () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaGroupCreate ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_lists_create () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsCreate ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_friendica_group_update () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaGroupUpdate ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_lists_update () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiListsUpdate ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_friendica_activity () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaActivity ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_friendica_notification () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaNotification ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\BadRequestException :: class );
2018-04-09 19:23:41 +00:00
api_friendica_notification ( 'json' );
}
/**
* Test the api_friendica_notification () function without an authenticated user .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaNotificationWithoutAuthenticatedUser ()
{
2021-05-16 21:49:40 +00:00
$this -> expectException ( \Friendica\Network\HTTPException\ForbiddenException :: class );
2018-04-09 19:23:41 +00:00
$_SESSION [ 'authenticated' ] = false ;
api_friendica_notification ( 'json' );
}
/**
2020-01-28 21:00:21 +00:00
* Test the api_friendica_notification () function with empty result
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
2020-01-28 21:00:21 +00:00
public function testApiFriendicaNotificationWithEmptyResult ()
2018-04-09 19:23:41 +00:00
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , 'friendica' , 'notification' ]);
2020-01-28 21:00:21 +00:00
$_SESSION [ 'uid' ] = 41 ;
2019-07-28 15:40:42 +00:00
$result = api_friendica_notification ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ([ 'note' => false ], $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_friendica_notification () function with an XML result .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaNotificationWithXmlResult ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , 'friendica' , 'notification' ]);
$result = api_friendica_notification ( 'xml' );
2020-01-31 20:40:45 +00:00
$dateRel = Temporal :: getRelativeDate ( '2020-01-01 12:12:02' );
2020-01-28 21:00:21 +00:00
$assertXml =<<< XML
< ? xml version = " 1.0 " ?>
< notes >
2020-11-19 16:28:15 +00:00
< note id = " 1 " hash = " " type = " 8 " name = " Reply to " url = " http://localhost/display/1 " photo = " http://localhost/ " date = " 2020-01-01 12:12:02 " msg = " A test reply from an item " uid = " 42 " uri - id = " " link = " http://localhost/notification/1 " iid = " 4 " parent = " " parent - uri - id = " " seen = " 0 " verb = " " otype = " item " name_cache = " Reply to " msg_cache = " A test reply from an item " timestamp = " 1577880722 " date_rel = " { $dateRel } " msg_html = " A test reply from an item " msg_plain = " A test reply from an item " />
2020-01-28 21:00:21 +00:00
</ notes >
XML ;
2020-10-17 12:19:57 +00:00
self :: assertXmlStringEqualsXmlString ( $assertXml , $result );
2020-01-28 21:00:21 +00:00
}
/**
* Test the api_friendica_notification () function with an JSON result .
*
* @ return void
*/
public function testApiFriendicaNotificationWithJsonResult ()
{
2021-07-25 14:27:13 +00:00
DI :: args () -> setArgv ([ 'api' , 'friendica' , 'notification' ]);
$result = json_encode ( api_friendica_notification ( 'json' ));
2020-10-17 12:19:57 +00:00
self :: assertJson ( $result );
2018-04-09 19:23:41 +00:00
}
/**
* Test the api_friendica_notification_seen () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaNotificationSeen ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_friendica_direct_messages_setseen () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaDirectMessagesSetseen ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_friendica_direct_messages_search () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiFriendicaDirectMessagesSearch ()
{
$this -> markTestIncomplete ();
}
/**
* Test the api_saved_searches_list () function .
2019-07-28 15:40:42 +00:00
*
2018-04-09 19:23:41 +00:00
* @ return void
*/
public function testApiSavedSearchesList ()
{
$result = api_saved_searches_list ( 'json' );
2020-10-17 12:19:57 +00:00
self :: assertEquals ( 1 , $result [ 'terms' ][ 0 ][ 'id' ]);
self :: assertEquals ( 1 , $result [ 'terms' ][ 0 ][ 'id_str' ]);
self :: assertEquals ( 'Saved search' , $result [ 'terms' ][ 0 ][ 'name' ]);
self :: assertEquals ( 'Saved search' , $result [ 'terms' ][ 0 ][ 'query' ]);
2018-04-09 19:23:41 +00:00
}
}