Make API testable & move PhotoAlbum tests to new destination
This commit is contained in:
parent
a0c5c91886
commit
e477cf215d
10 changed files with 174 additions and 96 deletions
|
@ -44,7 +44,7 @@ class Delete extends BaseApi
|
||||||
|
|
||||||
// do several checks on input parameters
|
// do several checks on input parameters
|
||||||
// we do not allow calls without photo id
|
// we do not allow calls without photo id
|
||||||
if ($request['photo_id'] == null) {
|
if (empty($request['photo_id'])) {
|
||||||
throw new BadRequestException("no photo_id specified");
|
throw new BadRequestException("no photo_id specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,10 +43,10 @@ class Update extends BaseApi
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// we do not allow calls without album string
|
// we do not allow calls without album string
|
||||||
if ($request['album'] == "") {
|
if (empty($request['album'])) {
|
||||||
throw new BadRequestException("no albumname specified");
|
throw new BadRequestException("no albumname specified");
|
||||||
}
|
}
|
||||||
if ($request['album_new'] == "") {
|
if (empty($request['album_new'])) {
|
||||||
throw new BadRequestException("no new albumname specified");
|
throw new BadRequestException("no new albumname specified");
|
||||||
}
|
}
|
||||||
// check if album is existing
|
// check if album is existing
|
||||||
|
|
|
@ -65,6 +65,18 @@ class Authentication
|
||||||
/** @var IManagePersonalConfigValues */
|
/** @var IManagePersonalConfigValues */
|
||||||
private $pConfig;
|
private $pConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the X-Account-Management-Status header
|
||||||
|
*
|
||||||
|
* mainly extracted to make it overridable for tests
|
||||||
|
*
|
||||||
|
* @param array $user_record
|
||||||
|
*/
|
||||||
|
protected function setXAccMgmtStatusHeader(array $user_record)
|
||||||
|
{
|
||||||
|
header('X-Account-Management-Status: active; name="' . $user_record['username'] . '"; id="' . $user_record['nickname'] . '"');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authentication constructor.
|
* Authentication constructor.
|
||||||
*
|
*
|
||||||
|
@ -314,7 +326,7 @@ class Authentication
|
||||||
$this->session->set('cid', $contact['id']);
|
$this->session->set('cid', $contact['id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
header('X-Account-Management-Status: active; name="' . $user_record['username'] . '"; id="' . $user_record['nickname'] . '"');
|
$this->setXAccMgmtStatusHeader($user_record);
|
||||||
|
|
||||||
if ($login_initial || $login_refresh) {
|
if ($login_initial || $login_refresh) {
|
||||||
$this->dba->update('user', ['login_date' => DateTimeFormat::utcNow()], ['uid' => $user_record['uid']]);
|
$this->dba->update('user', ['login_date' => DateTimeFormat::utcNow()], ['uid' => $user_record['uid']]);
|
||||||
|
|
13
tests/Util/AuthenticationDouble.php
Normal file
13
tests/Util/AuthenticationDouble.php
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Test\Util;
|
||||||
|
|
||||||
|
use Friendica\Security\Authentication;
|
||||||
|
|
||||||
|
class AuthenticationDouble extends Authentication
|
||||||
|
{
|
||||||
|
protected function setXAccMgmtStatusHeader(array $user_record)
|
||||||
|
{
|
||||||
|
// Don't set any header..
|
||||||
|
}
|
||||||
|
}
|
21
tests/Util/authtest/authtest.php
Normal file
21
tests/Util/authtest/authtest.php
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Name: TEST-ADDON: Authentication "allow all"
|
||||||
|
* Description: For testing purpose only
|
||||||
|
* Version: 1.0
|
||||||
|
* Author: Philipp Holzer <admin@philipp.info>
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Friendica\Core\Hook;
|
||||||
|
use Friendica\Model\User;
|
||||||
|
|
||||||
|
function authtest_install()
|
||||||
|
{
|
||||||
|
Hook::register('authenticate', 'tests/Util/authtest/authtest.php', 'authtest_authenticate');
|
||||||
|
}
|
||||||
|
|
||||||
|
function authtest_authenticate($a,&$b)
|
||||||
|
{
|
||||||
|
$b['authenticated'] = 1;
|
||||||
|
$b['user_record'] = User::getById(42);
|
||||||
|
}
|
|
@ -3178,97 +3178,6 @@ class ApiTest extends FixtureTest
|
||||||
$this->markTestIncomplete('exit() kills phpunit as well');
|
$this->markTestIncomplete('exit() kills phpunit as well');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the api_fr_photoalbum_delete() function.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testApiFrPhotoalbumDelete()
|
|
||||||
{
|
|
||||||
// $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
|
|
||||||
// api_fr_photoalbum_delete('json');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the api_fr_photoalbum_delete() function with an album name.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testApiFrPhotoalbumDeleteWithAlbum()
|
|
||||||
{
|
|
||||||
// $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
|
|
||||||
// $_REQUEST['album'] = 'album_name';
|
|
||||||
// api_fr_photoalbum_delete('json');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the api_fr_photoalbum_delete() function with an album name.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testApiFrPhotoalbumDeleteWithValidAlbum()
|
|
||||||
{
|
|
||||||
$this->markTestIncomplete('We need to add a dataset for this.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the api_fr_photoalbum_delete() function.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testApiFrPhotoalbumUpdate()
|
|
||||||
{
|
|
||||||
// $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
|
|
||||||
// api_fr_photoalbum_update('json');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the api_fr_photoalbum_delete() function with an album name.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testApiFrPhotoalbumUpdateWithAlbum()
|
|
||||||
{
|
|
||||||
// $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
|
|
||||||
// $_REQUEST['album'] = 'album_name';
|
|
||||||
// api_fr_photoalbum_update('json');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the api_fr_photoalbum_delete() function with an album name.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testApiFrPhotoalbumUpdateWithAlbumAndNewAlbum()
|
|
||||||
{
|
|
||||||
// $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
|
|
||||||
// $_REQUEST['album'] = 'album_name';
|
|
||||||
// $_REQUEST['album_new'] = 'album_name';
|
|
||||||
// api_fr_photoalbum_update('json');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the api_fr_photoalbum_update() function without an authenticated user.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testApiFrPhotoalbumUpdateWithoutAuthenticatedUser()
|
|
||||||
{
|
|
||||||
// $this->expectException(\Friendica\Network\HTTPException\ForbiddenException::class);
|
|
||||||
// $_SESSION['authenticated'] = false;
|
|
||||||
// api_fr_photoalbum_update('json');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Test the api_fr_photoalbum_delete() function with an album name.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function testApiFrPhotoalbumUpdateWithValidAlbum()
|
|
||||||
{
|
|
||||||
$this->markTestIncomplete('We need to add a dataset for this.');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test the api_fr_photos_list() function.
|
* Test the api_fr_photos_list() function.
|
||||||
*
|
*
|
||||||
|
|
58
tests/src/Module/Api/ApiTest.php
Normal file
58
tests/src/Module/Api/ApiTest.php
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Test\src\Module\Api;
|
||||||
|
|
||||||
|
use Dice\Dice;
|
||||||
|
use Friendica\Core\Addon;
|
||||||
|
use Friendica\Core\Hook;
|
||||||
|
use Friendica\Database\Database;
|
||||||
|
use Friendica\DI;
|
||||||
|
use Friendica\Security\Authentication;
|
||||||
|
use Friendica\Test\FixtureTest;
|
||||||
|
use Friendica\Test\Util\AuthenticationDouble;
|
||||||
|
|
||||||
|
class ApiTest extends FixtureTest
|
||||||
|
{
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
parent::setUp(); // TODO: Change the autogenerated stub
|
||||||
|
|
||||||
|
$this->dice = $this->dice
|
||||||
|
->addRule(Authentication::class, ['instanceOf' => AuthenticationDouble::class, 'shared' => true]);
|
||||||
|
DI::init($this->dice);
|
||||||
|
|
||||||
|
$this->installAuthTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* installs auththest.
|
||||||
|
*
|
||||||
|
* @throws \Exception
|
||||||
|
*/
|
||||||
|
public function installAuthTest()
|
||||||
|
{
|
||||||
|
$addon = 'authtest';
|
||||||
|
$addon_file_path = __DIR__ . '/../../../Util/authtest/authtest.php';
|
||||||
|
$t = @filemtime($addon_file_path);
|
||||||
|
|
||||||
|
@include_once($addon_file_path);
|
||||||
|
if (function_exists($addon . '_install')) {
|
||||||
|
$func = $addon . '_install';
|
||||||
|
$func(DI::app());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @var Database $dba */
|
||||||
|
$dba = $this->dice->create(Database::class);
|
||||||
|
|
||||||
|
$dba->insert('addon', [
|
||||||
|
'name' => $addon,
|
||||||
|
'installed' => true,
|
||||||
|
'timestamp' => $t,
|
||||||
|
'plugin_admin' => function_exists($addon . '_addon_admin'),
|
||||||
|
'hidden' => file_exists('addon/' . $addon . '/.hidden')
|
||||||
|
]);
|
||||||
|
|
||||||
|
Addon::loadAddons();
|
||||||
|
Hook::loadHooks();
|
||||||
|
}
|
||||||
|
}
|
27
tests/src/Module/Api/Friendica/Photo/DeleteTest.php
Normal file
27
tests/src/Module/Api/Friendica/Photo/DeleteTest.php
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Test\src\Module\Api\Friendica\Photo;
|
||||||
|
|
||||||
|
use Friendica\Module\Api\Friendica\Photoalbum\Delete;
|
||||||
|
use Friendica\Network\HTTPException\BadRequestException;
|
||||||
|
use Friendica\Test\src\Module\Api\ApiTest;
|
||||||
|
|
||||||
|
class DeleteTest extends ApiTest
|
||||||
|
{
|
||||||
|
public function testEmpty()
|
||||||
|
{
|
||||||
|
self::expectException(BadRequestException::class);
|
||||||
|
Delete::rawContent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testWrong()
|
||||||
|
{
|
||||||
|
self::expectException(BadRequestException::class);
|
||||||
|
Delete::rawContent(['album' => 'album_name']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testValid()
|
||||||
|
{
|
||||||
|
self::markTestIncomplete('We need to add a dataset for this.');
|
||||||
|
}
|
||||||
|
}
|
38
tests/src/Module/Api/Friendica/Photo/UpdateTest.php
Normal file
38
tests/src/Module/Api/Friendica/Photo/UpdateTest.php
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Friendica\Test\src\Module\Api\Friendica\Photo;
|
||||||
|
|
||||||
|
use Friendica\Module\Api\Friendica\Photoalbum\Update;
|
||||||
|
use Friendica\Network\HTTPException\BadRequestException;
|
||||||
|
use Friendica\Test\src\Module\Api\ApiTest;
|
||||||
|
|
||||||
|
class UpdateTest extends ApiTest
|
||||||
|
{
|
||||||
|
public function testEmpty()
|
||||||
|
{
|
||||||
|
self::expectException(BadRequestException::class);
|
||||||
|
Update::rawContent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testTooFewArgs()
|
||||||
|
{
|
||||||
|
self::expectException(BadRequestException::class);
|
||||||
|
Update::rawContent(['album' => 'album_name']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testWrongUpdate()
|
||||||
|
{
|
||||||
|
self::expectException(BadRequestException::class);
|
||||||
|
Update::rawContent(['album' => 'album_name', 'album_new' => 'album_name']);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateWithoutAuthenticatedUser()
|
||||||
|
{
|
||||||
|
self::markTestIncomplete('Needs BasicAuth as dynamic method for overriding first');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testValid()
|
||||||
|
{
|
||||||
|
self::markTestIncomplete('We need to add a dataset for this.');
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue