diff --git a/src/Module/Api/Mastodon/Accounts/VerifyCredentials.php b/src/Module/Api/Mastodon/Accounts/VerifyCredentials.php index 472ca7f565..4318fac7b5 100644 --- a/src/Module/Api/Mastodon/Accounts/VerifyCredentials.php +++ b/src/Module/Api/Mastodon/Accounts/VerifyCredentials.php @@ -52,6 +52,6 @@ class VerifyCredentials extends BaseApi // @todo Support the source property, $account = DI::mstdnAccount()->createFromContactId($cdata['user'], $uid); - System::jsonExit($account); + $this->response->exit('account', ['account' => $account->toArray()]); } } diff --git a/tests/datasets/api.fixture.php b/tests/datasets/api.fixture.php index 9e0174c029..014692ccd1 100644 --- a/tests/datasets/api.fixture.php +++ b/tests/datasets/api.fixture.php @@ -36,7 +36,7 @@ return [ 'mail', 'post-delivery-data', // Base test config to avoid notice messages - 'config' => [ + 'config' => [ [ 'cat' => 'system', 'k' => 'url', @@ -63,7 +63,7 @@ return [ 'v' => '1', ], ], - 'user' => [ + 'user' => [ [ 'uid' => 42, 'username' => 'Test user', @@ -73,7 +73,7 @@ return [ 'theme' => 'frio', ], ], - 'item-uri' => [ + 'item-uri' => [ [ 'id' => 1, 'uri' => '1', @@ -128,100 +128,149 @@ return [ ], 'contact' => [ [ - 'id' => 42, - 'uid' => 42, - 'uri-id' => 42, - 'name' => 'Self contact', - 'nick' => 'selfcontact', - 'self' => 1, - 'nurl' => 'http://localhost/profile/selfcontact', - 'url' => 'http://localhost/profile/selfcontact', - 'about' => 'User used in tests', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::FOLLOWER, - 'network' => Protocol::DFRN, + 'id' => 42, + 'uid' => 42, + 'uri-id' => 42, + 'name' => 'Self contact', + 'nick' => 'selfcontact', + 'self' => 1, + 'nurl' => 'http://localhost/profile/selfcontact', + 'url' => 'http://localhost/profile/selfcontact', + 'about' => 'User used in tests', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::FOLLOWER, + 'network' => Protocol::DFRN, 'location' => 'DFRN', ], // Having the same name and nick allows us to test // the fallback to api_get_nick() in api_get_user() [ - 'id' => 43, - 'uid' => 0, - 'uri-id' => 43, - 'name' => 'othercontact', - 'nick' => 'othercontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/othercontact', - 'url' => 'http://localhost/profile/othercontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::NOTHING, - 'network' => Protocol::DFRN, + 'id' => 43, + 'uid' => 0, + 'uri-id' => 43, + 'name' => 'othercontact', + 'nick' => 'othercontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/othercontact', + 'url' => 'http://localhost/profile/othercontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::NOTHING, + 'network' => Protocol::DFRN, 'location' => 'DFRN', ], [ - 'id' => 44, - 'uid' => 42, - 'uri-id' => 44, - 'name' => 'Friend contact', - 'nick' => 'friendcontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/friendcontact', - 'url' => 'http://localhost/profile/friendcontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::SHARING, - 'network' => Protocol::DFRN, + 'id' => 44, + 'uid' => 42, + 'uri-id' => 44, + 'name' => 'Friend contact', + 'nick' => 'friendcontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/friendcontact', + 'url' => 'http://localhost/profile/friendcontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::SHARING, + 'network' => Protocol::DFRN, 'location' => 'DFRN', ], [ - 'id' => 45, - 'uid' => 0, - 'uri-id' => 44, - 'name' => 'Friend contact', - 'nick' => 'friendcontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/friendcontact', - 'url' => 'http://localhost/profile/friendcontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::SHARING, - 'network' => Protocol::DFRN, + 'id' => 45, + 'uid' => 0, + 'uri-id' => 44, + 'name' => 'Friend contact', + 'nick' => 'friendcontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/friendcontact', + 'url' => 'http://localhost/profile/friendcontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::SHARING, + 'network' => Protocol::DFRN, 'location' => 'DFRN', ], [ - 'id' => 46, - 'uid' => 42, - 'uri-id' => 46, - 'name' => 'Mutual contact', - 'nick' => 'mutualcontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/mutualcontact', - 'url' => 'http://localhost/profile/mutualcontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::FRIEND, - 'network' => Protocol::DFRN, + 'id' => 46, + 'uid' => 42, + 'uri-id' => 46, + 'name' => 'Mutual contact', + 'nick' => 'mutualcontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/mutualcontact', + 'url' => 'http://localhost/profile/mutualcontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::FRIEND, + 'network' => Protocol::DFRN, 'location' => 'DFRN', ], [ - 'id' => 47, - 'uid' => 0, - 'uri-id' => 46, - 'name' => 'Mutual contact', - 'nick' => 'mutualcontact', - 'self' => 0, - 'nurl' => 'http://localhost/profile/mutualcontact', - 'url' => 'http://localhost/profile/mutualcontact', - 'pending' => 0, - 'blocked' => 0, - 'rel' => Contact::SHARING, - 'network' => Protocol::DFRN, + 'id' => 47, + 'uid' => 0, + 'uri-id' => 46, + 'name' => 'Mutual contact', + 'nick' => 'mutualcontact', + 'self' => 0, + 'nurl' => 'http://localhost/profile/mutualcontact', + 'url' => 'http://localhost/profile/mutualcontact', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::SHARING, + 'network' => Protocol::DFRN, + 'location' => 'DFRN', + ], + [ + 'id' => 42, + 'uid' => 0, + 'uri-id' => 42, + 'name' => 'Self contact', + 'nick' => 'selfcontact', + 'self' => 1, + 'nurl' => 'http://localhost/profile/selfcontact', + 'url' => 'http://localhost/profile/selfcontact', + 'about' => 'User used in tests', + 'pending' => 0, + 'blocked' => 0, + 'rel' => Contact::FOLLOWER, + 'network' => Protocol::DFRN, 'location' => 'DFRN', ], ], - 'verb' => [ + 'apcontact' => [ + [ + "url" => "http://localhost/profile/selfcontact", + "uri-id" => 1, + "uuid" => "42", + "type" => "Person", + "following" => "http://localhost/following/selfcontact", + "followers" => "http://localhost/followers/selfcontact", + "inbox" => "http://localhost/inbox/selfcontact", + "outbox" => "http://localhost/outbox/selfcontact", + "sharedinbox" => "http://localhost/inbox", + "manually-approve" => 1, + "discoverable" => 0, + "nick" => "selfcontact", + "name" => "Self contact", + "about" => "User used in tests", + "xmpp" => null, + "matrix" => null, + "photo" => "http://localhost/photo/profile/admin.jpeg", + "header" => null, + "addr" => "selfcontact@localhost", + "alias" => null, + "pubkey" => "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzLquDFnFxNYZZFQNbA9f\nkgtUJpC+MPrhxhEsjxme1ivvE4itdPnCueBHifknUkwfmqormyeqr4TdoVbNuKRg\nj2QRBdtaGbUJLQVdbiTKFOmJIYMtV05WIIHEhUW84fwIXmF+6u3kbOw+sIjWY3OW\nwC/2+54HiYS2n8cddfwoZBim6Na8yyQI8pQSKqJ+I4gDfkGuoVex0svNPEv9liLE\nykpQ3PuoeLJV2Wex0Cy6FYPgcfH6xvvUVxh6e8w0w22jC3DJInfDrmbw5H7aUbf+\nMMwV3TVI6/CqTO0cLEOZUjsUwdm6lIV0O0fTsrkjU9G0bc0sLJl7n9i9ICDOKOMf\nCLaK2Pj2sVbpkzXJoufLUDf0oSftdVvN9jR9WYxRdnwsyF8N/xVTw8AsyHhkXawR\n3YDgi6i2uZj5kvG7GPBf7EPZ/MpbGhEZB+/GQuZuyhLdgFDSi/uX8STBmn1jI/zY\nTLZ8JCwMzFKAXAtYaBPklZBbcRyz9O1893MsAXO8d6ODTOkD324gAjRUtuOMscYc\nWV98NZIUSbqQrznmMoJn1fiMNVgx+UXOPkiZuDxnrr1T3vynKnl5LXmadx2YeoAf\nxPeCoDb0eJtCDLcsTZ9qlztaEaohPV+H3HBSpdItea7LgAbccILHPssk9tUgmHVl\na5yV8uFenhKKQ9g93Pt63LsCAwEAAQ==\n-----END PUBLIC KEY-----", + "subscribe" => "/follow?url={uri}", + "baseurl" => null, + "gsid" => null, + "generator" => "Friendica 'Siberian Iris' 2021.12-dev-1443", + "following_count" => 0, + "followers_count" => 0, + "statuses_count" => 0, + "updated" => "2021-11-19 19:17:59", + ], + ], + 'verb' => [ [ 'id' => 0, 'name' => '', @@ -291,7 +340,7 @@ return [ 'plink' => 'http://localhost/display/6', ], ], - 'post' => [ + 'post' => [ [ 'uri-id' => 1, 'parent-uri-id' => 1, @@ -636,135 +685,135 @@ return [ 'wall' => 0, ], ], - 'post-thread' => [ + 'post-thread' => [ [ - 'uri-id' => 1, - 'author-id' => 42, - 'owner-id' => 42, - 'causer-id' => 42, - 'network' => Protocol::DFRN, + 'uri-id' => 1, + 'author-id' => 42, + 'owner-id' => 42, + 'causer-id' => 42, + 'network' => Protocol::DFRN, ], [ - 'uri-id' => 3, - 'author-id' => 43, - 'owner-id' => 43, - 'causer-id' => 43, - 'network' => Protocol::DFRN, + 'uri-id' => 3, + 'author-id' => 43, + 'owner-id' => 43, + 'causer-id' => 43, + 'network' => Protocol::DFRN, ], [ - 'uri-id' => 6, - 'author-id' => 44, - 'owner-id' => 44, - 'causer-id' => 44, - 'network' => Protocol::DFRN, + 'uri-id' => 6, + 'author-id' => 44, + 'owner-id' => 44, + 'causer-id' => 44, + 'network' => Protocol::DFRN, ], ], - 'post-thread-user' => [ + 'post-thread-user' => [ [ - 'uri-id' => 1, - 'uid' => 42, - 'wall' => 1, + 'uri-id' => 1, + 'uid' => 42, + 'wall' => 1, 'post-user-id' => 1, - 'author-id' => 42, - 'owner-id' => 42, - 'causer-id' => 42, - 'contact-id' => 42, - 'network' => Protocol::DFRN, - 'starred' => 1, - 'origin' => 1, + 'author-id' => 42, + 'owner-id' => 42, + 'causer-id' => 42, + 'contact-id' => 42, + 'network' => Protocol::DFRN, + 'starred' => 1, + 'origin' => 1, ], [ - 'uri-id' => 3, - 'uid' => 42, - 'wall' => 1, + 'uri-id' => 3, + 'uid' => 42, + 'wall' => 1, 'post-user-id' => 3, - 'author-id' => 43, - 'owner-id' => 43, - 'causer-id' => 43, - 'contact-id' => 43, - 'network' => Protocol::DFRN, - 'starred' => 0, - 'origin' => 1, + 'author-id' => 43, + 'owner-id' => 43, + 'causer-id' => 43, + 'contact-id' => 43, + 'network' => Protocol::DFRN, + 'starred' => 0, + 'origin' => 1, ], [ - 'uri-id' => 6, - 'uid' => 42, - 'wall' => 1, + 'uri-id' => 6, + 'uid' => 42, + 'wall' => 1, 'post-user-id' => 6, - 'author-id' => 44, - 'owner-id' => 44, - 'causer-id' => 44, - 'contact-id' => 44, - 'network' => Protocol::DFRN, - 'starred' => 0, - 'origin' => 1, + 'author-id' => 44, + 'owner-id' => 44, + 'causer-id' => 44, + 'contact-id' => 44, + 'network' => Protocol::DFRN, + 'starred' => 0, + 'origin' => 1, ], [ - 'uri-id' => 1, - 'uid' => 0, - 'wall' => 0, + 'uri-id' => 1, + 'uid' => 0, + 'wall' => 0, 'post-user-id' => 7, - 'author-id' => 42, - 'owner-id' => 42, - 'causer-id' => 42, - 'contact-id' => 42, - 'network' => Protocol::DFRN, - 'starred' => 0, - 'origin' => 0, + 'author-id' => 42, + 'owner-id' => 42, + 'causer-id' => 42, + 'contact-id' => 42, + 'network' => Protocol::DFRN, + 'starred' => 0, + 'origin' => 0, ], [ - 'uri-id' => 3, - 'uid' => 0, - 'wall' => 0, + 'uri-id' => 3, + 'uid' => 0, + 'wall' => 0, 'post-user-id' => 9, - 'author-id' => 43, - 'owner-id' => 43, - 'causer-id' => 43, - 'contact-id' => 43, - 'network' => Protocol::DFRN, - 'starred' => 0, - 'origin' => 0, + 'author-id' => 43, + 'owner-id' => 43, + 'causer-id' => 43, + 'contact-id' => 43, + 'network' => Protocol::DFRN, + 'starred' => 0, + 'origin' => 0, ], [ - 'uri-id' => 6, - 'uid' => 0, - 'wall' => 0, + 'uri-id' => 6, + 'uid' => 0, + 'wall' => 0, 'post-user-id' => 12, - 'author-id' => 44, - 'owner-id' => 44, - 'causer-id' => 44, - 'contact-id' => 44, - 'network' => Protocol::DFRN, - 'starred' => 0, - 'origin' => 0, + 'author-id' => 44, + 'owner-id' => 44, + 'causer-id' => 44, + 'contact-id' => 44, + 'network' => Protocol::DFRN, + 'starred' => 0, + 'origin' => 0, ], ], 'notify' => [ [ - 'id' => 1, - '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, - 'link' => 'http://localhost/notification/1', - 'iid' => 4, - 'seen' => 0, - 'verb' => \Friendica\Protocol\Activity::POST, - 'otype' => Notification\ObjectType::ITEM, + 'id' => 1, + '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, + 'link' => 'http://localhost/notification/1', + 'iid' => 4, + 'seen' => 0, + 'verb' => \Friendica\Protocol\Activity::POST, + 'otype' => Notification\ObjectType::ITEM, 'name_cache' => 'Reply to', - 'msg_cache' => 'A test reply from an item', + 'msg_cache' => 'A test reply from an item', ], ], 'profile' => [ [ - 'id' => 1, + 'id' => 1, 'uid' => 42, ], ], - 'group' => [ + 'group' => [ [ 'id' => 1, 'uid' => 42, @@ -778,7 +827,7 @@ return [ 'name' => 'Private list', ], ], - 'search' => [ + 'search' => [ [ 'id' => 1, 'term' => 'Saved search', diff --git a/tests/src/Module/Api/Mastodon/Accounts/StatusesTest.php b/tests/src/Module/Api/Mastodon/Accounts/StatusesTest.php index 885afbb3e3..0c6aab8867 100644 --- a/tests/src/Module/Api/Mastodon/Accounts/StatusesTest.php +++ b/tests/src/Module/Api/Mastodon/Accounts/StatusesTest.php @@ -2,6 +2,9 @@ namespace Friendica\Test\src\Module\Api\Mastodon\Accounts; +use Friendica\App\Router; +use Friendica\DI; +use Friendica\Module\Api\Mastodon\Accounts\Statuses; use Friendica\Test\src\Module\Api\ApiTest; class StatusesTest extends ApiTest @@ -11,6 +14,8 @@ class StatusesTest extends ApiTest */ public function testApiStatusShowWithJson() { + self::markTestIncomplete('Needs Stastuses to not set header during call (like at BaseApi::setLinkHeader'); + // $result = api_status_show('json', 1); // self::assertStatus($result['status']); } @@ -20,6 +25,8 @@ class StatusesTest extends ApiTest */ public function testApiStatusShowWithXml() { + self::markTestIncomplete('Needs Stastuses to not set header during call (like at BaseApi::setLinkHeader'); + // $result = api_status_show('xml', 1); // self::assertXml($result, 'statuses'); } diff --git a/tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php b/tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php index 25611b245f..c627050808 100644 --- a/tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php +++ b/tests/src/Module/Api/Mastodon/Accounts/VerifyCredentialsTest.php @@ -2,6 +2,9 @@ namespace Friendica\Test\src\Module\Api\Mastodon\Accounts; +use Friendica\App\Router; +use Friendica\DI; +use Friendica\Module\Api\Mastodon\Accounts\VerifyCredentials; use Friendica\Test\src\Module\Api\ApiTest; class VerifyCredentialsTest extends ApiTest @@ -13,7 +16,18 @@ class VerifyCredentialsTest extends ApiTest */ public function testApiAccountVerifyCredentials() { - // self::assertArrayHasKey('user', api_account_verify_credentials('json')); + $verifyCredentials = new VerifyCredentials(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::GET]); + $response = $verifyCredentials->run(); + + $body = (string)$response->getBody(); + + self::assertJson($body); + + $json = json_decode($body); + + self::assertEquals(42, $json->id); + self::assertIsArray($json->emojis); + self::assertIsArray($json->fields); } /** @@ -23,6 +37,8 @@ class VerifyCredentialsTest extends ApiTest */ public function testApiAccountVerifyCredentialsWithoutAuthenticatedUser() { + self::markTestIncomplete('Needs dynamic BasicAuth first'); + // $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class); // BasicAuth::setCurrentUserID(); // $_SESSION['authenticated'] = false;