--- /dev/null
+<?php
+
+namespace Friendica\Test\Util;
+
+class AuthTestConfig
+{
+ /** @var bool */
+ public static $authenticated = true;
+ /** @var int */
+ public static $user_id = 42;
+}
function authtest_authenticate($a,&$b)
{
- $b['authenticated'] = 1;
- $b['user_record'] = User::getById(42);
+ $b['authenticated'] = \Friendica\Test\Util\AuthTestConfig::$authenticated;
+ $b['user_record'] = User::getById(\Friendica\Test\Util\AuthTestConfig::$user_id);
}
// We could probably do more checks here.
}
- /**
- * Get the path to a temporary empty PNG image.
- *
- * @return string Path
- */
- private function getTempImage()
- {
- $tmpFile = tempnam(sys_get_temp_dir(), 'tmp_file');
- file_put_contents(
- $tmpFile,
- base64_decode(
- // Empty 1x1 px PNG image
- 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg=='
- )
- );
-
- return $tmpFile;
- }
-
/**
* Test the api_user() function.
*
$this->markTestIncomplete();
}
- /**
- * Test the \Friendica\Module\Api\Twitter\Media\Upload module.
- * @runInSeparateProcess
- * @preserveGlobalState disabled
- */
- public function testApiMediaUpload()
- {
- $this->expectException(\Friendica\Network\HTTPException\BadRequestException::class);
- $_SERVER['REQUEST_METHOD'] = Router::POST;
- (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), $_SERVER))->run();
- }
-
- /**
- * Test the \Friendica\Module\Api\Twitter\Media\Upload module without an authenticated user.
- *
- * @return void
- */
- public function testApiMediaUploadWithoutAuthenticatedUser()
- {
- $this->expectException(\Friendica\Network\HTTPException\UnauthorizedException::class);
- BasicAuth::setCurrentUserID();
- $_SESSION['authenticated'] = false;
- $_SERVER['REQUEST_METHOD'] = Router::POST;
- (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), $_SERVER))->run();
- }
-
- /**
- * Test the \Friendica\Module\Api\Twitter\Media\Upload module with an invalid uploaded media.
- *
- * @return void
- */
- public function testApiMediaUploadWithMedia()
- {
- $this->expectException(\Friendica\Network\HTTPException\InternalServerErrorException::class);
- $_FILES = [
- 'media' => [
- 'id' => 666,
- 'tmp_name' => 'tmp_name'
- ]
- ];
- $_SERVER['REQUEST_METHOD'] = Router::POST;
- (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), $_SERVER))->run();
- }
-
- /**
- * Test the \Friendica\Module\Api\Twitter\Media\Upload module with an valid uploaded media.
- *
- * @return void
- */
- public function testApiMediaUploadWithValidMedia()
- {
- $_FILES = [
- 'media' => [
- 'id' => 666,
- 'size' => 666,
- 'width' => 666,
- 'height' => 666,
- 'tmp_name' => $this->getTempImage(),
- 'name' => 'spacer.png',
- 'type' => 'image/png'
- ]
- ];
-
- $_SERVER['REQUEST_METHOD'] = Router::POST;
-
- $response = (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), $_SERVER))->run();
- $media = json_decode($response->getBody(), true);
- self::assertEquals('image/png', $media['image']['image_type']);
- self::assertEquals(1, $media['image']['w']);
- self::assertEquals(1, $media['image']['h']);
- self::assertNotEmpty($media['image']['friendica_preview_url']);
- }
/**
* Test the api_statuses_repeat() function.
use Friendica\Database\Database;
use Friendica\DI;
use Friendica\Security\Authentication;
+use Friendica\Security\BasicAuth;
use Friendica\Test\FixtureTest;
use Friendica\Test\Util\AppDouble;
use Friendica\Test\Util\AuthenticationDouble;
+use Friendica\Test\Util\AuthTestConfig;
abstract class ApiTest extends FixtureTest
{
// Manual override to bypass API authentication
DI::app()->setIsLoggedIn(true);
+ AuthTestConfig::$authenticated = true;
+ AuthTestConfig::$user_id = 42;
+
$this->installAuthTest();
}
+ protected function tearDown(): void
+ {
+ BasicAuth::setCurrentUserID();
+
+ parent::tearDown(); // TODO: Change the autogenerated stub
+ }
+
/**
* installs auththest.
*
--- /dev/null
+<?php
+
+namespace Friendica\Test\src\Module\Api\Twitter\Media;
+
+use Friendica\App\Router;
+use Friendica\DI;
+use Friendica\Module\Api\Twitter\Media\Upload;
+use Friendica\Network\HTTPException\BadRequestException;
+use Friendica\Network\HTTPException\InternalServerErrorException;
+use Friendica\Network\HTTPException\UnauthorizedException;
+use Friendica\Test\src\Module\Api\ApiTest;
+use Friendica\Test\Util\AuthTestConfig;
+
+class UploadTest extends ApiTest
+{
+ /**
+ * Test the \Friendica\Module\Api\Twitter\Media\Upload module.
+ */
+ public function testApiMediaUpload()
+ {
+ $this->expectException(BadRequestException::class);
+ $upload = new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]);
+ $upload->run();
+ }
+
+ /**
+ * Test the \Friendica\Module\Api\Twitter\Media\Upload module without an authenticated user.
+ *
+ * @return void
+ */
+ public function testApiMediaUploadWithoutAuthenticatedUser()
+ {
+ $this->expectException(UnauthorizedException::class);
+ AuthTestConfig::$authenticated = false;
+ (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))->run();
+ }
+
+ /**
+ * Test the \Friendica\Module\Api\Twitter\Media\Upload module with an invalid uploaded media.
+ *
+ * @return void
+ */
+ public function testApiMediaUploadWithMedia()
+ {
+ $this->expectException(InternalServerErrorException::class);
+ $_FILES = [
+ 'media' => [
+ 'id' => 666,
+ 'tmp_name' => 'tmp_name'
+ ]
+ ];
+ (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))->run();
+ }
+
+ /**
+ * Test the \Friendica\Module\Api\Twitter\Media\Upload module with an valid uploaded media.
+ *
+ * @return void
+ */
+ public function testApiMediaUploadWithValidMedia()
+ {
+ $_FILES = [
+ 'media' => [
+ 'id' => 666,
+ 'size' => 666,
+ 'width' => 666,
+ 'height' => 666,
+ 'tmp_name' => $this->getTempImage(),
+ 'name' => 'spacer.png',
+ 'type' => 'image/png'
+ ]
+ ];
+
+ $response = (new Upload(DI::app(), DI::l10n(), DI::baseUrl(), DI::args(), DI::logger(), DI::profiler(), DI::apiResponse(), ['REQUEST_METHOD' => Router::POST]))->run();
+ $media = json_decode($response->getBody(), true);
+
+ self::assertEquals('image/png', $media['image']['image_type']);
+ self::assertEquals(1, $media['image']['w']);
+ self::assertEquals(1, $media['image']['h']);
+ self::assertNotEmpty($media['image']['friendica_preview_url']);
+ }
+
+ /**
+ * Get the path to a temporary empty PNG image.
+ *
+ * @return string Path
+ */
+ private function getTempImage()
+ {
+ $tmpFile = tempnam(sys_get_temp_dir(), 'tmp_file');
+ file_put_contents(
+ $tmpFile,
+ base64_decode(
+ // Empty 1x1 px PNG image
+ 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg=='
+ )
+ );
+
+ return $tmpFile;
+ }
+}