From 529974539e5f483e727c99706ff92c6f803c0922 Mon Sep 17 00:00:00 2001 From: Tim Korn Date: Wed, 28 Feb 2024 21:16:01 +0100 Subject: [PATCH 1/7] Reintroduce code coverage report --- .gitignore | 4 ++-- .php-cs-fixer.php | 9 +++++++- README.md | 14 +++++++++-- composer.json | 8 +++---- phpunit.xml.dist | 23 ++++++++++++++++--- src/Util/ParamsIterator.php | 2 -- tests/BigBlueButtonTest.php | 2 -- .../CreateMeetingParametersTest.php | 2 +- .../DeleteRecordingsParametersTest.php | 2 +- tests/Parameters/EndMeetingParametersTest.php | 2 +- .../GetMeetingInfoParametersTest.php | 2 +- .../GetRecordingTextTracksParametersTest.php | 2 +- .../GetRecordingsParametersTest.php | 2 +- .../Parameters/HooksCreateParametersTest.php | 2 +- .../Parameters/HooksDestroyParametersTest.php | 2 +- .../InsertDocumentParametersTest.php | 2 +- .../IsMeetingRunningParametersTest.php | 2 +- .../Parameters/JoinMeetingParametersTest.php | 2 +- .../PublishRecordingsParametersTest.php | 2 +- .../PutRecordingTextTrackParametersTest.php | 2 +- .../UpdateRecordingsParametersTest.php | 2 +- tests/Responses/CreateMeetingResponseTest.php | 2 -- .../DeleteRecordingsResponseTest.php | 2 -- tests/Responses/EndMeetingResponseTest.php | 2 -- .../Responses/GetMeetingInfoResponseTest.php | 2 -- tests/Responses/GetMeetingsResponseTest.php | 2 -- tests/Responses/GetRecordingsResponseTest.php | 2 -- .../GetRecordingsTextTracksResponseTest.php | 2 -- tests/Responses/HooksCreateResponseTest.php | 2 -- tests/Responses/HooksDestroyResponseTest.php | 2 -- tests/Responses/HooksListResponseTest.php | 2 -- .../Responses/InsertDocumentResponseTest.php | 2 -- .../IsMeetingRunningResponseTest.php | 2 -- tests/Responses/JoinMeetingResponseTest.php | 2 -- .../PublishRecordingsResponseTest.php | 2 -- .../UpdateRecordingsResponseTest.php | 2 -- tests/TestCase.php | 2 -- 37 files changed, 60 insertions(+), 62 deletions(-) diff --git a/.gitignore b/.gitignore index d76f53ca..119f647e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ composer.phar /vendor/ +/var/ composer.lock .DS_Store @@ -13,5 +14,4 @@ composer.lock # PHP CS Fixer cache file .php-cs-fixer.cache -.phpunit.result.cache -coverage/ \ No newline at end of file +.phpunit.result.cache \ No newline at end of file diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php index 380aa9df..555efe4b 100644 --- a/.php-cs-fixer.php +++ b/.php-cs-fixer.php @@ -48,6 +48,8 @@ ->in(__DIR__ . '/tests') ; +// see rules: https://mlocati.github.io/php-cs-fixer-configurator/#version:3.8 + $config = new Config(); $config ->setRiskyAllowed(true) @@ -62,8 +64,13 @@ 'single_quote' => true, 'mb_str_functions' => true, 'array_syntax' => ['syntax' => 'short'], - 'binary_operator_spaces' => ['operators' => ['=>' => 'align_single_space_minimal', '=' => 'align_single_space_minimal'], + 'binary_operator_spaces' => [ + 'operators' => [ + '=>' => 'align_single_space_minimal', + '=' => 'align_single_space_minimal', + ], ], + 'php_unit_test_class_requires_covers' => false, ]) ->setFinder($finder) ; diff --git a/README.md b/README.md index 2b3f0b22..2e5fbc66 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ For every implemented feature add unit tests and check all is green by running t ```bash # using an alias -$ composer test +$ composer code-test # or the same w/o alias ./vendor/bin/phpunit @@ -67,11 +67,21 @@ To run a single test ```bash # using an alias -$ composer test -- --filter BigBlueButtonTest::testApiVersion +$ composer code-test -- --filter BigBlueButtonTest::testApiVersion # or the same w/o alias ./vendor/bin/phpunit --filter BigBlueButtonTest::testApiVersion ``` +A code-coverage report will be created along with the tests. This report will be stored in: +```` +./var/coverage/ +```` +In case of trouble with the creation of the code-coverage report (e.g. local environment does not fulfill requirements) +the creation can be skipped with: +```bash +# using an alias +$ composer code-test -- --no-coverage +``` **Remark:** diff --git a/composer.json b/composer.json index 93e75200..c199a66a 100644 --- a/composer.json +++ b/composer.json @@ -7,7 +7,7 @@ "bbb", "api" ], - "homepage": "http://bigbluebutton.org/", + "homepage": "https://bigbluebutton.org/", "license": "LGPL-3.0-or-later", "authors": [ { @@ -42,12 +42,12 @@ "wapmorgan/php-deprecation-detector": "^2.0.33", "phpstan/phpstan": "^1.10", "tracy/tracy": "^2.10", - "vlucas/phpdotenv": "^5.6" + "vlucas/phpdotenv": "^5.6", + "phpunit/php-code-coverage": "9.2.30" }, "scripts": { "code-check": "./vendor/bin/phpstan analyse", - "test": "./vendor/bin/phpunit", - "test-cov": "XDEBUG_MODE=coverage ./vendor/bin/phpunit --coverage-html coverage", + "code-test": "./vendor/bin/phpunit", "cs-fix": "PHP_CS_FIXER_IGNORE_ENV=1 ./vendor/bin/php-cs-fixer fix --allow-risky yes", "sniffer": "./vendor/bin/phpcs src/", "phploc": "./vendor/bin/phploc src/", diff --git a/phpunit.xml.dist b/phpunit.xml.dist index e4325283..3ff1c0ea 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,16 +1,33 @@ - + - ./src/ + src + + + - ./tests/ + tests diff --git a/src/Util/ParamsIterator.php b/src/Util/ParamsIterator.php index 59ba1d3d..e1b6859d 100644 --- a/src/Util/ParamsIterator.php +++ b/src/Util/ParamsIterator.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class ParamsIterator extends TestCase { diff --git a/tests/BigBlueButtonTest.php b/tests/BigBlueButtonTest.php index 434fc5de..f5f3c8d5 100644 --- a/tests/BigBlueButtonTest.php +++ b/tests/BigBlueButtonTest.php @@ -35,8 +35,6 @@ * Class BigBlueButtonTest. * * @internal - * - * @coversNothing */ class BigBlueButtonTest extends TestCase { diff --git a/tests/Parameters/CreateMeetingParametersTest.php b/tests/Parameters/CreateMeetingParametersTest.php index f6f565c5..25e0d716 100644 --- a/tests/Parameters/CreateMeetingParametersTest.php +++ b/tests/Parameters/CreateMeetingParametersTest.php @@ -27,7 +27,7 @@ * * @internal * - * @coversNothing + * */ class CreateMeetingParametersTest extends TestCase { diff --git a/tests/Parameters/DeleteRecordingsParametersTest.php b/tests/Parameters/DeleteRecordingsParametersTest.php index 852d5b30..0ec07e15 100644 --- a/tests/Parameters/DeleteRecordingsParametersTest.php +++ b/tests/Parameters/DeleteRecordingsParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class DeleteRecordingsParametersTest extends TestCase { diff --git a/tests/Parameters/EndMeetingParametersTest.php b/tests/Parameters/EndMeetingParametersTest.php index b9b3f4f6..89372bdd 100644 --- a/tests/Parameters/EndMeetingParametersTest.php +++ b/tests/Parameters/EndMeetingParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class EndMeetingParametersTest extends TestCase { diff --git a/tests/Parameters/GetMeetingInfoParametersTest.php b/tests/Parameters/GetMeetingInfoParametersTest.php index fe9e434e..633f107a 100644 --- a/tests/Parameters/GetMeetingInfoParametersTest.php +++ b/tests/Parameters/GetMeetingInfoParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class GetMeetingInfoParametersTest extends TestCase { diff --git a/tests/Parameters/GetRecordingTextTracksParametersTest.php b/tests/Parameters/GetRecordingTextTracksParametersTest.php index 2f860de9..47f8b67c 100644 --- a/tests/Parameters/GetRecordingTextTracksParametersTest.php +++ b/tests/Parameters/GetRecordingTextTracksParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class GetRecordingTextTracksParametersTest extends TestCase { diff --git a/tests/Parameters/GetRecordingsParametersTest.php b/tests/Parameters/GetRecordingsParametersTest.php index 9557cb90..dd288d7b 100644 --- a/tests/Parameters/GetRecordingsParametersTest.php +++ b/tests/Parameters/GetRecordingsParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class GetRecordingsParametersTest extends TestCase { diff --git a/tests/Parameters/HooksCreateParametersTest.php b/tests/Parameters/HooksCreateParametersTest.php index 55ffbaef..b2205e7a 100644 --- a/tests/Parameters/HooksCreateParametersTest.php +++ b/tests/Parameters/HooksCreateParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class HooksCreateParametersTest extends TestCase { diff --git a/tests/Parameters/HooksDestroyParametersTest.php b/tests/Parameters/HooksDestroyParametersTest.php index c648e8c1..82b5445e 100644 --- a/tests/Parameters/HooksDestroyParametersTest.php +++ b/tests/Parameters/HooksDestroyParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class HooksDestroyParametersTest extends TestCase { diff --git a/tests/Parameters/InsertDocumentParametersTest.php b/tests/Parameters/InsertDocumentParametersTest.php index 93e8f27c..3b4207c7 100644 --- a/tests/Parameters/InsertDocumentParametersTest.php +++ b/tests/Parameters/InsertDocumentParametersTest.php @@ -27,7 +27,7 @@ /** * @internal * - * @coversNothing + * */ final class InsertDocumentParametersTest extends TestCase { diff --git a/tests/Parameters/IsMeetingRunningParametersTest.php b/tests/Parameters/IsMeetingRunningParametersTest.php index a819bac5..13dbb1c9 100644 --- a/tests/Parameters/IsMeetingRunningParametersTest.php +++ b/tests/Parameters/IsMeetingRunningParametersTest.php @@ -27,7 +27,7 @@ * * @internal * - * @coversNothing + * */ class IsMeetingRunningParametersTest extends TestCase { diff --git a/tests/Parameters/JoinMeetingParametersTest.php b/tests/Parameters/JoinMeetingParametersTest.php index 26be129e..31f97bc8 100644 --- a/tests/Parameters/JoinMeetingParametersTest.php +++ b/tests/Parameters/JoinMeetingParametersTest.php @@ -27,7 +27,7 @@ /** * @internal * - * @coversNothing + * */ class JoinMeetingParametersTest extends TestCase { diff --git a/tests/Parameters/PublishRecordingsParametersTest.php b/tests/Parameters/PublishRecordingsParametersTest.php index 65779ee8..cfea4a5f 100644 --- a/tests/Parameters/PublishRecordingsParametersTest.php +++ b/tests/Parameters/PublishRecordingsParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class PublishRecordingsParametersTest extends TestCase { diff --git a/tests/Parameters/PutRecordingTextTrackParametersTest.php b/tests/Parameters/PutRecordingTextTrackParametersTest.php index 059f93e5..bc188650 100644 --- a/tests/Parameters/PutRecordingTextTrackParametersTest.php +++ b/tests/Parameters/PutRecordingTextTrackParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class PutRecordingTextTrackParametersTest extends TestCase { diff --git a/tests/Parameters/UpdateRecordingsParametersTest.php b/tests/Parameters/UpdateRecordingsParametersTest.php index 06d59297..d10a1230 100644 --- a/tests/Parameters/UpdateRecordingsParametersTest.php +++ b/tests/Parameters/UpdateRecordingsParametersTest.php @@ -25,7 +25,7 @@ /** * @internal * - * @coversNothing + * */ class UpdateRecordingsParametersTest extends TestCase { diff --git a/tests/Responses/CreateMeetingResponseTest.php b/tests/Responses/CreateMeetingResponseTest.php index b552baab..341e87e4 100644 --- a/tests/Responses/CreateMeetingResponseTest.php +++ b/tests/Responses/CreateMeetingResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class CreateMeetingResponseTest extends TestCase { diff --git a/tests/Responses/DeleteRecordingsResponseTest.php b/tests/Responses/DeleteRecordingsResponseTest.php index 85ecd8c0..df9682bc 100644 --- a/tests/Responses/DeleteRecordingsResponseTest.php +++ b/tests/Responses/DeleteRecordingsResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class DeleteRecordingsResponseTest extends TestCase { diff --git a/tests/Responses/EndMeetingResponseTest.php b/tests/Responses/EndMeetingResponseTest.php index b0dbed91..6748eb8c 100644 --- a/tests/Responses/EndMeetingResponseTest.php +++ b/tests/Responses/EndMeetingResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class EndMeetingResponseTest extends TestCase { diff --git a/tests/Responses/GetMeetingInfoResponseTest.php b/tests/Responses/GetMeetingInfoResponseTest.php index b2c04e10..c394956d 100644 --- a/tests/Responses/GetMeetingInfoResponseTest.php +++ b/tests/Responses/GetMeetingInfoResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class GetMeetingInfoResponseTest extends TestCase { diff --git a/tests/Responses/GetMeetingsResponseTest.php b/tests/Responses/GetMeetingsResponseTest.php index abc1f56c..21aec51b 100644 --- a/tests/Responses/GetMeetingsResponseTest.php +++ b/tests/Responses/GetMeetingsResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class GetMeetingsResponseTest extends TestCase { diff --git a/tests/Responses/GetRecordingsResponseTest.php b/tests/Responses/GetRecordingsResponseTest.php index 0c612bde..37ee4778 100644 --- a/tests/Responses/GetRecordingsResponseTest.php +++ b/tests/Responses/GetRecordingsResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class GetRecordingsResponseTest extends TestCase { diff --git a/tests/Responses/GetRecordingsTextTracksResponseTest.php b/tests/Responses/GetRecordingsTextTracksResponseTest.php index 5bdca3c2..cf39a417 100644 --- a/tests/Responses/GetRecordingsTextTracksResponseTest.php +++ b/tests/Responses/GetRecordingsTextTracksResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class GetRecordingsTextTracksResponseTest extends TestCase { diff --git a/tests/Responses/HooksCreateResponseTest.php b/tests/Responses/HooksCreateResponseTest.php index 4deae4fc..dd46ba80 100644 --- a/tests/Responses/HooksCreateResponseTest.php +++ b/tests/Responses/HooksCreateResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class HooksCreateResponseTest extends TestCase { diff --git a/tests/Responses/HooksDestroyResponseTest.php b/tests/Responses/HooksDestroyResponseTest.php index 4f6e11c3..f1be4ead 100644 --- a/tests/Responses/HooksDestroyResponseTest.php +++ b/tests/Responses/HooksDestroyResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class HooksDestroyResponseTest extends TestCase { diff --git a/tests/Responses/HooksListResponseTest.php b/tests/Responses/HooksListResponseTest.php index 1b13517e..30dbbf11 100644 --- a/tests/Responses/HooksListResponseTest.php +++ b/tests/Responses/HooksListResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class HooksListResponseTest extends TestCase { diff --git a/tests/Responses/InsertDocumentResponseTest.php b/tests/Responses/InsertDocumentResponseTest.php index bbbf00e0..7bbbae18 100644 --- a/tests/Responses/InsertDocumentResponseTest.php +++ b/tests/Responses/InsertDocumentResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class InsertDocumentResponseTest extends TestCase { diff --git a/tests/Responses/IsMeetingRunningResponseTest.php b/tests/Responses/IsMeetingRunningResponseTest.php index 46760ccb..f3447925 100644 --- a/tests/Responses/IsMeetingRunningResponseTest.php +++ b/tests/Responses/IsMeetingRunningResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class IsMeetingRunningResponseTest extends TestCase { diff --git a/tests/Responses/JoinMeetingResponseTest.php b/tests/Responses/JoinMeetingResponseTest.php index dec7f6a4..e775eab5 100644 --- a/tests/Responses/JoinMeetingResponseTest.php +++ b/tests/Responses/JoinMeetingResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class JoinMeetingResponseTest extends TestCase { diff --git a/tests/Responses/PublishRecordingsResponseTest.php b/tests/Responses/PublishRecordingsResponseTest.php index 67307215..04a18d47 100644 --- a/tests/Responses/PublishRecordingsResponseTest.php +++ b/tests/Responses/PublishRecordingsResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class PublishRecordingsResponseTest extends TestCase { diff --git a/tests/Responses/UpdateRecordingsResponseTest.php b/tests/Responses/UpdateRecordingsResponseTest.php index a79bf990..38d2790f 100644 --- a/tests/Responses/UpdateRecordingsResponseTest.php +++ b/tests/Responses/UpdateRecordingsResponseTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * @coversNothing */ class UpdateRecordingsResponseTest extends TestCase { diff --git a/tests/TestCase.php b/tests/TestCase.php index 0f64657b..d37793e7 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -37,8 +37,6 @@ * Class TestCase. * * @internal - * - * @coversNothing */ class TestCase extends \PHPUnit\Framework\TestCase { From 8db65bfc5d6db0966eb54138029766ae245d422f Mon Sep 17 00:00:00 2001 From: Tim Korn Date: Fri, 1 Mar 2024 21:43:11 +0100 Subject: [PATCH 2/7] Introduce Fixure-Class and adapt tests accordingly --- src/Util/EnvLoader.php | 49 +++ src/Util/Fixtures.php | 363 ++++++++++++++++++ tests/BigBlueButtonTest.php | 74 ++-- .../CreateMeetingParametersTest.php | 18 +- .../Parameters/JoinMeetingParametersTest.php | 5 +- .../UpdateRecordingsParametersTest.php | 5 +- tests/Responses/ApiVersionResponseTest.php | 21 +- tests/Responses/CreateMeetingResponseTest.php | 5 +- .../DeleteRecordingsResponseTest.php | 5 +- tests/Responses/EndMeetingResponseTest.php | 5 +- .../Responses/GetMeetingInfoResponseTest.php | 8 +- tests/Responses/GetMeetingsResponseTest.php | 8 +- tests/Responses/GetRecordingsResponseTest.php | 5 +- .../GetRecordingsTextTracksResponseTest.php | 6 +- tests/Responses/HooksCreateResponseTest.php | 5 +- tests/Responses/HooksDestroyResponseTest.php | 5 +- tests/Responses/HooksListResponseTest.php | 5 +- .../Responses/InsertDocumentResponseTest.php | 5 +- .../IsMeetingRunningResponseTest.php | 4 +- tests/Responses/JoinMeetingResponseTest.php | 4 +- .../PublishRecordingsResponseTest.php | 4 +- .../UpdateRecordingsResponseTest.php | 5 +- tests/TestCase.php | 313 +-------------- 23 files changed, 532 insertions(+), 395 deletions(-) create mode 100644 src/Util/EnvLoader.php create mode 100644 src/Util/Fixtures.php diff --git a/src/Util/EnvLoader.php b/src/Util/EnvLoader.php new file mode 100644 index 00000000..4a53e58c --- /dev/null +++ b/src/Util/EnvLoader.php @@ -0,0 +1,49 @@ +. + */ + +namespace BigBlueButton\Util; + +use Dotenv\Dotenv; + +/** + * @see https://github.com/vlucas/phpdotenv + */ +class EnvLoader +{ + public static function loadEnvironmentVariables(): void + { + $envPath = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR; + $envFileMain = '.env'; + $envFileLocal = '.env.local'; + + if (file_exists($envPath . $envFileLocal)) { + $envFile = $envFileLocal; + } elseif (file_exists($envPath . $envFileMain)) { + $envFile = $envFileMain; + } else { + $envPath = realpath($envPath); + throw new \RuntimeException("Environment file ('{$envFileMain}' nor '{$envFileLocal}') not found in directory '{$envPath}'!"); + } + + $dotenv = Dotenv::createUnsafeImmutable($envPath, $envFile); + $dotenv->load(); + $dotenv->required(['BBB_SECRET', 'BBB_SERVER_BASE_URL']); + } +} diff --git a/src/Util/Fixtures.php b/src/Util/Fixtures.php new file mode 100644 index 00000000..cf52dc0e --- /dev/null +++ b/src/Util/Fixtures.php @@ -0,0 +1,363 @@ +. + */ + +namespace BigBlueButton\Util; + +use BigBlueButton\Enum\Feature; +use BigBlueButton\Enum\GuestPolicy; +use BigBlueButton\Enum\MeetingLayout; +use BigBlueButton\Enum\Role; +use BigBlueButton\Parameters\CreateMeetingParameters; +use BigBlueButton\Parameters\EndMeetingParameters; +use BigBlueButton\Parameters\JoinMeetingParameters; +use BigBlueButton\Parameters\UpdateRecordingsParameters; +use Faker\Factory as Faker; + +class Fixtures +{ + public const PATH = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'tests' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR; + + // LOADERS --------------------------------------------------------------------------------------------------------- + public static function fromXmlFile(string $filename): \SimpleXMLElement + { + $uri = self::PATH . $filename; + + if (!file_exists($uri)) { + throw new \RuntimeException("File '{$uri}' not found."); + } + + $content = file_get_contents($uri); + + if (!$content) { + throw new \RuntimeException('Content of file could not be loaded.'); + } + + $xml = simplexml_load_string($content); + + if (!$xml) { + throw new \RuntimeException('Content could not be converted to XML.'); + } + + return $xml; + } + + public static function fromJsonFile(string $filename): string + { + $uri = self::PATH . $filename; + + if (!file_exists($uri)) { + throw new \RuntimeException("File '{$uri}' not found."); + } + + $content = file_get_contents($uri); + + if (!$content) { + throw new \RuntimeException('Content of file could not be loaded.'); + } + + return $content; + } + + // GENERATORS ------------------------------------------------------------------------------------------------------ + /** + * @return array + */ + public static function generateCreateParams(): array + { + $faker = Faker::create(); + + return [ + 'meetingName' => $faker->name, + 'meetingId' => $faker->uuid, + 'attendeePassword' => $faker->password, + 'moderatorPassword' => $faker->password, + 'autoStartRecording' => $faker->boolean(50), + 'dialNumber' => $faker->phoneNumber, + 'voiceBridge' => $faker->randomNumber(5), + 'webVoice' => $faker->word, + 'logoutUrl' => $faker->url, + 'maxParticipants' => $faker->numberBetween(2, 100), + 'record' => $faker->boolean(50), + 'duration' => $faker->numberBetween(0, 6000), + 'welcomeMessage' => $faker->sentence, + 'allowStartStopRecording' => $faker->boolean(50), + 'moderatorOnlyMessage' => $faker->sentence, + 'webcamsOnlyForModerator' => $faker->boolean(50), + 'logo' => $faker->imageUrl(330, 70), + 'copyright' => $faker->text, + 'muteOnStart' => $faker->boolean(50), + 'lockSettingsDisableCam' => $faker->boolean(50), + 'lockSettingsDisableMic' => $faker->boolean(50), + 'lockSettingsDisablePrivateChat' => $faker->boolean(50), + 'lockSettingsDisablePublicChat' => $faker->boolean(50), + 'lockSettingsDisableNote' => $faker->boolean(50), + 'lockSettingsHideUserList' => $faker->boolean(50), + 'lockSettingsLockedLayout' => $faker->boolean(50), + 'lockSettingsLockOnJoin' => $faker->boolean(50), + 'lockSettingsLockOnJoinConfigurable' => $faker->boolean(50), + 'lockSettingsHideViewersCursor' => $faker->boolean(50), + 'allowModsToUnmuteUsers' => $faker->boolean(50), + 'allowModsToEjectCameras' => $faker->boolean(50), + 'guestPolicy' => $faker->randomElement(GuestPolicy::getValues()), + 'endWhenNoModerator' => $faker->boolean(50), + 'endWhenNoModeratorDelayInMinutes' => $faker->numberBetween(1, 30), + 'meetingKeepEvents' => $faker->boolean(50), + 'learningDashboardEnabled' => $faker->boolean(50), + 'virtualBackgroundsDisabled' => $faker->boolean(50), + 'learningDashboardCleanupDelayInMinutes' => $faker->numberBetween(1, 30), + 'allowRequestsWithoutSession' => $faker->boolean(50), + 'userCameraCap' => $faker->numberBetween(1, 5), + 'bannerText' => $faker->sentence, + 'bannerColor' => $faker->hexColor, + 'breakoutRoomsEnabled' => $faker->boolean(50), + 'breakoutRoomsRecord' => $faker->boolean(50), + 'breakoutRoomsPrivateChatEnabled' => $faker->boolean(50), + 'meetingEndedURL' => $faker->url, + 'meetingLayout' => $faker->randomElement(MeetingLayout::getValues()), + 'meetingCameraCap' => $faker->numberBetween(1, 3), + 'meetingExpireIfNoUserJoinedInMinutes' => $faker->numberBetween(1, 10), + 'meetingExpireWhenLastUserLeftInMinutes' => $faker->numberBetween(5, 15), + 'preUploadedPresentationOverrideDefault' => $faker->boolean, + 'groups' => Fixtures::generateBreakoutRoomsGroups(), + 'disabledFeatures' => $faker->randomElements(Feature::getValues()), + 'disabledFeaturesExclude' => $faker->randomElements(Feature::getValues()), + 'meta_presenter' => $faker->name, + 'meta_endCallbackUrl' => $faker->url, + 'meta_bbb-recording-ready-url' => $faker->url, + 'notifyRecordingIsOn' => $faker->boolean(50), + 'presentationUploadExternalUrl' => $faker->url, + 'presentationUploadExternalDescription' => $faker->text, + 'recordFullDurationMedia' => $faker->boolean(50), + ]; + } + + /** + * @return array> + */ + public static function generateBreakoutRoomsGroups(): array + { + $faker = Faker::create(); + $br = $faker->numberBetween(0, 8); + + $groups = []; + for ($i = 0; $i <= $br; ++$i) { + $groups[] = [ + 'id' => $faker->uuid, + 'name' => $faker->name, + 'roster' => $faker->randomElements, + ]; + } + + return $groups; + } + + /** + * @param mixed $createParams + * + * @return array + */ + public static function generateBreakoutCreateParams($createParams): array + { + $faker = Faker::create(); + + return array_merge($createParams, [ + 'isBreakout' => true, + 'parentMeetingId' => $faker->uuid, + 'sequence' => $faker->numberBetween(1, 8), + 'freeJoin' => $faker->boolean(50), + ]); + } + + /** + * @return array + */ + public static function generateJoinMeetingParams(): array + { + $faker = Faker::create(); + + return [ + 'meetingId' => $faker->uuid, + 'userName' => $faker->name, + 'password' => $faker->password, + 'userId' => $faker->numberBetween(1, 1000), + 'webVoiceConf' => $faker->word, + 'creationTime' => $faker->unixTime, + 'role' => $faker->randomElement(Role::getValues()), + 'excludeFromDashboard' => $faker->boolean, + 'userdata_countrycode' => $faker->countryCode, + 'userdata_email' => $faker->email, + 'userdata_commercial' => false, + ]; + } + + /** + * @return array + */ + public static function generateEndMeetingParams(): array + { + $faker = Faker::create(); + + return [ + 'meetingId' => $faker->uuid, + 'password' => $faker->password, + ]; + } + + /** + * @return array + */ + public static function generateUpdateRecordingsParams(): array + { + $faker = Faker::create(); + + return [ + 'recordingId' => $faker->uuid, + 'meta_presenter' => $faker->name, + ]; + } + + // MOCKS ----------------------------------------------------------------------------------------------------------- + /** + * @param array $params + */ + public static function getCreateMeetingParametersMock(array $params): CreateMeetingParameters + { + $createMeetingParams = new CreateMeetingParameters($params['meetingId'], $params['meetingName']); + + foreach ($params['groups'] as $group) { + $createMeetingParams->addBreakoutRoomsGroup($group['id'], $group['name'], $group['roster']); + } + + return $createMeetingParams + ->setAttendeePassword($params['attendeePassword']) + ->setModeratorPassword($params['moderatorPassword']) + ->setDialNumber($params['dialNumber']) + ->setVoiceBridge($params['voiceBridge']) + ->setWebVoice($params['webVoice']) + ->setLogoutUrl($params['logoutUrl']) + ->setMaxParticipants($params['maxParticipants']) + ->setRecord($params['record']) + ->setDuration($params['duration']) + ->setWelcomeMessage($params['welcomeMessage']) + ->setAutoStartRecording($params['autoStartRecording']) + ->setAllowStartStopRecording($params['allowStartStopRecording']) + ->setModeratorOnlyMessage($params['moderatorOnlyMessage']) + ->setWebcamsOnlyForModerator($params['webcamsOnlyForModerator']) + ->setLogo($params['logo']) + ->setCopyright($params['copyright']) + ->setEndCallbackUrl($params['meta_endCallbackUrl']) + ->setRecordingReadyCallbackUrl($params['meta_bbb-recording-ready-url']) + ->setMuteOnStart($params['muteOnStart']) + ->setLockSettingsDisableCam($params['lockSettingsDisableCam']) + ->setLockSettingsDisableMic($params['lockSettingsDisableMic']) + ->setLockSettingsDisablePrivateChat($params['lockSettingsDisablePrivateChat']) + ->setLockSettingsDisablePublicChat($params['lockSettingsDisablePublicChat']) + ->setLockSettingsDisableNote($params['lockSettingsDisableNote']) + ->setLockSettingsHideUserList($params['lockSettingsHideUserList']) + ->setLockSettingsLockedLayout($params['lockSettingsLockedLayout']) + ->setLockSettingsLockOnJoin($params['lockSettingsLockOnJoin']) + ->setLockSettingsLockOnJoinConfigurable($params['lockSettingsLockOnJoinConfigurable']) + ->setLockSettingsHideViewersCursor($params['lockSettingsHideViewersCursor']) + ->setEndWhenNoModerator($params['endWhenNoModerator']) + ->setEndWhenNoModeratorDelayInMinutes($params['endWhenNoModeratorDelayInMinutes']) + ->setAllowModsToUnmuteUsers($params['allowModsToUnmuteUsers']) + ->setAllowModsToEjectCameras($params['allowModsToEjectCameras']) + ->setGuestPolicy($params['guestPolicy']) + ->setMeetingKeepEvents($params['meetingKeepEvents']) + ->setLearningDashboardEnabled($params['learningDashboardEnabled']) + ->setVirtualBackgroundsDisabled($params['virtualBackgroundsDisabled']) + ->setLearningDashboardCleanupDelayInMinutes($params['learningDashboardCleanupDelayInMinutes']) + ->setBannerColor($params['bannerColor']) + ->setBannerText($params['bannerText']) + ->setBreakoutRoomsEnabled($params['breakoutRoomsEnabled']) + ->setBreakoutRoomsRecord($params['breakoutRoomsRecord']) + ->setBreakoutRoomsPrivateChatEnabled($params['breakoutRoomsPrivateChatEnabled']) + ->setMeetingEndedURL($params['meetingEndedURL']) + ->setMeetingLayout($params['meetingLayout']) + ->setAllowRequestsWithoutSession($params['allowRequestsWithoutSession']) + ->setUserCameraCap($params['userCameraCap']) + ->setMeetingCameraCap($params['meetingCameraCap']) + ->setMeetingExpireIfNoUserJoinedInMinutes($params['meetingExpireIfNoUserJoinedInMinutes']) + ->setMeetingExpireWhenLastUserLeftInMinutes($params['meetingExpireWhenLastUserLeftInMinutes']) + ->setPreUploadedPresentationOverrideDefault($params['preUploadedPresentationOverrideDefault']) + ->setDisabledFeatures($params['disabledFeatures']) + ->setDisabledFeaturesExclude($params['disabledFeaturesExclude']) + ->setRecordFullDurationMedia($params['recordFullDurationMedia']) + ->addMeta('presenter', $params['meta_presenter']) + ->addMeta('bbb-recording-ready-url', $params['meta_bbb-recording-ready-url']) + ->setNotifyRecordingIsOn($params['notifyRecordingIsOn']) + ->setPresentationUploadExternalUrl($params['presentationUploadExternalUrl']) + ->setPresentationUploadExternalDescription($params['presentationUploadExternalDescription']) + ; + } + + /** + * @param mixed $params + */ + public static function getBreakoutCreateMock($params): CreateMeetingParameters + { + $createMeetingParams = Fixtures::getCreateMeetingParametersMock($params); + + return $createMeetingParams + ->setBreakout($params['isBreakout']) + ->setParentMeetingId($params['parentMeetingId']) + ->setSequence($params['sequence']) + ->setFreeJoin($params['freeJoin']) + ; + } + + /** + * @param array $params + */ + public static function getJoinMeetingMock(array $params): JoinMeetingParameters + { + $joinMeetingParams = new JoinMeetingParameters($params['meetingId'], $params['userName'], $params['password']); + + return $joinMeetingParams + ->setUserId($params['userId']) + ->setWebVoiceConf($params['webVoiceConf']) + ->setCreationTime($params['creationTime']) + ->addUserData('countrycode', $params['userdata_countrycode']) + ->setRole($params['role']) + ->addUserData('email', $params['userdata_email']) + ->addUserData('commercial', $params['userdata_commercial']) + ->setExcludeFromDashboard($params['excludeFromDashboard']) + ; + } + + /** + * @param array $params + */ + public static function getEndMeetingMock(array $params): EndMeetingParameters + { + return new EndMeetingParameters($params['meetingId'], $params['password']); + } + + /** + * @param array $params + */ + public static function getUpdateRecordingsParamsMock(array $params): UpdateRecordingsParameters + { + $updateRecordingsParams = new UpdateRecordingsParameters($params['recordingId']); + + return $updateRecordingsParams->addMeta('presenter', $params['meta_presenter']); + } + +} diff --git a/tests/BigBlueButtonTest.php b/tests/BigBlueButtonTest.php index f5f3c8d5..dbb4bb0a 100644 --- a/tests/BigBlueButtonTest.php +++ b/tests/BigBlueButtonTest.php @@ -28,8 +28,9 @@ use BigBlueButton\Parameters\GetRecordingsParameters; use BigBlueButton\Parameters\IsMeetingRunningParameters; use BigBlueButton\Parameters\PublishRecordingsParameters; +use BigBlueButton\Util\EnvLoader; +use BigBlueButton\Util\Fixtures; use BigBlueButton\Util\ParamsIterator; -use Dotenv\Dotenv; /** * Class BigBlueButtonTest. @@ -47,7 +48,7 @@ public function setUp(): void { parent::setUp(); - $this->loadEnvironmentVariables(); + EnvLoader::loadEnvironmentVariables(); $this->bbb = new BigBlueButton(); } @@ -88,8 +89,8 @@ public function testApiVersion(): void */ public function testCreateMeetingUrl(): void { - $params = $this->generateCreateParams(); - $url = $this->bbb->getCreateMeetingUrl($this->getCreateMock($params)); + $params = Fixtures::generateCreateParams(); + $url = $this->bbb->getCreateMeetingUrl(Fixtures::getCreateMeetingParametersMock($params)); $paramsIterator = new ParamsIterator(); $paramsIterator->iterate($params, $url); @@ -100,8 +101,9 @@ public function testCreateMeetingUrl(): void */ public function testCreateMeeting(): void { - $params = $this->generateCreateParams(); - $result = $this->bbb->createMeeting($this->getCreateMock($params)); + $createMeetingParams = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); + + $result = $this->bbb->createMeeting($createMeetingParams); $this->assertEquals('SUCCESS', $result->getReturnCode()); $this->assertTrue($result->success()); @@ -112,7 +114,7 @@ public function testCreateMeeting(): void */ public function testCreateMeetingWithDocumentUrl(): void { - $params = $this->getCreateMock($this->generateCreateParams()); + $params = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); $params->addPresentation('https://picsum.photos/3840/2160/?random'); $result = $this->bbb->createMeeting($params); @@ -127,7 +129,7 @@ public function testCreateMeetingWithDocumentUrl(): void */ public function testCreateMeetingWithDocumentUrlAndFileName(): void { - $params = $this->getCreateMock($this->generateCreateParams()); + $params = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); $params->addPresentation('https://picsum.photos/3840/2160/?random', null, 'placeholder.png'); $result = $this->bbb->createMeeting($params); @@ -142,7 +144,7 @@ public function testCreateMeetingWithDocumentUrlAndFileName(): void */ public function testCreateMeetingWithDocumentEmbedded(): void { - $params = $this->getCreateMock($this->generateCreateParams()); + $params = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); $params->addPresentation('bbb_logo.png', file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'bbb_logo.png')); @@ -158,7 +160,7 @@ public function testCreateMeetingWithDocumentEmbedded(): void */ public function testCreateMeetingWithMultiDocument(): void { - $params = $this->getCreateMock($this->generateCreateParams()); + $params = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); $params->addPresentation('https://picsum.photos/3840/2160/?random', null, 'presentation.png'); $params->addPresentation('logo.png', file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'bbb_logo.png')); @@ -176,9 +178,9 @@ public function testCreateMeetingWithMultiDocument(): void */ public function testCreateJoinMeetingUrl(): void { - $joinMeetingParams = $this->generateJoinMeetingParams(); + $joinMeetingParams = Fixtures::generateJoinMeetingParams(); - $joinMeetingMock = $this->getJoinMeetingMock($joinMeetingParams); + $joinMeetingMock = Fixtures::getJoinMeetingMock($joinMeetingParams); $url = $this->bbb->getJoinMeetingURL($joinMeetingMock); $paramsIterator = new ParamsIterator(); @@ -195,13 +197,15 @@ public function testJoinMeeting(): void // create a meeting that can be joined $createMeetingParameters = new CreateMeetingParameters($this->faker->uuid(), $this->faker->word()); $createMeetingResponse = $this->bbb->createMeeting($createMeetingParameters); + $this->assertEquals('SUCCESS', $createMeetingResponse->getReturnCode()); + $this->assertTrue($createMeetingResponse->success()); // prepare to join the meeting - $joinMeetingParams = $this->generateJoinMeetingParams(); - $joinMeetingMock = $this->getJoinMeetingMock($joinMeetingParams); - $joinMeetingMock->setRedirect(false); + $joinMeetingParams = Fixtures::generateJoinMeetingParams(); + $joinMeetingMock = Fixtures::getJoinMeetingMock($joinMeetingParams); // adapt to join the above created meeting + $joinMeetingMock->setRedirect(false); $joinMeetingMock->setMeetingId($createMeetingResponse->getMeetingId()); $joinMeetingMock->setCreationTime($createMeetingResponse->getCreationTime()); @@ -228,8 +232,8 @@ public function testJoinMeeting(): void */ public function testCreateEndMeetingUrl(): void { - $params = $this->generateEndMeetingParams(); - $url = $this->bbb->getEndMeetingURL($this->getEndMeetingMock($params)); + $params = Fixtures::generateEndMeetingParams(); + $url = $this->bbb->getEndMeetingURL(Fixtures::getEndMeetingMock($params)); $paramsIterator = new ParamsIterator(); $paramsIterator->iterate($params, $url); } @@ -246,13 +250,13 @@ public function testEndMeeting(): void public function testEndNonExistingMeeting(): void { - $params = $this->generateEndMeetingParams(); - $result = $this->bbb->endMeeting($this->getEndMeetingMock($params)); + $params = Fixtures::generateEndMeetingParams(); + $result = $this->bbb->endMeeting(Fixtures::getEndMeetingMock($params)); $this->assertEquals('FAILED', $result->getReturnCode()); $this->assertTrue($result->failed()); } - // Is Meeting Running + // Is Meeting Running / Existing public function testIsMeetingRunning(): void { @@ -340,39 +344,17 @@ public function testDeleteRecordings(): void public function testUpdateRecordingsUrl(): void { - $params = $this->generateUpdateRecordingsParams(); - $url = $this->bbb->getUpdateRecordingsUrl($this->getUpdateRecordingsParamsMock($params)); + $params = Fixtures::generateUpdateRecordingsParams(); + $url = $this->bbb->getUpdateRecordingsUrl(Fixtures::getUpdateRecordingsParamsMock($params)); $paramsIterator = new ParamsIterator(); $paramsIterator->iterate($params, $url); } public function testUpdateRecordings(): void { - $params = $this->generateUpdateRecordingsParams(); - $result = $this->bbb->updateRecordings($this->getUpdateRecordingsParamsMock($params)); + $params = Fixtures::generateUpdateRecordingsParams(); + $result = $this->bbb->updateRecordings(Fixtures::getUpdateRecordingsParamsMock($params)); $this->assertEquals('FAILED', $result->getReturnCode()); $this->assertTrue($result->failed()); } - - /** - * @see https://github.com/vlucas/phpdotenv - */ - private function loadEnvironmentVariables(): void - { - $envPath = __DIR__ . '/..'; - $envFileMain = '.env'; - $envFileLocal = '.env.local'; - - if (file_exists("{$envPath}/{$envFileLocal}")) { - $envFile = $envFileLocal; - } elseif (file_exists("{$envPath}/{$envFileMain}")) { - $envFile = $envFileMain; - } else { - throw new \RuntimeException("Environment file ('{$envFileMain}' nor '{$envFileLocal}') not found!"); - } - - $dotenv = Dotenv::createUnsafeImmutable($envPath, $envFile); - $dotenv->load(); - $dotenv->required(['BBB_SECRET', 'BBB_SERVER_BASE_URL']); - } } diff --git a/tests/Parameters/CreateMeetingParametersTest.php b/tests/Parameters/CreateMeetingParametersTest.php index 25e0d716..e796ed0f 100644 --- a/tests/Parameters/CreateMeetingParametersTest.php +++ b/tests/Parameters/CreateMeetingParametersTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Parameters; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * Class CreateMeetingParametersTest. @@ -33,9 +34,9 @@ class CreateMeetingParametersTest extends TestCase { public function testCreateMeetingParameters(): void { - $params = $this->generateCreateParams(); + $params = Fixtures::generateCreateParams(); - $createMeetingParams = $this->getCreateMock($params); + $createMeetingParams = Fixtures::getCreateMeetingParametersMock($params); $this->assertEquals($params['meetingName'], $createMeetingParams->getMeetingName()); $this->assertEquals($params['meetingId'], $createMeetingParams->getMeetingId()); @@ -115,8 +116,8 @@ public function testCreateMeetingParameters(): void public function testCreateBreakoutMeeting(): void { - $params = $this->generateBreakoutCreateParams($this->generateCreateParams()); - $createBreakoutMeetingParams = $this->getBreakoutCreateMock($params); + $params = Fixtures::generateBreakoutCreateParams(Fixtures::generateCreateParams()); + $createBreakoutMeetingParams = Fixtures::getBreakoutCreateMock($params); $this->assertEquals($params['isBreakout'], $createBreakoutMeetingParams->isBreakout()); $this->assertEquals($params['parentMeetingId'], $createBreakoutMeetingParams->getParentMeetingId()); $this->assertEquals($params['sequence'], $createBreakoutMeetingParams->getSequence()); @@ -132,24 +133,21 @@ public function testCreateBreakoutMeeting(): void public function testGetPresentationsAsXMLWithUrl(): void { - $params = $this->generateCreateParams(); - $createMeetingParams = $this->getCreateMock($params); + $createMeetingParams = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); $createMeetingParams->addPresentation('http://test-install.blindsidenetworks.com/default.pdf'); $this->assertXmlStringEqualsXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'presentation_with_url.xml', $createMeetingParams->getPresentationsAsXML()); } public function testGetPresentationsAsXMLWithUrlAndFilename(): void { - $params = $this->generateCreateParams(); - $createMeetingParams = $this->getCreateMock($params); + $createMeetingParams = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); $createMeetingParams->addPresentation('http://test-install.blindsidenetworks.com/default.pdf', null, 'presentation.pdf'); $this->assertXmlStringEqualsXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'presentation_with_filename.xml', $createMeetingParams->getPresentationsAsXML()); } public function testGetPresentationsAsXMLWithFile(): void { - $params = $this->generateCreateParams(); - $createMeetingParams = $this->getCreateMock($params); + $createMeetingParams = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); $createMeetingParams->addPresentation('bbb_logo.png', file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'bbb_logo.png')); $this->assertXmlStringEqualsXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'presentation_with_embedded_file.xml', $createMeetingParams->getPresentationsAsXML()); } diff --git a/tests/Parameters/JoinMeetingParametersTest.php b/tests/Parameters/JoinMeetingParametersTest.php index 31f97bc8..aec64cda 100644 --- a/tests/Parameters/JoinMeetingParametersTest.php +++ b/tests/Parameters/JoinMeetingParametersTest.php @@ -23,6 +23,7 @@ use BigBlueButton\Enum\MeetingLayout; use BigBlueButton\Enum\Role; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,8 +34,8 @@ class JoinMeetingParametersTest extends TestCase { public function testJoinMeetingParameters(): void { - $params = $this->generateJoinMeetingParams(); - $joinMeetingParams = $this->getJoinMeetingMock($params); + $params = Fixtures::generateJoinMeetingParams(); + $joinMeetingParams = Fixtures::getJoinMeetingMock($params); $this->assertEquals($params['meetingId'], $joinMeetingParams->getMeetingId()); $this->assertEquals($params['userName'], $joinMeetingParams->getUsername()); diff --git a/tests/Parameters/UpdateRecordingsParametersTest.php b/tests/Parameters/UpdateRecordingsParametersTest.php index d10a1230..c2fe2666 100644 --- a/tests/Parameters/UpdateRecordingsParametersTest.php +++ b/tests/Parameters/UpdateRecordingsParametersTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Parameters; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -31,8 +32,8 @@ class UpdateRecordingsParametersTest extends TestCase { public function testUpdateRecordingsParameters(): void { - $params = $this->generateUpdateRecordingsParams(); - $updateRecordingsParams = $this->getUpdateRecordingsParamsMock($params); + $params = Fixtures::generateUpdateRecordingsParams(); + $updateRecordingsParams = Fixtures::getUpdateRecordingsParamsMock($params); $this->assertEquals($params['recordingId'], $updateRecordingsParams->getRecordingId()); $this->assertEquals($params['meta_presenter'], $updateRecordingsParams->getMeta('presenter')); diff --git a/tests/Responses/ApiVersionResponseTest.php b/tests/Responses/ApiVersionResponseTest.php index fab69b3c..e1aacefa 100644 --- a/tests/Responses/ApiVersionResponseTest.php +++ b/tests/Responses/ApiVersionResponseTest.php @@ -21,35 +21,36 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal - * - * @coversNothing */ class ApiVersionResponseTest extends TestCase { - private ApiVersionResponse $version; + private ApiVersionResponse $apiVersionResponse; public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'api_version.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('api_version.xml'); - $this->version = new ApiVersionResponse($xml); + $this->apiVersionResponse = new ApiVersionResponse($xml); } public function testApiVersionResponseContent(): void { - $this->assertEquals('SUCCESS', $this->version->getReturnCode()); - $this->assertEquals('2.0', $this->version->getVersion()); - $this->assertEquals('2.0', $this->version->getApiVersion()); - $this->assertEquals('2.4-rc-7', $this->version->getBbbVersion()); + $this->assertEquals('SUCCESS', $this->apiVersionResponse->getReturnCode()); + $this->assertEquals('2.0', $this->apiVersionResponse->getVersion()); + $this->assertEquals('2.0', $this->apiVersionResponse->getApiVersion()); + $this->assertEquals('2.4-rc-7', $this->apiVersionResponse->getBbbVersion()); } public function testApiVersionResponseTypes(): void { - $this->assertEachGetterValueIsString($this->version, ['getReturnCode', 'getVersion', 'getApiVersion', 'getBbbVersion']); + $this->assertEachGetterValueIsString($this->apiVersionResponse, ['getReturnCode', 'getVersion', 'getApiVersion', 'getBbbVersion']); } } diff --git a/tests/Responses/CreateMeetingResponseTest.php b/tests/Responses/CreateMeetingResponseTest.php index 341e87e4..597b225e 100644 --- a/tests/Responses/CreateMeetingResponseTest.php +++ b/tests/Responses/CreateMeetingResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'create_meeting.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('create_meeting.xml'); $this->meeting = new CreateMeetingResponse($xml); } diff --git a/tests/Responses/DeleteRecordingsResponseTest.php b/tests/Responses/DeleteRecordingsResponseTest.php index df9682bc..fce5d533 100644 --- a/tests/Responses/DeleteRecordingsResponseTest.php +++ b/tests/Responses/DeleteRecordingsResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'delete_recordings.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('delete_recordings.xml'); $this->delete = new DeleteRecordingsResponse($xml); } diff --git a/tests/Responses/EndMeetingResponseTest.php b/tests/Responses/EndMeetingResponseTest.php index 6748eb8c..7dd45ecd 100644 --- a/tests/Responses/EndMeetingResponseTest.php +++ b/tests/Responses/EndMeetingResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'end_meeting.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('end_meeting.xml'); $this->end = new EndMeetingResponse($xml); } diff --git a/tests/Responses/GetMeetingInfoResponseTest.php b/tests/Responses/GetMeetingInfoResponseTest.php index c394956d..5541d299 100644 --- a/tests/Responses/GetMeetingInfoResponseTest.php +++ b/tests/Responses/GetMeetingInfoResponseTest.php @@ -20,7 +20,9 @@ namespace BigBlueButton\Responses; +use BigBlueButton\Core\Meeting; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,14 +35,16 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'get_meeting_info.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('get_meeting_info.xml'); $this->meetingInfo = new GetMeetingInfoResponse($xml); } public function testGetMeetingInfoResponseContent(): void { - $this->assertInstanceOf('BigBlueButton\Core\Meeting', $this->meetingInfo->getMeeting()); + $this->assertInstanceOf(Meeting::class, $this->meetingInfo->getMeeting()); $this->assertCount(4, $this->meetingInfo->getMeeting()->getAttendees()); $this->assertEquals('SUCCESS', $this->meetingInfo->getReturnCode()); diff --git a/tests/Responses/GetMeetingsResponseTest.php b/tests/Responses/GetMeetingsResponseTest.php index 21aec51b..ae66d2c0 100644 --- a/tests/Responses/GetMeetingsResponseTest.php +++ b/tests/Responses/GetMeetingsResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'get_meetings.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('get_meetings.xml'); $this->meetings = new GetMeetingsResponse($xml); } @@ -61,11 +64,12 @@ public function testGetMeetingsResponseContent(): void $this->assertEquals(1, $aMeeting->getVoiceParticipantCount()); $this->assertEquals(3, $aMeeting->getVideoCount()); $this->assertEquals(2206, $aMeeting->getDuration()); - $this->assertEquals(true, $aMeeting->hasUserJoined()); + $this->assertTrue($aMeeting->hasUserJoined()); $this->assertEquals(14, $aMeeting->getMaxUsers()); $this->assertEquals(1, $aMeeting->getModeratorCount()); $this->assertEquals('Consuelo Gleichner IV', $aMeeting->getMetas()['presenter']); $this->assertEquals('http://www.muller.biz/autem-dolor-aut-nam-doloribus-molestiae', $aMeeting->getMetas()['endcallbackurl']); + $this->assertFalse($aMeeting->isBreakout()); } public function testGetMeetingsResponseTypes(): void diff --git a/tests/Responses/GetRecordingsResponseTest.php b/tests/Responses/GetRecordingsResponseTest.php index 37ee4778..8e1d38a6 100644 --- a/tests/Responses/GetRecordingsResponseTest.php +++ b/tests/Responses/GetRecordingsResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'get_recordings.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('get_recordings.xml'); $this->records = new GetRecordingsResponse($xml); } diff --git a/tests/Responses/GetRecordingsTextTracksResponseTest.php b/tests/Responses/GetRecordingsTextTracksResponseTest.php index cf39a417..fe8d8786 100644 --- a/tests/Responses/GetRecordingsTextTracksResponseTest.php +++ b/tests/Responses/GetRecordingsTextTracksResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -32,7 +33,10 @@ class GetRecordingsTextTracksResponseTest extends TestCase public function setUp(): void { parent::setUp(); - $json = $this->loadJsonFile(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'get_recording_text_tracks.json'); + + $fixtures = new Fixtures(); + + $json = $fixtures->fromJsonFile('get_recording_text_tracks.json'); $this->tracks = new GetRecordingTextTracksResponse($json); } diff --git a/tests/Responses/HooksCreateResponseTest.php b/tests/Responses/HooksCreateResponseTest.php index dd46ba80..ebfddf90 100644 --- a/tests/Responses/HooksCreateResponseTest.php +++ b/tests/Responses/HooksCreateResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'hooks_create.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('hooks_create.xml'); $this->createResponse = new HooksCreateResponse($xml); } diff --git a/tests/Responses/HooksDestroyResponseTest.php b/tests/Responses/HooksDestroyResponseTest.php index f1be4ead..a790864d 100644 --- a/tests/Responses/HooksDestroyResponseTest.php +++ b/tests/Responses/HooksDestroyResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'hooks_destroy.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('hooks_destroy.xml'); $this->destroyResponse = new HooksDestroyResponse($xml); } diff --git a/tests/Responses/HooksListResponseTest.php b/tests/Responses/HooksListResponseTest.php index 30dbbf11..8af600df 100644 --- a/tests/Responses/HooksListResponseTest.php +++ b/tests/Responses/HooksListResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'hooks_list.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('hooks_list.xml'); $this->listResponse = new HooksListResponse($xml); } diff --git a/tests/Responses/InsertDocumentResponseTest.php b/tests/Responses/InsertDocumentResponseTest.php index 7bbbae18..bd1d4442 100644 --- a/tests/Responses/InsertDocumentResponseTest.php +++ b/tests/Responses/InsertDocumentResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'insert_document.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('insert_document.xml'); $this->insertDocument = new InsertDocumentResponse($xml); } diff --git a/tests/Responses/IsMeetingRunningResponseTest.php b/tests/Responses/IsMeetingRunningResponseTest.php index f3447925..be137e45 100644 --- a/tests/Responses/IsMeetingRunningResponseTest.php +++ b/tests/Responses/IsMeetingRunningResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -32,8 +33,9 @@ class IsMeetingRunningResponseTest extends TestCase public function setUp(): void { parent::setUp(); + $fixtures = new Fixtures(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'is_meeting_running.xml'); + $xml = $fixtures->fromXmlFile('is_meeting_running.xml'); $this->running = new IsMeetingRunningResponse($xml); } diff --git a/tests/Responses/JoinMeetingResponseTest.php b/tests/Responses/JoinMeetingResponseTest.php index e775eab5..92c763c2 100644 --- a/tests/Responses/JoinMeetingResponseTest.php +++ b/tests/Responses/JoinMeetingResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -32,8 +33,9 @@ class JoinMeetingResponseTest extends TestCase public function setUp(): void { parent::setUp(); + $fixtures = new Fixtures(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'join_meeting.xml'); + $xml = $fixtures->fromXmlFile('join_meeting.xml'); $this->joinMeeting = new JoinMeetingResponse($xml); } diff --git a/tests/Responses/PublishRecordingsResponseTest.php b/tests/Responses/PublishRecordingsResponseTest.php index 04a18d47..2b3ec8e4 100644 --- a/tests/Responses/PublishRecordingsResponseTest.php +++ b/tests/Responses/PublishRecordingsResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -32,8 +33,9 @@ class PublishRecordingsResponseTest extends TestCase public function setUp(): void { parent::setUp(); + $fixtures = new Fixtures(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'publish_recordings.xml'); + $xml = $fixtures->fromXmlFile('publish_recordings.xml'); $this->publish = new PublishRecordingsResponse($xml); } diff --git a/tests/Responses/UpdateRecordingsResponseTest.php b/tests/Responses/UpdateRecordingsResponseTest.php index 38d2790f..b1ef0fed 100644 --- a/tests/Responses/UpdateRecordingsResponseTest.php +++ b/tests/Responses/UpdateRecordingsResponseTest.php @@ -21,6 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; +use BigBlueButton\Util\Fixtures; /** * @internal @@ -33,7 +34,9 @@ public function setUp(): void { parent::setUp(); - $xml = $this->loadXmlFile(__DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'fixtures' . DIRECTORY_SEPARATOR . 'update_recordings.xml'); + $fixtures = new Fixtures(); + + $xml = $fixtures->fromXmlFile('update_recordings.xml'); $this->update = new UpdateRecordingsResponse($xml); } diff --git a/tests/TestCase.php b/tests/TestCase.php index d37793e7..de8c60ff 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -20,16 +20,10 @@ namespace BigBlueButton; -use BigBlueButton\Enum\Feature; -use BigBlueButton\Enum\GuestPolicy; -use BigBlueButton\Enum\MeetingLayout; -use BigBlueButton\Enum\Role; -use BigBlueButton\Parameters\CreateMeetingParameters; -use BigBlueButton\Parameters\EndMeetingParameters; -use BigBlueButton\Parameters\JoinMeetingParameters; -use BigBlueButton\Parameters\UpdateRecordingsParameters; + use BigBlueButton\Responses\CreateMeetingResponse; use BigBlueButton\Responses\UpdateRecordingsResponse; +use BigBlueButton\Util\Fixtures; use Faker\Factory as Faker; use Faker\Generator; @@ -130,316 +124,19 @@ public function assertEachGetterValueIsBoolean($obj, array $getters): void protected function createRealMeeting(BigBlueButton $bbb): CreateMeetingResponse { - $createMeetingParams = $this->generateCreateParams(); - $createMeetingMock = $this->getCreateMock($createMeetingParams); + $createMeetingMock = Fixtures::getCreateMeetingParametersMock(Fixtures::generateCreateParams()); return $bbb->createMeeting($createMeetingMock); } - /** - * @return array - */ - protected function generateCreateParams(): array - { - return [ - 'meetingName' => $this->faker->name, - 'meetingId' => $this->faker->uuid, - 'attendeePassword' => $this->faker->password, - 'moderatorPassword' => $this->faker->password, - 'autoStartRecording' => $this->faker->boolean(50), - 'dialNumber' => $this->faker->phoneNumber, - 'voiceBridge' => $this->faker->randomNumber(5), - 'webVoice' => $this->faker->word, - 'logoutUrl' => $this->faker->url, - 'maxParticipants' => $this->faker->numberBetween(2, 100), - 'record' => $this->faker->boolean(50), - 'duration' => $this->faker->numberBetween(0, 6000), - 'welcomeMessage' => $this->faker->sentence, - 'allowStartStopRecording' => $this->faker->boolean(50), - 'moderatorOnlyMessage' => $this->faker->sentence, - 'webcamsOnlyForModerator' => $this->faker->boolean(50), - 'logo' => $this->faker->imageUrl(330, 70), - 'copyright' => $this->faker->text, - 'muteOnStart' => $this->faker->boolean(50), - 'lockSettingsDisableCam' => $this->faker->boolean(50), - 'lockSettingsDisableMic' => $this->faker->boolean(50), - 'lockSettingsDisablePrivateChat' => $this->faker->boolean(50), - 'lockSettingsDisablePublicChat' => $this->faker->boolean(50), - 'lockSettingsDisableNote' => $this->faker->boolean(50), - 'lockSettingsHideUserList' => $this->faker->boolean(50), - 'lockSettingsLockedLayout' => $this->faker->boolean(50), - 'lockSettingsLockOnJoin' => $this->faker->boolean(50), - 'lockSettingsLockOnJoinConfigurable' => $this->faker->boolean(50), - 'lockSettingsHideViewersCursor' => $this->faker->boolean(50), - 'allowModsToUnmuteUsers' => $this->faker->boolean(50), - 'allowModsToEjectCameras' => $this->faker->boolean(50), - 'guestPolicy' => $this->faker->randomElement(GuestPolicy::getValues()), - 'endWhenNoModerator' => $this->faker->boolean(50), - 'endWhenNoModeratorDelayInMinutes' => $this->faker->numberBetween(1, 30), - 'meetingKeepEvents' => $this->faker->boolean(50), - 'learningDashboardEnabled' => $this->faker->boolean(50), - 'virtualBackgroundsDisabled' => $this->faker->boolean(50), - 'learningDashboardCleanupDelayInMinutes' => $this->faker->numberBetween(1, 30), - 'allowRequestsWithoutSession' => $this->faker->boolean(50), - 'userCameraCap' => $this->faker->numberBetween(1, 5), - 'bannerText' => $this->faker->sentence, - 'bannerColor' => $this->faker->hexColor, - 'breakoutRoomsEnabled' => $this->faker->boolean(50), - 'breakoutRoomsRecord' => $this->faker->boolean(50), - 'breakoutRoomsPrivateChatEnabled' => $this->faker->boolean(50), - 'meetingEndedURL' => $this->faker->url, - 'meetingLayout' => $this->faker->randomElement(MeetingLayout::getValues()), - 'meetingCameraCap' => $this->faker->numberBetween(1, 3), - 'meetingExpireIfNoUserJoinedInMinutes' => $this->faker->numberBetween(1, 10), - 'meetingExpireWhenLastUserLeftInMinutes' => $this->faker->numberBetween(5, 15), - 'preUploadedPresentationOverrideDefault' => $this->faker->boolean, - 'groups' => $this->generateBreakoutRoomsGroups(), - 'disabledFeatures' => $this->faker->randomElements(Feature::getValues()), - 'disabledFeaturesExclude' => $this->faker->randomElements(Feature::getValues()), - 'meta_presenter' => $this->faker->name, - 'meta_endCallbackUrl' => $this->faker->url, - 'meta_bbb-recording-ready-url' => $this->faker->url, - 'notifyRecordingIsOn' => $this->faker->boolean(50), - 'presentationUploadExternalUrl' => $this->faker->url, - 'presentationUploadExternalDescription' => $this->faker->text, - 'recordFullDurationMedia' => $this->faker->boolean(50), - ]; - } - - /** - * @return array> - */ - protected function generateBreakoutRoomsGroups(): array - { - $br = $this->faker->numberBetween(0, 8); - $groups = []; - for ($i = 0; $i <= $br; ++$i) { - $groups[] = [ - 'id' => $this->faker->uuid, - 'name' => $this->faker->name, - 'roster' => $this->faker->randomElements, - ]; - } - - return $groups; - } - - /** - * @param mixed $createParams - * - * @return array - */ - protected function generateBreakoutCreateParams($createParams): array - { - return array_merge($createParams, [ - 'isBreakout' => true, - 'parentMeetingId' => $this->faker->uuid, - 'sequence' => $this->faker->numberBetween(1, 8), - 'freeJoin' => $this->faker->boolean(50), - ]); - } - - /** - * @param array $params - */ - protected function getCreateMock(array $params): CreateMeetingParameters - { - $createMeetingParams = new CreateMeetingParameters($params['meetingId'], $params['meetingName']); - - foreach ($params['groups'] as $group) { - $createMeetingParams->addBreakoutRoomsGroup($group['id'], $group['name'], $group['roster']); - } - - return $createMeetingParams - ->setAttendeePassword($params['attendeePassword']) - ->setModeratorPassword($params['moderatorPassword']) - ->setDialNumber($params['dialNumber']) - ->setVoiceBridge($params['voiceBridge']) - ->setWebVoice($params['webVoice']) - ->setLogoutUrl($params['logoutUrl']) - ->setMaxParticipants($params['maxParticipants']) - ->setRecord($params['record']) - ->setDuration($params['duration']) - ->setWelcomeMessage($params['welcomeMessage']) - ->setAutoStartRecording($params['autoStartRecording']) - ->setAllowStartStopRecording($params['allowStartStopRecording']) - ->setModeratorOnlyMessage($params['moderatorOnlyMessage']) - ->setWebcamsOnlyForModerator($params['webcamsOnlyForModerator']) - ->setLogo($params['logo']) - ->setCopyright($params['copyright']) - ->setEndCallbackUrl($params['meta_endCallbackUrl']) - ->setRecordingReadyCallbackUrl($params['meta_bbb-recording-ready-url']) - ->setMuteOnStart($params['muteOnStart']) - ->setLockSettingsDisableCam($params['lockSettingsDisableCam']) - ->setLockSettingsDisableMic($params['lockSettingsDisableMic']) - ->setLockSettingsDisablePrivateChat($params['lockSettingsDisablePrivateChat']) - ->setLockSettingsDisablePublicChat($params['lockSettingsDisablePublicChat']) - ->setLockSettingsDisableNote($params['lockSettingsDisableNote']) - ->setLockSettingsHideUserList($params['lockSettingsHideUserList']) - ->setLockSettingsLockedLayout($params['lockSettingsLockedLayout']) - ->setLockSettingsLockOnJoin($params['lockSettingsLockOnJoin']) - ->setLockSettingsLockOnJoinConfigurable($params['lockSettingsLockOnJoinConfigurable']) - ->setLockSettingsHideViewersCursor($params['lockSettingsHideViewersCursor']) - ->setEndWhenNoModerator($params['endWhenNoModerator']) - ->setEndWhenNoModeratorDelayInMinutes($params['endWhenNoModeratorDelayInMinutes']) - ->setAllowModsToUnmuteUsers($params['allowModsToUnmuteUsers']) - ->setAllowModsToEjectCameras($params['allowModsToEjectCameras']) - ->setGuestPolicy($params['guestPolicy']) - ->setMeetingKeepEvents($params['meetingKeepEvents']) - ->setLearningDashboardEnabled($params['learningDashboardEnabled']) - ->setVirtualBackgroundsDisabled($params['virtualBackgroundsDisabled']) - ->setLearningDashboardCleanupDelayInMinutes($params['learningDashboardCleanupDelayInMinutes']) - ->setBannerColor($params['bannerColor']) - ->setBannerText($params['bannerText']) - ->setBreakoutRoomsEnabled($params['breakoutRoomsEnabled']) - ->setBreakoutRoomsRecord($params['breakoutRoomsRecord']) - ->setBreakoutRoomsPrivateChatEnabled($params['breakoutRoomsPrivateChatEnabled']) - ->setMeetingEndedURL($params['meetingEndedURL']) - ->setMeetingLayout($params['meetingLayout']) - ->setAllowRequestsWithoutSession($params['allowRequestsWithoutSession']) - ->setUserCameraCap($params['userCameraCap']) - ->setMeetingCameraCap($params['meetingCameraCap']) - ->setMeetingExpireIfNoUserJoinedInMinutes($params['meetingExpireIfNoUserJoinedInMinutes']) - ->setMeetingExpireWhenLastUserLeftInMinutes($params['meetingExpireWhenLastUserLeftInMinutes']) - ->setPreUploadedPresentationOverrideDefault($params['preUploadedPresentationOverrideDefault']) - ->setDisabledFeatures($params['disabledFeatures']) - ->setDisabledFeaturesExclude($params['disabledFeaturesExclude']) - ->setRecordFullDurationMedia($params['recordFullDurationMedia']) - ->addMeta('presenter', $params['meta_presenter']) - ->addMeta('bbb-recording-ready-url', $params['meta_bbb-recording-ready-url']) - ->setNotifyRecordingIsOn($params['notifyRecordingIsOn']) - ->setPresentationUploadExternalUrl($params['presentationUploadExternalUrl']) - ->setPresentationUploadExternalDescription($params['presentationUploadExternalDescription']) - ; - } - - /** - * @param mixed $params - */ - protected function getBreakoutCreateMock($params): CreateMeetingParameters - { - $createMeetingParams = $this->getCreateMock($params); - - return $createMeetingParams->setBreakout($params['isBreakout'])->setParentMeetingId($params['parentMeetingId'])-> - setSequence($params['sequence'])->setFreeJoin($params['freeJoin']); - } - - /** - * @return array - */ - protected function generateJoinMeetingParams(): array - { - return [ - 'meetingId' => $this->faker->uuid, - 'userName' => $this->faker->name, - 'password' => $this->faker->password, - 'userId' => $this->faker->numberBetween(1, 1000), - 'webVoiceConf' => $this->faker->word, - 'creationTime' => $this->faker->unixTime, - 'role' => $this->faker->randomElement(Role::getValues()), - 'excludeFromDashboard' => $this->faker->boolean, - 'userdata_countrycode' => $this->faker->countryCode, - 'userdata_email' => $this->faker->email, - 'userdata_commercial' => false, - ]; - } - - /** - * @param array $params - */ - protected function getJoinMeetingMock(array $params): JoinMeetingParameters - { - $joinMeetingParams = new JoinMeetingParameters($params['meetingId'], $params['userName'], $params['password']); - - return $joinMeetingParams - ->setUserId($params['userId']) - ->setWebVoiceConf($params['webVoiceConf']) - ->setCreationTime($params['creationTime']) - ->addUserData('countrycode', $params['userdata_countrycode']) - ->setRole($params['role']) - ->addUserData('email', $params['userdata_email']) - ->addUserData('commercial', $params['userdata_commercial']) - ->setExcludeFromDashboard($params['excludeFromDashboard']) - ; - } - - /** - * @return array - */ - protected function generateEndMeetingParams(): array - { - return [ - 'meetingId' => $this->faker->uuid, - 'password' => $this->faker->password, - ]; - } - - /** - * @param array $params - */ - protected function getEndMeetingMock(array $params): EndMeetingParameters - { - return new EndMeetingParameters($params['meetingId'], $params['password']); - } - protected function updateRecordings(BigBlueButton $bbb): UpdateRecordingsResponse { - $updateRecordingsParams = $this->generateUpdateRecordingsParams(); - $updateRecordingsMock = $this->getUpdateRecordingsParamsMock($updateRecordingsParams); + $updateRecordingsParams = Fixtures::generateUpdateRecordingsParams(); + $updateRecordingsMock = Fixtures::getUpdateRecordingsParamsMock($updateRecordingsParams); return $bbb->updateRecordings($updateRecordingsMock); } - /** - * @return array - */ - protected function generateUpdateRecordingsParams(): array - { - return [ - 'recordingId' => $this->faker->uuid, - 'meta_presenter' => $this->faker->name, - ]; - } - - /** - * @param array $params - */ - protected function getUpdateRecordingsParamsMock(array $params): UpdateRecordingsParameters - { - $updateRecordingsParams = new UpdateRecordingsParameters($params['recordingId']); - - return $updateRecordingsParams->addMeta('presenter', $params['meta_presenter']); - } - - // Load fixtures - protected function loadXmlFile(string $path): \SimpleXMLElement - { - $content = file_get_contents($path); - - if (!$content) { - throw new \RuntimeException('Content of file could not be loaded.'); - } - - $xml = simplexml_load_string($content); - - if (!$xml) { - throw new \RuntimeException('Content could not be converted to XML.'); - } - - return $xml; - } - - protected function loadJsonFile(string $path): string - { - $content = file_get_contents($path); - - if (!$content) { - throw new \RuntimeException('Content of file could not be loaded.'); - } - - return $content; - } - protected function minifyString(string $string): string { $minifiedString = str_replace(["\r\n", "\r", "\n", "\t", ' '], '', $string); From 282747359751964ff439345e6253e120d6fd2f62 Mon Sep 17 00:00:00 2001 From: Tim Korn Date: Mon, 11 Mar 2024 06:34:24 +0100 Subject: [PATCH 3/7] Improve feedback on bad response --- src/BigBlueButton.php | 2 +- src/Parameters/BaseParameters.php | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/BigBlueButton.php b/src/BigBlueButton.php index ee6da84e..b875eb42 100644 --- a/src/BigBlueButton.php +++ b/src/BigBlueButton.php @@ -487,7 +487,7 @@ private function sendRequest(string $url, string $payload = '', string $contentT } if ($httpCode < 200 || $httpCode >= 300) { - throw new BadResponseException('Bad response, HTTP code: ' . $httpCode); + throw new BadResponseException('Bad response, HTTP code: ' . $httpCode . ', url: ' . $url); } // CLOSE AND UNSET diff --git a/src/Parameters/BaseParameters.php b/src/Parameters/BaseParameters.php index 1efdc3d2..b9909948 100644 --- a/src/Parameters/BaseParameters.php +++ b/src/Parameters/BaseParameters.php @@ -37,6 +37,8 @@ abstract public function getHTTPQuery(); */ protected function buildHTTPQuery($array) { + // Potential replacement by: http_build_query($queries, '', '&', \PHP_QUERY_RFC3986); + return str_replace(['%20', '!', "'", '(', ')', '*'], ['+', '%21', '%27', '%28', '%29', '%2A'], http_build_query(array_filter($array), '', '&', \PHP_QUERY_RFC3986)); } } From e9fb2cc4679bb17fde90e2e13df3963bb28ceb5a Mon Sep 17 00:00:00 2001 From: Tim Korn Date: Sun, 31 Mar 2024 08:09:06 +0200 Subject: [PATCH 4/7] Remove remark from buildHTTPQuery-function --- src/Parameters/BaseParameters.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Parameters/BaseParameters.php b/src/Parameters/BaseParameters.php index b9909948..1efdc3d2 100644 --- a/src/Parameters/BaseParameters.php +++ b/src/Parameters/BaseParameters.php @@ -37,8 +37,6 @@ abstract public function getHTTPQuery(); */ protected function buildHTTPQuery($array) { - // Potential replacement by: http_build_query($queries, '', '&', \PHP_QUERY_RFC3986); - return str_replace(['%20', '!', "'", '(', ')', '*'], ['+', '%21', '%27', '%28', '%29', '%2A'], http_build_query(array_filter($array), '', '&', \PHP_QUERY_RFC3986)); } } From d484908be96394b47a8dc5d19c52eaeba72fd1e2 Mon Sep 17 00:00:00 2001 From: Tim Korn Date: Sun, 31 Mar 2024 22:00:12 +0200 Subject: [PATCH 5/7] Shift EnvLoader-class into test-dir --- tests/BigBlueButtonTest.php | 1 - {src/Util => tests}/EnvLoader.php | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) rename {src/Util => tests}/EnvLoader.php (95%) diff --git a/tests/BigBlueButtonTest.php b/tests/BigBlueButtonTest.php index e914f245..9ff41ae2 100644 --- a/tests/BigBlueButtonTest.php +++ b/tests/BigBlueButtonTest.php @@ -28,7 +28,6 @@ use BigBlueButton\Parameters\GetRecordingsParameters; use BigBlueButton\Parameters\IsMeetingRunningParameters; use BigBlueButton\Parameters\PublishRecordingsParameters; -use BigBlueButton\Util\EnvLoader; use BigBlueButton\Util\Fixtures; use BigBlueButton\Util\ParamsIterator; diff --git a/src/Util/EnvLoader.php b/tests/EnvLoader.php similarity index 95% rename from src/Util/EnvLoader.php rename to tests/EnvLoader.php index 4a53e58c..bf043457 100644 --- a/src/Util/EnvLoader.php +++ b/tests/EnvLoader.php @@ -18,7 +18,7 @@ * with BigBlueButton; if not, see . */ -namespace BigBlueButton\Util; +namespace BigBlueButton; use Dotenv\Dotenv; @@ -29,7 +29,7 @@ class EnvLoader { public static function loadEnvironmentVariables(): void { - $envPath = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR; + $envPath = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR; $envFileMain = '.env'; $envFileLocal = '.env.local'; From f56276ccb818ee0501f7006dd4aa99700a771596 Mon Sep 17 00:00:00 2001 From: Tim Korn Date: Thu, 4 Apr 2024 18:05:20 +0200 Subject: [PATCH 6/7] Move test-specific classes into test-folder --- src/BigBlueButton.php | 4 ++-- tests/BigBlueButtonTest.php | 17 +++++++++-------- .../Parameters/CreateMeetingParametersTest.php | 4 +--- .../DeleteRecordingsParametersTest.php | 2 -- tests/Parameters/EndMeetingParametersTest.php | 2 -- .../Parameters/GetMeetingInfoParametersTest.php | 2 -- .../GetRecordingTextTracksParametersTest.php | 2 -- .../Parameters/GetRecordingsParametersTest.php | 2 -- tests/Parameters/HooksCreateParametersTest.php | 2 -- tests/Parameters/HooksDestroyParametersTest.php | 2 -- .../Parameters/InsertDocumentParametersTest.php | 2 -- .../IsMeetingRunningParametersTest.php | 2 -- tests/Parameters/JoinMeetingParametersTest.php | 4 +--- .../PublishRecordingsParametersTest.php | 2 -- .../PutRecordingTextTrackParametersTest.php | 2 -- .../UpdateRecordingsParametersTest.php | 4 +--- tests/Responses/ApiVersionResponseTest.php | 2 +- tests/Responses/CreateMeetingResponseTest.php | 2 +- .../Responses/DeleteRecordingsResponseTest.php | 2 +- tests/Responses/EndMeetingResponseTest.php | 2 +- tests/Responses/GetMeetingInfoResponseTest.php | 2 +- tests/Responses/GetMeetingsResponseTest.php | 2 +- tests/Responses/GetRecordingsResponseTest.php | 2 +- .../GetRecordingsTextTracksResponseTest.php | 2 +- tests/Responses/HooksCreateResponseTest.php | 2 +- tests/Responses/HooksDestroyResponseTest.php | 2 +- tests/Responses/HooksListResponseTest.php | 2 +- tests/Responses/InsertDocumentResponseTest.php | 2 +- .../Responses/IsMeetingRunningResponseTest.php | 2 +- tests/Responses/JoinMeetingResponseTest.php | 2 +- .../Responses/PublishRecordingsResponseTest.php | 2 +- .../Responses/UpdateRecordingsResponseTest.php | 2 +- tests/TestCase.php | 3 +-- tests/{ => TestServices}/EnvLoader.php | 5 +++-- {src/Util => tests/TestServices}/Fixtures.php | 3 +-- .../TestServices}/ParamsIterator.php | 2 +- tests/Util/UrlBuilderTest.php | 2 ++ 37 files changed, 38 insertions(+), 64 deletions(-) rename tests/{ => TestServices}/EnvLoader.php (95%) rename {src/Util => tests/TestServices}/Fixtures.php (99%) rename {src/Util => tests/TestServices}/ParamsIterator.php (97%) diff --git a/src/BigBlueButton.php b/src/BigBlueButton.php index 749b6611..f9437757 100644 --- a/src/BigBlueButton.php +++ b/src/BigBlueButton.php @@ -469,9 +469,9 @@ public function setTimeOut(int $TimeOutInSeconds): self } /** - * @deprecated Replaced by same function-name provided by UrlBuilder-BigBlueButton + * @deprecated replaced by same function-name provided by UrlBuilder-BigBlueButton * - * Public accessor for buildUrl. + * Public accessor for buildUrl */ public function buildUrl(string $method = '', string $params = '', bool $append = true): string { diff --git a/tests/BigBlueButtonTest.php b/tests/BigBlueButtonTest.php index 9ff41ae2..aa2166d3 100644 --- a/tests/BigBlueButtonTest.php +++ b/tests/BigBlueButtonTest.php @@ -28,8 +28,9 @@ use BigBlueButton\Parameters\GetRecordingsParameters; use BigBlueButton\Parameters\IsMeetingRunningParameters; use BigBlueButton\Parameters\PublishRecordingsParameters; -use BigBlueButton\Util\Fixtures; -use BigBlueButton\Util\ParamsIterator; +use BigBlueButton\TestServices\EnvLoader; +use BigBlueButton\TestServices\Fixtures; +use BigBlueButton\TestServices\ParamsIterator; /** * Class BigBlueButtonTest. @@ -84,9 +85,9 @@ public function testApiVersion(): void // Create Meeting /** - * @deprecated Test will be removed together with the deprecated function from BigBlueButton::class + * @deprecated test will be removed together with the deprecated function from BigBlueButton::class * - * Test create meeting URL. + * Test create meeting URL */ public function testCreateMeetingUrl(): void { @@ -175,9 +176,9 @@ public function testCreateMeetingWithMultiDocument(): void // Join Meeting /** - * @deprecated Test will be removed together with the deprecated function from BigBlueButton::class + * @deprecated test will be removed together with the deprecated function from BigBlueButton::class * - * Test create join meeting URL. + * Test create join meeting URL */ public function testCreateJoinMeetingUrl(): void { @@ -231,9 +232,9 @@ public function testJoinMeeting(): void // End Meeting /** - * @deprecated Test will be removed together with the deprecated function from BigBlueButton::class + * @deprecated test will be removed together with the deprecated function from BigBlueButton::class * - * Test generate end meeting URL. + * Test generate end meeting URL */ public function testCreateEndMeetingUrl(): void { diff --git a/tests/Parameters/CreateMeetingParametersTest.php b/tests/Parameters/CreateMeetingParametersTest.php index e796ed0f..b58566b6 100644 --- a/tests/Parameters/CreateMeetingParametersTest.php +++ b/tests/Parameters/CreateMeetingParametersTest.php @@ -21,14 +21,12 @@ namespace BigBlueButton\Parameters; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * Class CreateMeetingParametersTest. * * @internal - * - * */ class CreateMeetingParametersTest extends TestCase { diff --git a/tests/Parameters/DeleteRecordingsParametersTest.php b/tests/Parameters/DeleteRecordingsParametersTest.php index 0ec07e15..0e5a5193 100644 --- a/tests/Parameters/DeleteRecordingsParametersTest.php +++ b/tests/Parameters/DeleteRecordingsParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class DeleteRecordingsParametersTest extends TestCase { diff --git a/tests/Parameters/EndMeetingParametersTest.php b/tests/Parameters/EndMeetingParametersTest.php index 89372bdd..12536b63 100644 --- a/tests/Parameters/EndMeetingParametersTest.php +++ b/tests/Parameters/EndMeetingParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class EndMeetingParametersTest extends TestCase { diff --git a/tests/Parameters/GetMeetingInfoParametersTest.php b/tests/Parameters/GetMeetingInfoParametersTest.php index 633f107a..81198c7e 100644 --- a/tests/Parameters/GetMeetingInfoParametersTest.php +++ b/tests/Parameters/GetMeetingInfoParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class GetMeetingInfoParametersTest extends TestCase { diff --git a/tests/Parameters/GetRecordingTextTracksParametersTest.php b/tests/Parameters/GetRecordingTextTracksParametersTest.php index 47f8b67c..0ba0231a 100644 --- a/tests/Parameters/GetRecordingTextTracksParametersTest.php +++ b/tests/Parameters/GetRecordingTextTracksParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class GetRecordingTextTracksParametersTest extends TestCase { diff --git a/tests/Parameters/GetRecordingsParametersTest.php b/tests/Parameters/GetRecordingsParametersTest.php index dd288d7b..c465f497 100644 --- a/tests/Parameters/GetRecordingsParametersTest.php +++ b/tests/Parameters/GetRecordingsParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class GetRecordingsParametersTest extends TestCase { diff --git a/tests/Parameters/HooksCreateParametersTest.php b/tests/Parameters/HooksCreateParametersTest.php index b2205e7a..c1c93467 100644 --- a/tests/Parameters/HooksCreateParametersTest.php +++ b/tests/Parameters/HooksCreateParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class HooksCreateParametersTest extends TestCase { diff --git a/tests/Parameters/HooksDestroyParametersTest.php b/tests/Parameters/HooksDestroyParametersTest.php index 82b5445e..4b21298a 100644 --- a/tests/Parameters/HooksDestroyParametersTest.php +++ b/tests/Parameters/HooksDestroyParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class HooksDestroyParametersTest extends TestCase { diff --git a/tests/Parameters/InsertDocumentParametersTest.php b/tests/Parameters/InsertDocumentParametersTest.php index 3b4207c7..d15e3cca 100644 --- a/tests/Parameters/InsertDocumentParametersTest.php +++ b/tests/Parameters/InsertDocumentParametersTest.php @@ -26,8 +26,6 @@ /** * @internal - * - * */ final class InsertDocumentParametersTest extends TestCase { diff --git a/tests/Parameters/IsMeetingRunningParametersTest.php b/tests/Parameters/IsMeetingRunningParametersTest.php index 13dbb1c9..2e661957 100644 --- a/tests/Parameters/IsMeetingRunningParametersTest.php +++ b/tests/Parameters/IsMeetingRunningParametersTest.php @@ -26,8 +26,6 @@ * Class IsMeetingRunningParametersTest. * * @internal - * - * */ class IsMeetingRunningParametersTest extends TestCase { diff --git a/tests/Parameters/JoinMeetingParametersTest.php b/tests/Parameters/JoinMeetingParametersTest.php index 0197888e..debd15e8 100644 --- a/tests/Parameters/JoinMeetingParametersTest.php +++ b/tests/Parameters/JoinMeetingParametersTest.php @@ -23,12 +23,10 @@ use BigBlueButton\Enum\MeetingLayout; use BigBlueButton\Enum\Role; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal - * - * */ class JoinMeetingParametersTest extends TestCase { diff --git a/tests/Parameters/PublishRecordingsParametersTest.php b/tests/Parameters/PublishRecordingsParametersTest.php index cfea4a5f..1cf5fad4 100644 --- a/tests/Parameters/PublishRecordingsParametersTest.php +++ b/tests/Parameters/PublishRecordingsParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class PublishRecordingsParametersTest extends TestCase { diff --git a/tests/Parameters/PutRecordingTextTrackParametersTest.php b/tests/Parameters/PutRecordingTextTrackParametersTest.php index bc188650..cefc8e1e 100644 --- a/tests/Parameters/PutRecordingTextTrackParametersTest.php +++ b/tests/Parameters/PutRecordingTextTrackParametersTest.php @@ -24,8 +24,6 @@ /** * @internal - * - * */ class PutRecordingTextTrackParametersTest extends TestCase { diff --git a/tests/Parameters/UpdateRecordingsParametersTest.php b/tests/Parameters/UpdateRecordingsParametersTest.php index c2fe2666..4d750695 100644 --- a/tests/Parameters/UpdateRecordingsParametersTest.php +++ b/tests/Parameters/UpdateRecordingsParametersTest.php @@ -21,12 +21,10 @@ namespace BigBlueButton\Parameters; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal - * - * */ class UpdateRecordingsParametersTest extends TestCase { diff --git a/tests/Responses/ApiVersionResponseTest.php b/tests/Responses/ApiVersionResponseTest.php index e1aacefa..f7505327 100644 --- a/tests/Responses/ApiVersionResponseTest.php +++ b/tests/Responses/ApiVersionResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/CreateMeetingResponseTest.php b/tests/Responses/CreateMeetingResponseTest.php index 597b225e..12eb6850 100644 --- a/tests/Responses/CreateMeetingResponseTest.php +++ b/tests/Responses/CreateMeetingResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/DeleteRecordingsResponseTest.php b/tests/Responses/DeleteRecordingsResponseTest.php index fce5d533..524c860f 100644 --- a/tests/Responses/DeleteRecordingsResponseTest.php +++ b/tests/Responses/DeleteRecordingsResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/EndMeetingResponseTest.php b/tests/Responses/EndMeetingResponseTest.php index 7dd45ecd..a7e09b8d 100644 --- a/tests/Responses/EndMeetingResponseTest.php +++ b/tests/Responses/EndMeetingResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/GetMeetingInfoResponseTest.php b/tests/Responses/GetMeetingInfoResponseTest.php index 5541d299..701ca2ea 100644 --- a/tests/Responses/GetMeetingInfoResponseTest.php +++ b/tests/Responses/GetMeetingInfoResponseTest.php @@ -22,7 +22,7 @@ use BigBlueButton\Core\Meeting; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/GetMeetingsResponseTest.php b/tests/Responses/GetMeetingsResponseTest.php index ae66d2c0..3cdf3b2f 100644 --- a/tests/Responses/GetMeetingsResponseTest.php +++ b/tests/Responses/GetMeetingsResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/GetRecordingsResponseTest.php b/tests/Responses/GetRecordingsResponseTest.php index 8e1d38a6..15dbe65a 100644 --- a/tests/Responses/GetRecordingsResponseTest.php +++ b/tests/Responses/GetRecordingsResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/GetRecordingsTextTracksResponseTest.php b/tests/Responses/GetRecordingsTextTracksResponseTest.php index fe8d8786..9d6b2c75 100644 --- a/tests/Responses/GetRecordingsTextTracksResponseTest.php +++ b/tests/Responses/GetRecordingsTextTracksResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/HooksCreateResponseTest.php b/tests/Responses/HooksCreateResponseTest.php index ebfddf90..2189df1d 100644 --- a/tests/Responses/HooksCreateResponseTest.php +++ b/tests/Responses/HooksCreateResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/HooksDestroyResponseTest.php b/tests/Responses/HooksDestroyResponseTest.php index a790864d..e5ec91b2 100644 --- a/tests/Responses/HooksDestroyResponseTest.php +++ b/tests/Responses/HooksDestroyResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/HooksListResponseTest.php b/tests/Responses/HooksListResponseTest.php index 8af600df..2f67e0d7 100644 --- a/tests/Responses/HooksListResponseTest.php +++ b/tests/Responses/HooksListResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/InsertDocumentResponseTest.php b/tests/Responses/InsertDocumentResponseTest.php index bd1d4442..ebf218e6 100644 --- a/tests/Responses/InsertDocumentResponseTest.php +++ b/tests/Responses/InsertDocumentResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/IsMeetingRunningResponseTest.php b/tests/Responses/IsMeetingRunningResponseTest.php index be137e45..c894689a 100644 --- a/tests/Responses/IsMeetingRunningResponseTest.php +++ b/tests/Responses/IsMeetingRunningResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/JoinMeetingResponseTest.php b/tests/Responses/JoinMeetingResponseTest.php index 92c763c2..18e2772c 100644 --- a/tests/Responses/JoinMeetingResponseTest.php +++ b/tests/Responses/JoinMeetingResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/PublishRecordingsResponseTest.php b/tests/Responses/PublishRecordingsResponseTest.php index 2b3ec8e4..f547a07a 100644 --- a/tests/Responses/PublishRecordingsResponseTest.php +++ b/tests/Responses/PublishRecordingsResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/Responses/UpdateRecordingsResponseTest.php b/tests/Responses/UpdateRecordingsResponseTest.php index b1ef0fed..0c153a05 100644 --- a/tests/Responses/UpdateRecordingsResponseTest.php +++ b/tests/Responses/UpdateRecordingsResponseTest.php @@ -21,7 +21,7 @@ namespace BigBlueButton\Responses; use BigBlueButton\TestCase; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; /** * @internal diff --git a/tests/TestCase.php b/tests/TestCase.php index 424cf848..bde7333d 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -20,7 +20,6 @@ namespace BigBlueButton; - use BigBlueButton\Enum\Feature; use BigBlueButton\Enum\GuestPolicy; use BigBlueButton\Enum\MeetingLayout; @@ -30,7 +29,7 @@ use BigBlueButton\Parameters\JoinMeetingParameters; use BigBlueButton\Responses\CreateMeetingResponse; use BigBlueButton\Responses\UpdateRecordingsResponse; -use BigBlueButton\Util\Fixtures; +use BigBlueButton\TestServices\Fixtures; use Faker\Factory as Faker; use Faker\Generator; diff --git a/tests/EnvLoader.php b/tests/TestServices/EnvLoader.php similarity index 95% rename from tests/EnvLoader.php rename to tests/TestServices/EnvLoader.php index bf043457..c44ba79b 100644 --- a/tests/EnvLoader.php +++ b/tests/TestServices/EnvLoader.php @@ -18,7 +18,7 @@ * with BigBlueButton; if not, see . */ -namespace BigBlueButton; +namespace BigBlueButton\TestServices; use Dotenv\Dotenv; @@ -29,7 +29,7 @@ class EnvLoader { public static function loadEnvironmentVariables(): void { - $envPath = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR; + $envPath = __DIR__ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR; $envFileMain = '.env'; $envFileLocal = '.env.local'; @@ -39,6 +39,7 @@ public static function loadEnvironmentVariables(): void $envFile = $envFileMain; } else { $envPath = realpath($envPath); + throw new \RuntimeException("Environment file ('{$envFileMain}' nor '{$envFileLocal}') not found in directory '{$envPath}'!"); } diff --git a/src/Util/Fixtures.php b/tests/TestServices/Fixtures.php similarity index 99% rename from src/Util/Fixtures.php rename to tests/TestServices/Fixtures.php index cf52dc0e..7040803f 100644 --- a/src/Util/Fixtures.php +++ b/tests/TestServices/Fixtures.php @@ -18,7 +18,7 @@ * with BigBlueButton; if not, see . */ -namespace BigBlueButton\Util; +namespace BigBlueButton\TestServices; use BigBlueButton\Enum\Feature; use BigBlueButton\Enum\GuestPolicy; @@ -359,5 +359,4 @@ public static function getUpdateRecordingsParamsMock(array $params): UpdateRecor return $updateRecordingsParams->addMeta('presenter', $params['meta_presenter']); } - } diff --git a/src/Util/ParamsIterator.php b/tests/TestServices/ParamsIterator.php similarity index 97% rename from src/Util/ParamsIterator.php rename to tests/TestServices/ParamsIterator.php index e1b6859d..233d8f84 100644 --- a/src/Util/ParamsIterator.php +++ b/tests/TestServices/ParamsIterator.php @@ -18,7 +18,7 @@ * with BigBlueButton; if not, see . */ -namespace BigBlueButton\Util; +namespace BigBlueButton\TestServices; use BigBlueButton\TestCase; diff --git a/tests/Util/UrlBuilderTest.php b/tests/Util/UrlBuilderTest.php index fd86fd53..87a15124 100644 --- a/tests/Util/UrlBuilderTest.php +++ b/tests/Util/UrlBuilderTest.php @@ -27,6 +27,8 @@ use BigBlueButton\Parameters\GetRecordingsParameters; use BigBlueButton\Parameters\PublishRecordingsParameters; use BigBlueButton\TestCase; +use BigBlueButton\TestServices\Fixtures; +use BigBlueButton\TestServices\ParamsIterator; /** * @internal From a108e9f472fe4da6c9dbb73439f660aadd8abeb4 Mon Sep 17 00:00:00 2001 From: Tim Korn Date: Sat, 20 Apr 2024 08:43:44 +0200 Subject: [PATCH 7/7] debug --- tests/BigBlueButtonTest.php | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/tests/BigBlueButtonTest.php b/tests/BigBlueButtonTest.php index e1a4694b..57799876 100644 --- a/tests/BigBlueButtonTest.php +++ b/tests/BigBlueButtonTest.php @@ -404,8 +404,6 @@ public function testUpdateRecordings(): void $this->assertEquals('FAILED', $result->getReturnCode()); $this->assertTrue($result->failed()); } -<<<<<<< HEAD -======= // Hooks: create @@ -443,27 +441,4 @@ public function testHooksDestroy(): void $hooksCreateResponse = $this->bbb->hooksDestroy($hooksDestroyParameters); $this->assertFalse($hooksCreateResponse->success(), $hooksCreateResponse->getMessage()); } - - /** - * @see https://github.com/vlucas/phpdotenv - */ - private function loadEnvironmentVariables(): void - { - $envPath = __DIR__ . '/..'; - $envFileMain = '.env'; - $envFileLocal = '.env.local'; - - if (file_exists("{$envPath}/{$envFileLocal}")) { - $envFile = $envFileLocal; - } elseif (file_exists("{$envPath}/{$envFileMain}")) { - $envFile = $envFileMain; - } else { - throw new \RuntimeException("Environment file ('{$envFileMain}' nor '{$envFileLocal}') not found!"); - } - - $dotenv = Dotenv::createUnsafeImmutable($envPath, $envFile); - $dotenv->load(); - $dotenv->required(['BBB_SECRET', 'BBB_SERVER_BASE_URL']); - } ->>>>>>> master }