X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Finclude%2FApiTest.php;h=a65283b2f1dd360972e188247026d44b767a4a0c;hb=7d800c81ecd616abb25c8543add1c9212809906c;hp=1419f7d7fe0730488bad3aba1c4f90fd943fdfb5;hpb=b9f8762eb3b4f125dcdf5335cd992466b79a5ef6;p=friendica.git
diff --git a/tests/include/ApiTest.php b/tests/include/ApiTest.php
index 1419f7d7fe..a65283b2f1 100644
--- a/tests/include/ApiTest.php
+++ b/tests/include/ApiTest.php
@@ -7,15 +7,18 @@ namespace Friendica\Test;
use Dice\Dice;
use Friendica\App;
-use Friendica\BaseObject;
-use Friendica\Core\Config\Configuration;
-use Friendica\Core\Config\PConfiguration;
+use Friendica\Core\Config\IConfig;
+use Friendica\Core\PConfig\IPConfig;
use Friendica\Core\Protocol;
+use Friendica\Core\Session;
use Friendica\Core\Session\ISession;
-use Friendica\Core\System;
use Friendica\Database\Database;
+use Friendica\Database\DBStructure;
+use Friendica\DI;
+use Friendica\Model\Contact;
use Friendica\Network\HTTPException;
use Friendica\Test\Util\Database\StaticDatabase;
+use Friendica\Util\Temporal;
use Monolog\Handler\TestHandler;
require_once __DIR__ . '/../../include/api.php';
@@ -45,7 +48,7 @@ class ApiTest extends DatabaseTest
/** @var App */
protected $app;
- /** @var Configuration */
+ /** @var IConfig */
protected $config;
/** @var Dice */
@@ -60,14 +63,19 @@ class ApiTest extends DatabaseTest
$this->dice = (new Dice())
->addRules(include __DIR__ . '/../../static/dependencies.config.php')
- ->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true]);
- BaseObject::setDependencyInjection($this->dice);
+ ->addRule(Database::class, ['instanceOf' => StaticDatabase::class, 'shared' => true])
+ ->addRule(ISession::class, ['instanceOf' => Session\Memory::class, 'shared' => true, 'call' => null]);
+ DI::init($this->dice);
/** @var Database $dba */
$dba = $this->dice->create(Database::class);
- /** @var Configuration $config */
- $this->config = $this->dice->create(Configuration::class);
+ $dba->setTestmode(true);
+
+ DBStructure::checkInitialValues();
+
+ /** @var IConfig $config */
+ $this->config = $this->dice->create(IConfig::class);
$this->config->set('system', 'url', 'http://localhost');
$this->config->set('system', 'hostname', 'localhost');
@@ -84,7 +92,7 @@ class ApiTest extends DatabaseTest
$this->loadFixture(__DIR__ . '/../datasets/api.fixture.php', $dba);
/** @var App app */
- $this->app = BaseObject::getApp();
+ $this->app = DI::app();
$this->app->argc = 1;
$this->app->argv = ['home'];
@@ -112,9 +120,7 @@ class ApiTest extends DatabaseTest
// User ID that we know is not in the database
$this->wrongUserId = 666;
- /** @var ISession $session */
- $session = BaseObject::getClass(ISession::class);
- $session->start();
+ DI::session()->start();
// Most API require login so we force the session
$_SESSION = [
@@ -431,12 +437,14 @@ class ApiTest extends DatabaseTest
}
];
$_SERVER['REQUEST_METHOD'] = 'method';
+ $_SERVER['QUERY_STRING'] = 'q=api_path';
$_GET['callback'] = 'callback_name';
- $this->app->query_string = 'api_path';
+ $args = DI::args()->determine($_SERVER, $_GET);
+
$this->assertEquals(
'callback_name(["some_data"])',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -455,7 +463,12 @@ class ApiTest extends DatabaseTest
return ['data' => ['some_data']];
}
];
+
$_SERVER['REQUEST_METHOD'] = 'method';
+ $_SERVER['QUERY_STRING'] = 'q=api_path';
+
+ $args = DI::args()->determine($_SERVER, $_GET);
+
$this->config->set('system', 'profiler', true);
$this->config->set('rendertime', 'callstack', true);
$this->app->callstack = [
@@ -466,10 +479,9 @@ class ApiTest extends DatabaseTest
'network' => ['some_function' => 200]
];
- $this->app->query_string = 'api_path';
$this->assertEquals(
'["some_data"]',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -489,11 +501,13 @@ class ApiTest extends DatabaseTest
}
];
$_SERVER['REQUEST_METHOD'] = 'method';
+ $_SERVER['QUERY_STRING'] = 'q=api_path';
+
+ $args = DI::args()->determine($_SERVER, $_GET);
- $this->app->query_string = 'api_path';
$this->assertEquals(
'{"status":{"error":"Internal Server Error","code":"500 Internal Server Error","request":"api_path"}}',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -527,11 +541,13 @@ class ApiTest extends DatabaseTest
}
];
$_SERVER['REQUEST_METHOD'] = 'method';
+ $_SERVER['QUERY_STRING'] = 'q=api_path.json';
+
+ $args = DI::args()->determine($_SERVER, $_GET);
- $this->app->query_string = 'api_path.json';
$this->assertEquals(
'["some_data"]',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -551,11 +567,13 @@ class ApiTest extends DatabaseTest
}
];
$_SERVER['REQUEST_METHOD'] = 'method';
+ $_SERVER['QUERY_STRING'] = 'q=api_path.xml';
+
+ $args = DI::args()->determine($_SERVER, $_GET);
- $this->app->query_string = 'api_path.xml';
$this->assertEquals(
'some_data',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -575,12 +593,14 @@ class ApiTest extends DatabaseTest
}
];
$_SERVER['REQUEST_METHOD'] = 'method';
+ $_SERVER['QUERY_STRING'] = 'q=api_path.rss';
+
+ $args = DI::args()->determine($_SERVER, $_GET);
- $this->app->query_string = 'api_path.rss';
$this->assertEquals(
'' . "\n" .
'some_data',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -600,12 +620,14 @@ class ApiTest extends DatabaseTest
}
];
$_SERVER['REQUEST_METHOD'] = 'method';
+ $_SERVER['QUERY_STRING'] = 'q=api_path.atom';
+
+ $args = DI::args()->determine($_SERVER, $_GET);
- $this->app->query_string = 'api_path.atom';
$this->assertEquals(
'' . "\n" .
'some_data',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -620,10 +642,13 @@ class ApiTest extends DatabaseTest
global $API;
$API['api_path'] = ['method' => 'method'];
- $this->app->query_string = 'api_path';
+ $_SERVER['QUERY_STRING'] = 'q=api_path';
+
+ $args = DI::args()->determine($_SERVER, $_GET);
+
$this->assertEquals(
'{"status":{"error":"Method Not Allowed","code":"405 Method Not Allowed","request":"api_path"}}',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -640,13 +665,15 @@ class ApiTest extends DatabaseTest
'method' => 'method',
'auth' => true
];
- $_SERVER['REQUEST_METHOD'] = 'method';
$_SESSION['authenticated'] = false;
+ $_SERVER['REQUEST_METHOD'] = 'method';
+ $_SERVER['QUERY_STRING'] = 'q=api_path';
+
+ $args = DI::args()->determine($_SERVER, $_GET);
- $this->app->query_string = 'api_path';
$this->assertEquals(
'{"status":{"error":"This API requires login","code":"401 Unauthorized","request":"api_path"}}',
- api_call($this->app)
+ api_call($this->app, $args)
);
}
@@ -660,7 +687,7 @@ class ApiTest extends DatabaseTest
{
$this->assertEquals(
'{"status":{"error":"error_message","code":"200 OK","request":""}}',
- api_error('json', new HTTPException\OKException('error_message'))
+ api_error('json', new HTTPException\OKException('error_message'), DI::args())
);
}
@@ -681,7 +708,7 @@ class ApiTest extends DatabaseTest
' 200 OK
' . "\n" .
' ' . "\n" .
'' . "\n",
- api_error('xml', new HTTPException\OKException('error_message'))
+ api_error('xml', new HTTPException\OKException('error_message'), DI::args())
);
}
@@ -702,7 +729,7 @@ class ApiTest extends DatabaseTest
' 200 OK
' . "\n" .
' ' . "\n" .
'' . "\n",
- api_error('rss', new HTTPException\OKException('error_message'))
+ api_error('rss', new HTTPException\OKException('error_message'), DI::args())
);
}
@@ -723,7 +750,7 @@ class ApiTest extends DatabaseTest
' 200 OK
' . "\n" .
' ' . "\n" .
'' . "\n",
- api_error('atom', new HTTPException\OKException('error_message'))
+ api_error('atom', new HTTPException\OKException('error_message'), DI::args())
);
}
@@ -805,7 +832,7 @@ class ApiTest extends DatabaseTest
*/
public function testApiGetUserWithFrioSchema()
{
- $pConfig = $this->dice->create(PConfiguration::class);
+ $pConfig = $this->dice->create(IPConfig::class);
$pConfig->set($this->selfUser['id'], 'frio', 'schema', 'red');
$user = api_get_user($this->app);
$this->assertSelfUser($user);
@@ -821,7 +848,7 @@ class ApiTest extends DatabaseTest
*/
public function testApiGetUserWithCustomFrioSchema()
{
- $pConfig = $this->dice->create(PConfiguration::class);
+ $pConfig = $this->dice->create(IPConfig::class);
$pConfig->set($this->selfUser['id'], 'frio', 'schema', '---');
$pConfig->set($this->selfUser['id'], 'frio', 'nav_bg', '#123456');
$pConfig->set($this->selfUser['id'], 'frio', 'link_color', '#123456');
@@ -840,7 +867,7 @@ class ApiTest extends DatabaseTest
*/
public function testApiGetUserWithEmptyFrioSchema()
{
- $pConfig = $this->dice->create(PConfiguration::class);
+ $pConfig = $this->dice->create(IPConfig::class);
$pConfig->set($this->selfUser['id'], 'frio', 'schema', '---');
$user = api_get_user($this->app);
$this->assertSelfUser($user);
@@ -1361,7 +1388,7 @@ class ApiTest extends DatabaseTest
'type' => 'image/png'
]
];
- $app = \get_app();
+ $app = DI::app();
$app->argc = 2;
$result = api_media_upload();
@@ -2396,7 +2423,7 @@ class ApiTest extends DatabaseTest
public function testApiFormatItemsEmbededImages()
{
$this->assertEquals(
- 'text ' . System::baseUrl() . '/display/item_guid',
+ 'text ' . DI::baseUrl() . '/display/item_guid',
api_format_items_embeded_images(['guid' => 'item_guid'], 'text data:image/foo')
);
}
@@ -2465,102 +2492,6 @@ class ApiTest extends DatabaseTest
$this->assertArrayHasKey('friendica:attendmaybe', $result);
}
- /**
- * Test the api_format_items_profiles() function.
- *
- * @return void
- */
- public function testApiFormatItemsProfiles()
- {
- $profile_row = [
- 'id' => 'profile_id',
- 'profile-name' => 'profile_name',
- 'is-default' => true,
- 'hide-friends' => true,
- 'photo' => 'profile_photo',
- 'thumb' => 'profile_thumb',
- 'publish' => true,
- 'net-publish' => true,
- 'pdesc' => 'description',
- 'dob' => 'date_of_birth',
- 'address' => 'address',
- 'locality' => 'city',
- 'region' => 'region',
- 'postal-code' => 'postal_code',
- 'country-name' => 'country',
- 'hometown' => 'hometown',
- 'gender' => 'gender',
- 'marital' => 'marital',
- 'with' => 'marital_with',
- 'howlong' => 'marital_since',
- 'sexual' => 'sexual',
- 'politic' => 'politic',
- 'religion' => 'religion',
- 'pub_keywords' => 'public_keywords',
- 'prv_keywords' => 'private_keywords',
-
- 'likes' => 'likes',
- 'dislikes' => 'dislikes',
- 'about' => 'about',
- 'music' => 'music',
- 'book' => 'book',
- 'tv' => 'tv',
- 'film' => 'film',
- 'interest' => 'interest',
- 'romance' => 'romance',
- 'work' => 'work',
- 'education' => 'education',
- 'contact' => 'social_networks',
- 'homepage' => 'homepage'
- ];
- $result = api_format_items_profiles($profile_row);
- $this->assertEquals(
- [
- 'profile_id' => 'profile_id',
- 'profile_name' => 'profile_name',
- 'is_default' => true,
- 'hide_friends' => true,
- 'profile_photo' => 'profile_photo',
- 'profile_thumb' => 'profile_thumb',
- 'publish' => true,
- 'net_publish' => true,
- 'description' => 'description',
- 'date_of_birth' => 'date_of_birth',
- 'address' => 'address',
- 'city' => 'city',
- 'region' => 'region',
- 'postal_code' => 'postal_code',
- 'country' => 'country',
- 'hometown' => 'hometown',
- 'gender' => 'gender',
- 'marital' => 'marital',
- 'marital_with' => 'marital_with',
- 'marital_since' => 'marital_since',
- 'sexual' => 'sexual',
- 'politic' => 'politic',
- 'religion' => 'religion',
- 'public_keywords' => 'public_keywords',
- 'private_keywords' => 'private_keywords',
-
- 'likes' => 'likes',
- 'dislikes' => 'dislikes',
- 'about' => 'about',
- 'music' => 'music',
- 'book' => 'book',
- 'tv' => 'tv',
- 'film' => 'film',
- 'interest' => 'interest',
- 'romance' => 'romance',
- 'work' => 'work',
- 'education' => 'education',
- 'social_networks' => 'social_networks',
- 'homepage' => 'homepage',
- 'users' => null
- ],
- $result
- );
- }
-
/**
* Test the api_format_items() function.
*
@@ -2899,7 +2830,7 @@ class ApiTest extends DatabaseTest
$result = api_statusnet_config('json');
$this->assertEquals('localhost', $result['config']['site']['server']);
$this->assertEquals('default', $result['config']['site']['theme']);
- $this->assertEquals(System::baseUrl() . '/images/friendica-64.png', $result['config']['site']['logo']);
+ $this->assertEquals(DI::baseUrl() . '/images/friendica-64.png', $result['config']['site']['logo']);
$this->assertTrue($result['config']['site']['fancy']);
$this->assertEquals('en', $result['config']['site']['language']);
$this->assertEquals('UTC', $result['config']['site']['timezone']);
@@ -2927,8 +2858,8 @@ class ApiTest extends DatabaseTest
*/
public function testApiFfIds()
{
- $result = api_ff_ids('json');
- $this->assertNull($result);
+ $result = api_ff_ids('json', Contact::FOLLOWER);
+ $this->assertEquals(['id' => []], $result);
}
/**
@@ -2950,7 +2881,7 @@ class ApiTest extends DatabaseTest
public function testApiFfIdsWithoutAuthenticatedUser()
{
$_SESSION['authenticated'] = false;
- api_ff_ids('json');
+ api_ff_ids('json', Contact::FOLLOWER);
}
/**
@@ -2961,7 +2892,7 @@ class ApiTest extends DatabaseTest
public function testApiFriendsIds()
{
$result = api_friends_ids('json');
- $this->assertNull($result);
+ $this->assertEquals(['id' => []], $result);
}
/**
@@ -2972,7 +2903,7 @@ class ApiTest extends DatabaseTest
public function testApiFollowersIds()
{
$result = api_followers_ids('json');
- $this->assertNull($result);
+ $this->assertEquals(['id' => []], $result);
}
/**
@@ -3283,7 +3214,7 @@ class ApiTest extends DatabaseTest
*/
public function testApiOauthRequestToken()
{
- $this->markTestIncomplete('killme() kills phpunit as well');
+ $this->markTestIncomplete('exit() kills phpunit as well');
}
/**
@@ -3293,7 +3224,7 @@ class ApiTest extends DatabaseTest
*/
public function testApiOauthAccessToken()
{
- $this->markTestIncomplete('killme() kills phpunit as well');
+ $this->markTestIncomplete('exit() kills phpunit as well');
}
/**
@@ -3721,28 +3652,6 @@ class ApiTest extends DatabaseTest
$this->markTestIncomplete();
}
- /**
- * Test the api_get_nick() function.
- *
- * @return void
- */
- public function testApiGetNick()
- {
- $result = api_get_nick($this->otherUser['nurl']);
- $this->assertEquals('othercontact', $result);
- }
-
- /**
- * Test the api_get_nick() function with a wrong URL.
- *
- * @return void
- */
- public function testApiGetNickWithWrongUrl()
- {
- $result = api_get_nick('wrong_url');
- $this->assertFalse($result);
- }
-
/**
* Test the api_in_reply_to() function.
*
@@ -3916,14 +3825,15 @@ class ApiTest extends DatabaseTest
}
/**
- * Test the api_friendica_notification() function with an argument count.
+ * Test the api_friendica_notification() function with empty result
*
* @return void
*/
- public function testApiFriendicaNotificationWithArgumentCount()
+ public function testApiFriendicaNotificationWithEmptyResult()
{
$this->app->argv = ['api', 'friendica', 'notification'];
$this->app->argc = count($this->app->argv);
+ $_SESSION['uid'] = 41;
$result = api_friendica_notification('json');
$this->assertEquals(['note' => false], $result);
}
@@ -3938,89 +3848,57 @@ class ApiTest extends DatabaseTest
$this->app->argv = ['api', 'friendica', 'notification'];
$this->app->argc = count($this->app->argv);
$result = api_friendica_notification('xml');
- $this->assertXml($result, 'notes');
+ $dateRel = Temporal::getRelativeDate('2020-01-01 12:12:02');
+ $assertXml=<<
+
+
+
+XML;
+ $this->assertXmlStringEqualsXmlString($assertXml, $result);
}
/**
- * Test the api_friendica_notification_seen() function.
+ * Test the api_friendica_notification() function with an JSON result.
*
* @return void
*/
- public function testApiFriendicaNotificationSeen()
+ public function testApiFriendicaNotificationWithJsonResult()
{
- $this->markTestIncomplete();
+ $this->app->argv = ['api', 'friendica', 'notification'];
+ $this->app->argc = count($this->app->argv);
+ $result = json_encode(api_friendica_notification('json'));
+ $this->assertJson($result);
}
/**
- * Test the api_friendica_direct_messages_setseen() function.
+ * Test the api_friendica_notification_seen() function.
*
* @return void
*/
- public function testApiFriendicaDirectMessagesSetseen()
+ public function testApiFriendicaNotificationSeen()
{
$this->markTestIncomplete();
}
/**
- * Test the api_friendica_direct_messages_search() function.
+ * Test the api_friendica_direct_messages_setseen() function.
*
* @return void
*/
- public function testApiFriendicaDirectMessagesSearch()
+ public function testApiFriendicaDirectMessagesSetseen()
{
$this->markTestIncomplete();
}
/**
- * Test the api_friendica_profile_show() function.
- *
- * @return void
- */
- public function testApiFriendicaProfileShow()
- {
- $result = api_friendica_profile_show('json');
- // We can't use assertSelfUser() here because the user object is missing some properties.
- $this->assertEquals($this->selfUser['id'], $result['$result']['friendica_owner']['cid']);
- $this->assertEquals('DFRN', $result['$result']['friendica_owner']['location']);
- $this->assertEquals($this->selfUser['name'], $result['$result']['friendica_owner']['name']);
- $this->assertEquals($this->selfUser['nick'], $result['$result']['friendica_owner']['screen_name']);
- $this->assertEquals('dfrn', $result['$result']['friendica_owner']['network']);
- $this->assertTrue($result['$result']['friendica_owner']['verified']);
- $this->assertFalse($result['$result']['multi_profiles']);
- }
-
- /**
- * Test the api_friendica_profile_show() function with a profile ID.
- *
- * @return void
- */
- public function testApiFriendicaProfileShowWithProfileId()
- {
- $this->markTestIncomplete('We need to add a dataset for this.');
- }
-
- /**
- * Test the api_friendica_profile_show() function with a wrong profile ID.
- *
- * @return void
- * @expectedException Friendica\Network\HTTPException\BadRequestException
- */
- public function testApiFriendicaProfileShowWithWrongProfileId()
- {
- $_REQUEST['profile_id'] = 666;
- api_friendica_profile_show('json');
- }
-
- /**
- * Test the api_friendica_profile_show() function without an authenticated user.
+ * Test the api_friendica_direct_messages_search() function.
*
* @return void
- * @expectedException Friendica\Network\HTTPException\ForbiddenException
*/
- public function testApiFriendicaProfileShowWithoutAuthenticatedUser()
+ public function testApiFriendicaDirectMessagesSearch()
{
- $_SESSION['authenticated'] = false;
- api_friendica_profile_show('json');
+ $this->markTestIncomplete();
}
/**