From d0d268588f20f8468b104b65b7f6d3394c74cdf2 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli Date: Sun, 6 Nov 2022 22:48:28 +0100 Subject: Refactor & fix/adapt tests --- program/include/rcmail.php | 7 ++++--- tests/Rcmail/OutputHtml.php | 4 ++-- tests/Rcmail/Rcmail.php | 14 ++++++++++---- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/program/include/rcmail.php b/program/include/rcmail.php index a3bbc3e2f..f4f5e3298 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -1119,9 +1119,9 @@ class rcmail extends rcube } $base_path = ''; - $server_var = $this->get_requesr_uri_field(); + $server_var = $this->get_request_uri_field(); if ($server_var && !empty($_SERVER[$server_var])) { - $base_path = preg_replace('/[?&].*$/', '', $_SERVER[$server_var]) ?: './'; + $base_path = preg_replace('/[?&].*$/', '', $_SERVER[$server_var]); } else if (!empty($_SERVER['REDIRECT_SCRIPT_URL'])) { $base_path = $_SERVER['REDIRECT_SCRIPT_URL']; @@ -1168,7 +1168,8 @@ class rcmail extends rcube * Get the 'request_uri_field' config option * with an additional check against the 'proxy_whitelist' config */ - protected function get_requesr_uri_field() { + protected function get_request_uri_field() + { $server_var = $this->config->get('request_uri_field'); if (!empty($server_var) && (strpos($server_var, 'HTTP_') !== 0 || rcube_utils::check_proxy_whitelist_ip())) { return $server_var; diff --git a/tests/Rcmail/OutputHtml.php b/tests/Rcmail/OutputHtml.php index 9aa294228..9c891831a 100644 --- a/tests/Rcmail/OutputHtml.php +++ b/tests/Rcmail/OutputHtml.php @@ -381,7 +381,7 @@ class Rcmail_RcmailOutputHtml extends PHPUnit\Framework\TestCase $rcmail = rcube::get_instance(); $output = new rcmail_output_html(); - $this->assertSame('
test
', $output->form_tag([], 'test')); + $this->assertSame('
test
', $output->form_tag([], 'test')); } /** @@ -404,7 +404,7 @@ class Rcmail_RcmailOutputHtml extends PHPUnit\Framework\TestCase $output = new rcmail_output_html(); $expected = '
' + . ' action="vendor/bin/phpunit?_task=cli" method="get">' . '
'; $this->assertSame($expected, $output->search_form([])); diff --git a/tests/Rcmail/Rcmail.php b/tests/Rcmail/Rcmail.php index 1f5587273..4c4de7c68 100644 --- a/tests/Rcmail/Rcmail.php +++ b/tests/Rcmail/Rcmail.php @@ -14,6 +14,7 @@ class Rcmail_Rcmail extends ActionTestCase $_SERVER['SERVER_PORT'] = '443'; $_SERVER['SCRIPT_NAME'] = '/sub/index.php'; $_SERVER['HTTPS'] = true; + $_SERVER['X_FORWARDED_PATH'] = '/proxied/'; rcmail::get_instance()->filename = ''; } @@ -126,27 +127,32 @@ class Rcmail_Rcmail extends ActionTestCase $rcmail = rcmail::get_instance(); $this->assertEquals( - './?_task=cli&_action=test', + '/sub/?_task=cli&_action=test', $rcmail->url('test'), "Action only" ); $this->assertEquals( - './?_task=cli&_action=test&_a=AA', + '/sub/?_task=cli&_action=test&_a=AA', $rcmail->url(['action' => 'test', 'a' => 'AA']), "Unprefixed parameters" ); $this->assertEquals( - './?_task=cli&_action=test&_b=BB', + '/sub/?_task=cli&_action=test&_b=BB', $rcmail->url(['_action' => 'test', '_b' => 'BB', '_c' => null]), "Prefixed parameters (skip empty)" ); - $this->assertEquals('./?_task=cli', $rcmail->url([]), "Empty input"); + $this->assertEquals('/sub/?_task=cli', $rcmail->url([]), "Empty input"); + $_SERVER['REQUEST_URI'] = '/rc/?_task=mail'; $this->assertEquals('/rc/?_task=cli', $rcmail->url([]), "Empty input with REQUEST_URI prefix"); + $rcmail->config->set('request_uri_field', 'X_FORWARDED_PATH'); + $this->assertEquals('/proxied/?_task=cli', $rcmail->url([]), "Consider request_uri_field config"); + $rcmail->config->set('request_uri_field', 'UNDEFINED'); + $this->assertEquals( '/sub/?_task=cli&_action=test&_mode=ABS', $rcmail->url(['_action' => 'test', '_mode' => 'ABS'], true), -- cgit v1.2.3