From eeb72b32c6420eba1064e6df584f242df6d82424 Mon Sep 17 00:00:00 2001 From: Derrick Lin Date: Fri, 24 Aug 2018 10:33:54 -0700 Subject: [PATCH 1/2] Added a null guard for the dsq_filter_rest_url. Added functionality tests to ensure dsq_filter_rest_url does not error when _SERVER host is not set. --- disqus/admin/class-disqus-admin.php | 4 ++-- tests/test-admin.php | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/disqus/admin/class-disqus-admin.php b/disqus/admin/class-disqus-admin.php index 4910902..b31253f 100755 --- a/disqus/admin/class-disqus-admin.php +++ b/disqus/admin/class-disqus-admin.php @@ -164,7 +164,7 @@ public function dsq_filter_rest_url( $rest_url ) { $rest_host .= ':' . $rest_url_parts['port']; } - $current_host = $_SERVER['HTTP_HOST']; + $current_host = isset( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : $rest_host; if ( $rest_host !== $current_host ) { $rest_url = preg_replace( '/' . $rest_host . '/', $current_host, $rest_url, 1 ); @@ -241,7 +241,7 @@ public function dsq_construct_admin_bar( $wp_admin_bar ) { $disqus_settings_node_args = array( 'parent' => 'disqus', 'id' => 'disqus_settings', - 'title' => 'Settings', + 'title' => 'TEST', 'href' => $this->get_disqus_admin_url( 'settings/general' ), ); diff --git a/tests/test-admin.php b/tests/test-admin.php index 51889e7..ed65a46 100644 --- a/tests/test-admin.php +++ b/tests/test-admin.php @@ -42,4 +42,18 @@ function test_dsq_filter_rest_url_different_host() { $_SERVER['HTTP_HOST'] = $previous_host; } + /** + * Ensure that REST URL filter will not error when HTTP_HOST is undefined. + */ + function test_dsq_filter_rest_url_no_host() { + $admin = new Disqus_Admin( 'disqus', '0.0.0', 'foo' ); + $previous_host = $_SERVER['HTTP_HOST']; + $_SERVER['HTTP_HOST'] = NULL; + $init_url = 'https://example.org/wp-json/disqus/v1'; + + $rest_url = $admin->dsq_filter_rest_url($init_url); + + $this->assertEquals( $init_url, $rest_url ); + } + } From d370b6276d89752495bd268d7d18ae6b3914ab48 Mon Sep 17 00:00:00 2001 From: Derrick Lin Date: Fri, 24 Aug 2018 10:33:54 -0700 Subject: [PATCH 2/2] Added a null guard for the dsq_filter_rest_url. Added functionality tests to ensure dsq_filter_rest_url does not error when _SERVER host is not set. --- disqus/admin/class-disqus-admin.php | 2 +- tests/test-admin.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/disqus/admin/class-disqus-admin.php b/disqus/admin/class-disqus-admin.php index 4910902..f6cdb7a 100755 --- a/disqus/admin/class-disqus-admin.php +++ b/disqus/admin/class-disqus-admin.php @@ -164,7 +164,7 @@ public function dsq_filter_rest_url( $rest_url ) { $rest_host .= ':' . $rest_url_parts['port']; } - $current_host = $_SERVER['HTTP_HOST']; + $current_host = isset( $_SERVER['HTTP_HOST'] ) ? $_SERVER['HTTP_HOST'] : $rest_host; if ( $rest_host !== $current_host ) { $rest_url = preg_replace( '/' . $rest_host . '/', $current_host, $rest_url, 1 ); diff --git a/tests/test-admin.php b/tests/test-admin.php index 51889e7..ed65a46 100644 --- a/tests/test-admin.php +++ b/tests/test-admin.php @@ -42,4 +42,18 @@ function test_dsq_filter_rest_url_different_host() { $_SERVER['HTTP_HOST'] = $previous_host; } + /** + * Ensure that REST URL filter will not error when HTTP_HOST is undefined. + */ + function test_dsq_filter_rest_url_no_host() { + $admin = new Disqus_Admin( 'disqus', '0.0.0', 'foo' ); + $previous_host = $_SERVER['HTTP_HOST']; + $_SERVER['HTTP_HOST'] = NULL; + $init_url = 'https://example.org/wp-json/disqus/v1'; + + $rest_url = $admin->dsq_filter_rest_url($init_url); + + $this->assertEquals( $init_url, $rest_url ); + } + }