. * */ namespace Friendica\Test\src\Core\Session; use Friendica\Core\Session\Model\UserSession; use Friendica\Core\Session\Type\ArraySession; use Friendica\Test\MockedTest; class UserSessionTest extends MockedTest { public function dataLocalUserId() { return [ 'standard' => [ 'data' => [ 'authenticated' => true, 'uid' => 21, ], 'expected' => 21, ], 'not_auth' => [ 'data' => [ 'authenticated' => false, 'uid' => 21, ], 'expected' => false, ], 'no_uid' => [ 'data' => [ 'authenticated' => true, ], 'expected' => false, ], 'no_auth' => [ 'data' => [ 'uid' => 21, ], 'expected' => false, ], 'invalid' => [ 'data' => [ 'authenticated' => false, 'uid' => 'test', ], 'expected' => false, ], ]; } /** * @dataProvider dataLocalUserId */ public function testGetLocalUserId(array $data, $expected) { $userSession = new UserSession(new ArraySession($data)); $this->assertEquals($expected, $userSession->getLocalUserId()); } public function testPublicContactId() { $this->markTestSkipped('Needs Contact::getIdForURL testable first'); } public function dataGetRemoteUserId() { return [ 'standard' => [ 'data' => [ 'authenticated' => true, 'visitor_id' => 21, ], 'expected' => 21, ], 'not_auth' => [ 'data' => [ 'authenticated' => false, 'visitor_id' => 21, ], 'expected' => false, ], 'no_visitor_id' => [ 'data' => [ 'authenticated' => true, ], 'expected' => false, ], 'no_auth' => [ 'data' => [ 'visitor_id' => 21, ], 'expected' => false, ], 'invalid' => [ 'data' => [ 'authenticated' => false, 'visitor_id' => 'test', ], 'expected' => false, ], ]; } /** * @dataProvider dataGetRemoteUserId */ public function testGetRemoteUserId(array $data, $expected) { $userSession = new UserSession(new ArraySession($data)); $this->assertEquals($expected, $userSession->getRemoteUserId()); } /// @fixme Add more data when Contact::getIdForUrl is a dynamic class public function dataGetRemoteContactId() { return [ 'remote_exists' => [ 'uid' => 1, 'data' => [ 'remote' => ['1' => '21'], ], 'expected' => 21, ], ]; } /** * @dataProvider dataGetRemoteContactId */ public function testGetRemoteContactId(int $uid, array $data, $expected) { $userSession = new UserSession(new ArraySession($data)); $this->assertEquals($expected, $userSession->getRemoteContactID($uid)); } public function dataGetUserIdForVisitorContactID() { return [ 'standard' => [ 'cid' => 21, 'data' => [ 'remote' => ['3' => '21'], ], 'expected' => 3, ], 'missing' => [ 'cid' => 2, 'data' => [ 'remote' => ['3' => '21'], ], 'expected' => false, ], 'empty' => [ 'cid' => 21, 'data' => [ ], 'expected' => false, ], ]; } /** @dataProvider dataGetUserIdForVisitorContactID */ public function testGetUserIdForVisitorContactID(int $cid, array $data, $expected) { $userSession = new UserSession(new ArraySession($data)); $this->assertEquals($expected, $userSession->getUserIDForVisitorContactID($cid)); } public function dataAuthenticated() { return [ 'authenticated' => [ 'data' => [ 'authenticated' => true, ], 'expected' => true, ], 'not_authenticated' => [ 'data' => [ 'authenticated' => false, ], 'expected' => false, ], 'missing' => [ 'data' => [ ], 'expected' => false, ], ]; } /** * @dataProvider dataAuthenticated */ public function testIsAuthenticated(array $data, $expected) { $userSession = new UserSession(new ArraySession($data)); $this->assertEquals($expected, $userSession->isAuthenticated()); } }