3 * @copyright Copyright (C) 2010-2022, the Friendica project
5 * @license GNU AGPL version 3 or any later version
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as
9 * published by the Free Software Foundation, either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 namespace Friendica\Test\src\Security;
24 use Friendica\Security\BasicAuth;
25 use Friendica\Test\src\Module\Api\ApiTest;
27 class BasicAuthTest extends ApiTest
30 * Test the api_source() function.
34 public function testApiSource()
36 self::assertEquals('api', BasicAuth::getCurrentApplicationToken()['name']);
40 * Test the api_source() function with a Twidere user agent.
44 public function testApiSourceWithTwidere()
46 $_SERVER['HTTP_USER_AGENT'] = 'Twidere';
47 self::assertEquals('Twidere', BasicAuth::getCurrentApplicationToken()['name']);
51 * Test the api_source() function with a GET parameter.
55 public function testApiSourceWithGet()
57 $_REQUEST['source'] = 'source_name';
58 self::assertEquals('source_name', BasicAuth::getCurrentApplicationToken()['name']);
62 * Test the BasicAuth::getCurrentUserID() function without any login.
64 public function testApiLoginWithoutLogin()
66 self::markTestIncomplete('Needs Refactoring of BasicAuth first.');
68 BasicAuth::setCurrentUserID();
69 $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
70 BasicAuth::getCurrentUserID(true);
75 * Test the BasicAuth::getCurrentUserID() function with a bad login.
77 public function testApiLoginWithBadLogin()
79 self::markTestIncomplete('Needs Refactoring of BasicAuth first.');
81 BasicAuth::setCurrentUserID();
82 $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
83 $_SERVER['PHP_AUTH_USER'] = 'user@server';
84 BasicAuth::getCurrentUserID(true);
89 * Test the BasicAuth::getCurrentUserID() function with a correct login.
91 public function testApiLoginWithCorrectLogin()
93 BasicAuth::setCurrentUserID();
94 $_SERVER['PHP_AUTH_USER'] = 'Test user';
95 $_SERVER['PHP_AUTH_PW'] = 'password';
96 self::assertEquals(parent::SELF_USER['id'], BasicAuth::getCurrentUserID(true));
100 * Test the BasicAuth::getCurrentUserID() function with a remote user.
102 public function testApiLoginWithRemoteUser()
104 self::markTestIncomplete('Needs Refactoring of BasicAuth first.');
106 BasicAuth::setCurrentUserID();
107 $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
108 $_SERVER['REDIRECT_REMOTE_USER'] = '123456dXNlcjpwYXNzd29yZA==';
109 BasicAuth::getCurrentUserID(true);