Browse Source

Add test assertions and refactor shared code.

Refs #8439
Mark Story 10 years ago
parent
commit
2e12b89f64
2 changed files with 27 additions and 25 deletions
  1. 24 24
      src/Error/BaseErrorHandler.php
  2. 3 1
      tests/TestCase/Error/ErrorHandlerTest.php

+ 24 - 24
src/Error/BaseErrorHandler.php

@@ -270,22 +270,11 @@ abstract class BaseErrorHandler
                 'start' => 1,
                 'format' => 'log'
             ]);
-            
+
             $request = Router::getRequest();
             if ($request) {
-                $message .= "\nRequest URL: " . $request->here();
-                
-                $referer = $request->env('HTTP_REFERER');
-                if ($referer) {
-                    $message .= "\nReferer URL: " . $referer;
-                }
-                
-                $clientIp = $request->clientIp();
-                if ($clientIp && $clientIp !== '::1') {
-                    $message .= "\nClient IP: " . $clientIp;
-                }
+                $message .= $this->_requestContext($request);
             }
-            
             $message .= "\nTrace:\n" . $trace . "\n";
         }
         $message .= "\n\n";
@@ -320,6 +309,27 @@ abstract class BaseErrorHandler
     }
 
     /**
+     * Get the request context for an error/exception trace.
+     *
+     * @param \Cake\Network\Request $request The request to read from.
+     * @return string
+     */
+    protected function _requestContext($request)
+    {
+        $message = "\nRequest URL: " . $request->here();
+
+        $referer = $request->env('HTTP_REFERER');
+        if ($referer) {
+            $message .= "\nReferer URL: " . $referer;
+        }
+        $clientIp = $request->clientIp();
+        if ($clientIp && $clientIp !== '::1') {
+            $message .= "\nClient IP: " . $clientIp;
+        }
+        return $message;
+    }
+
+    /**
      * Generates a formatted error message
      *
      * @param \Exception $exception Exception instance
@@ -347,17 +357,7 @@ abstract class BaseErrorHandler
 
         $request = Router::getRequest();
         if ($request) {
-            $message .= "\nRequest URL: " . $request->here();
-            
-            $referer = $request->env('HTTP_REFERER');
-            if ($referer) {
-                $message .= "\nReferer URL: " . $referer;
-            }
-            
-            $clientIp = $request->clientIp();
-            if ($clientIp && $clientIp !== '::1') {
-                $message .= "\nClient IP: " . $clientIp;
-            }
+            $message .= $this->_requestContext($request);
         }
 
         if (!empty($config['trace'])) {

+ 3 - 1
tests/TestCase/Error/ErrorHandlerTest.php

@@ -222,7 +222,9 @@ class ErrorHandlerTest extends TestCase
                 $this->logicalAnd(
                     $this->stringContains('Notice (8): Undefined variable: out in '),
                     $this->stringContains('Trace:'),
-                    $this->stringContains(__NAMESPACE__ . '\ErrorHandlerTest::testHandleErrorLoggingTrace()')
+                    $this->stringContains(__NAMESPACE__ . '\ErrorHandlerTest::testHandleErrorLoggingTrace()'),
+                    $this->stringContains('Request URL:'),
+                    $this->stringContains('Referer URL:')
                 )
             );