From d35e251d6ed22e6b8a1a42b36d0993ca4777c880 Mon Sep 17 00:00:00 2001 From: bryanlopezinc Date: Wed, 5 Jun 2024 21:46:43 +0100 Subject: [PATCH] Added test for app url config --- app/Http/Controllers/SettingsController.php | 25 ++--------- tests/Feature/Settings/ShowSetUpPageTest.php | 47 +++++++++++++++++--- 2 files changed, 43 insertions(+), 29 deletions(-) diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index cbae6a4a53..26ab2b2a83 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -67,28 +67,9 @@ class SettingsController extends Controller $start_settings['db_error'] = $e->getMessage(); } - if (array_key_exists("HTTP_X_FORWARDED_PROTO", $_SERVER)) { - $protocol = $_SERVER["HTTP_X_FORWARDED_PROTO"] . "://"; - } elseif (array_key_exists('HTTPS', $_SERVER) && ('on' == $_SERVER['HTTPS'])) { - $protocol = "https://"; - } else { - $protocol = "http://"; - } - - if (array_key_exists("HTTP_X_FORWARDED_HOST", $_SERVER)) { - $host = $_SERVER["HTTP_X_FORWARDED_HOST"]; - } else { - $host = array_key_exists('SERVER_NAME', $_SERVER) ? $_SERVER['SERVER_NAME'] : null; - $port = array_key_exists('SERVER_PORT', $_SERVER) ? $_SERVER['SERVER_PORT'] : null; - if (('http://' === $protocol && '80' != $port) || ('https://' === $protocol && '443' != $port)) { - $host .= ':'.$port; - } - } - $pageURL = $protocol.$host.$_SERVER['REQUEST_URI']; - - $start_settings['url_config'] = config('app.url').'/setup'; - $start_settings['url_valid'] = ($start_settings['url_config'] === $pageURL); - $start_settings['real_url'] = $pageURL; + $start_settings['url_config'] = trim(config('app.url'), '/'). '/setup'; + $start_settings['real_url'] = request()->url(); + $start_settings['url_valid'] = $start_settings['url_config'] === $start_settings['real_url']; $start_settings['php_version_min'] = true; // Curl the .env file to make sure it's not accessible via a browser diff --git a/tests/Feature/Settings/ShowSetUpPageTest.php b/tests/Feature/Settings/ShowSetUpPageTest.php index 95638be0d6..44c3d5a420 100644 --- a/tests/Feature/Settings/ShowSetUpPageTest.php +++ b/tests/Feature/Settings/ShowSetUpPageTest.php @@ -25,13 +25,6 @@ class ShowSetUpPageTest extends TestCase */ protected bool $preventStrayRequest = true; - protected function setUp(): void - { - parent::setUp(); - - $_SERVER['REQUEST_URI'] = '/setup'; - } - protected function getSetUpPageResponse(): TestResponse { if ($this->preventStrayRequest) { @@ -234,4 +227,44 @@ class ShowSetUpPageTest extends TestCase return true; }); } + + public function testWillShowErrorMessageWhenAppUrlIsNotSameWithPageUrl(): void + { + config(['app.url' => 'http://www.github.com']); + + $this->getSetUpPageResponse()->assertOk(); + + $this->assertSeeAppUrlMisconfigurationErrorMessage(); + } + + protected function assertSeeAppUrlMisconfigurationErrorMessage(bool $shouldSee = true): void + { + $url = URL::to('setup'); + + $errorMessage = "Uh oh! Snipe-IT thinks your URL is http://www.github.com/setup, but your real URL is {$url}"; + $successMessage = 'That URL looks right! Good job!'; + + if ($shouldSee) { + self::$latestResponse->assertSee($errorMessage)->assertDontSee($successMessage); + return; + } + + self::$latestResponse->assertSee($successMessage)->assertDontSee($errorMessage); + } + + public function testWillNotShowErrorMessageWhenAppUrlIsSameWithPageUrl(): void + { + $this->getSetUpPageResponse()->assertOk(); + + $this->assertSeeAppUrlMisconfigurationErrorMessage(false); + } + + public function testWhenAppUrlContainsTrailingSlash(): void + { + config(['app.url' => 'http://www.github.com/']); + + $this->getSetUpPageResponse()->assertOk(); + + $this->assertSeeAppUrlMisconfigurationErrorMessage(); + } }