5 use BookStack\Auth\Access\SocialAuthService;
7 class DebugViewTest extends TestCase
9 public function test_debug_view_shows_expected_details()
11 config()->set('app.debug', true);
12 $resp = $this->getDebugViewForException(new \InvalidArgumentException('An error occurred during testing'));
15 $resp->assertSeeText('An error occurred during testing');
17 $resp->assertSeeText('InvalidArgumentException');
19 $resp->assertSeeText('#0');
20 $resp->assertSeeText('#1');
22 $resp->assertSeeText('WARNING: Application is in debug mode. This mode has the potential to leak');
24 $resp->assertSeeText('PHP Version: ' . phpversion());
26 $resp->assertSeeText('BookStack Version: ' . trim(file_get_contents(base_path('version'))));
28 $resp->assertElementExists('a[href*="q=' . urlencode('BookStack An error occurred during testing') . '"]');
29 $resp->assertElementExists('a[href*="?q=is%3Aissue+' . urlencode('An error occurred during testing') . '"]');
32 public function test_debug_view_only_shows_when_debug_mode_is_enabled()
34 config()->set('app.debug', true);
35 $resp = $this->getDebugViewForException(new \InvalidArgumentException('An error occurred during testing'));
36 $resp->assertSeeText('Stack Trace');
37 $resp->assertDontSeeText('An unknown error occurred');
39 config()->set('app.debug', false);
40 $resp = $this->getDebugViewForException(new \InvalidArgumentException('An error occurred during testing'));
41 $resp->assertDontSeeText('Stack Trace');
42 $resp->assertSeeText('An unknown error occurred');
45 protected function getDebugViewForException(\Exception $exception): TestResponse
47 // Fake an error via social auth service used on login page
48 $mockService = $this->mock(SocialAuthService::class);
49 $mockService->shouldReceive('getActiveDrivers')->andThrow($exception);
51 return $this->get('/login');