X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/2ae89f2c321b5974ed3733ae40f5e5496b21f9f4..refs/pull/3012/head:/tests/ThemeTest.php diff --git a/tests/ThemeTest.php b/tests/ThemeTest.php index 198c2b0aa..9aa7873b0 100644 --- a/tests/ThemeTest.php +++ b/tests/ThemeTest.php @@ -1,12 +1,15 @@ -assertInstanceOf(ConfigurableEnvironmentInterface::class, $environment); $callbackCalled = true; + return $environment; }; Theme::listen(ThemeEvents::COMMONMARK_ENVIRONMENT_CONFIGURE, $callback); @@ -122,11 +126,43 @@ class ThemeTest extends TestCase $resp->assertStatus(443); } + public function test_event_auth_login_standard() + { + $args = []; + $callback = function (...$eventArgs) use (&$args) { + $args = $eventArgs; + }; + + Theme::listen(ThemeEvents::AUTH_LOGIN, $callback); + $this->post('/login', ['email' => 'admin@admin.com', 'password' => 'password']); + + $this->assertCount(2, $args); + $this->assertEquals('standard', $args[0]); + $this->assertInstanceOf(User::class, $args[1]); + } + + public function test_event_auth_register_standard() + { + $args = []; + $callback = function (...$eventArgs) use (&$args) { + $args = $eventArgs; + }; + Theme::listen(ThemeEvents::AUTH_REGISTER, $callback); + $this->setSettings(['registration-enabled' => 'true']); + + $user = User::factory()->make(); + $this->post('/register', ['email' => $user->email, 'name' => $user->name, 'password' => 'password']); + + $this->assertCount(2, $args); + $this->assertEquals('standard', $args[0]); + $this->assertInstanceOf(User::class, $args[1]); + } + public function test_add_social_driver() { Theme::addSocialDriver('catnet', [ - 'client_id' => 'abc123', - 'client_secret' => 'def456' + 'client_id' => 'abc123', + 'client_secret' => 'def456', ], 'SocialiteProviders\Discord\DiscordExtendSocialite@handleTesting'); $this->assertEquals('catnet', config('services.catnet.name')); @@ -140,9 +176,9 @@ class ThemeTest extends TestCase public function test_add_social_driver_uses_name_in_config_if_given() { Theme::addSocialDriver('catnet', [ - 'client_id' => 'abc123', + 'client_id' => 'abc123', 'client_secret' => 'def456', - 'name' => 'Super Cat Name', + 'name' => 'Super Cat Name', ], 'SocialiteProviders\Discord\DiscordExtendSocialite@handleTesting'); $this->assertEquals('Super Cat Name', config('services.catnet.name')); @@ -150,10 +186,30 @@ class ThemeTest extends TestCase $loginResp->assertSee('Super Cat Name'); } + public function test_add_social_driver_allows_a_configure_for_redirect_callback_to_be_passed() + { + Theme::addSocialDriver( + 'discord', + [ + 'client_id' => 'abc123', + 'client_secret' => 'def456', + 'name' => 'Super Cat Name', + ], + 'SocialiteProviders\Discord\DiscordExtendSocialite@handle', + function ($driver) { + $driver->with(['donkey' => 'donut']); + } + ); + + $loginResp = $this->get('/login/service/discord'); + $redirect = $loginResp->headers->get('location'); + $this->assertStringContainsString('donkey=donut', $redirect); + } + protected function usingThemeFolder(callable $callback) { // Create a folder and configure a theme - $themeFolderName = 'testing_theme_' . rtrim(base64_encode(time()), "="); + $themeFolderName = 'testing_theme_' . rtrim(base64_encode(time()), '='); config()->set('view.theme', $themeFolderName); $themeFolderPath = theme_path(''); File::makeDirectory($themeFolderPath); @@ -163,5 +219,4 @@ class ThemeTest extends TestCase // Cleanup the custom theme folder we created File::deleteDirectory($themeFolderPath); } - -} \ No newline at end of file +}