]> git.mxchange.org Git - friendica.git/commitdiff
Throw Not Found exception when $uid doesn't exist in Factory\Api\Twitter\User->create...
authorHypolite Petovan <hypolite@mrpetovan.com>
Sun, 25 Feb 2024 04:51:27 +0000 (23:51 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Tue, 27 Feb 2024 13:41:51 +0000 (08:41 -0500)
- Contact::getPublicIdByUserId() wrongly returns 0 when $uid doesn't exist, which is an existing albeit invalid record.

src/Factory/Api/Twitter/User.php
tests/src/Factory/Api/Twitter/UserTest.php

index 8fb31936065f17e3b25094a6bac0109f92ba78c1..8391dcc85fea17c0e6082c62f5b1f16fd2848050 100644 (file)
@@ -24,10 +24,9 @@ namespace Friendica\Factory\Api\Twitter;
 use Friendica\BaseFactory;
 use Friendica\Model\APContact;
 use Friendica\Model\Contact;
-use Friendica\Network\HTTPException;
-use Friendica\Factory\Api\Twitter\Status;
 use Friendica\Model\Item;
 use Friendica\Model\Post;
+use Friendica\Network\HTTPException;
 use Psr\Log\LoggerInterface;
 
 class User extends BaseFactory
@@ -85,9 +84,17 @@ class User extends BaseFactory
         * @param bool $include_user_entities
         *
         * @return \Friendica\Object\Api\Twitter\User
+        * @throws HTTPException\InternalServerErrorException
+        * @throws HTTPException\NotFoundException If the $uid doesn't exist
+        * @throws \ImagickException
         */
        public function createFromUserId(int $uid, bool $skip_status = true, bool $include_user_entities = true): \Friendica\Object\Api\Twitter\User
        {
-               return $this->createFromContactId(Contact::getPublicIdByUserId($uid), $uid, $skip_status, $include_user_entities);
+               $cid = Contact::getPublicIdByUserId($uid);
+               if (!$cid) {
+                       throw new HTTPException\NotFoundException();
+               }
+
+               return $this->createFromContactId($cid, $uid, $skip_status, $include_user_entities);
        }
 }
index 975aea3efe22dbe006f002b5509fabe16a225ca9..5ef30d8112f1ef27de82e16d13c884c6ef066077 100644 (file)
@@ -23,6 +23,7 @@ namespace Friendica\Test\src\Factory\Api\Twitter;
 
 use Friendica\DI;
 use Friendica\Factory\Api\Twitter\User;
+use Friendica\Network\HTTPException\NotFoundException;
 use Friendica\Test\FixtureTest;
 use Friendica\Test\src\Module\Api\ApiTest;
 
@@ -133,15 +134,11 @@ class UserTest extends FixtureTest
         */
        public function testApiGetUserWithWrongGetId()
        {
+               $this->expectException(NotFoundException::class);
+
                $user = (new User(DI::logger(), DI::twitterStatus()))
                        ->createFromUserId(-1)
                        ->toArray();
-
-               self::assertEquals(0, $user['id']);
-               self::assertEquals(0, $user['uid']);
-               self::assertEquals(0, $user['cid']);
-               self::assertEquals(0, $user['pid']);
-               self::assertEmpty($user['name']);
        }
 
        /**