summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJordi Boggiano <j.boggiano@seld.be>2011-06-29 18:58:26 +0200
committerJordi Boggiano <j.boggiano@seld.be>2011-06-29 18:58:40 +0200
commit78a26a3f4f6e51b9bf6a7f328a945e3b8c1b408c (patch)
tree00f6008e10a0aaf6dd945a8faaf5ea0c0aa56566
parentc465a5dd02179c98ce1f58c4b002ff31b608eda9 (diff)
downloadmonolog-78a26a3f4f6e51b9bf6a7f328a945e3b8c1b408c.zip
monolog-78a26a3f4f6e51b9bf6a7f328a945e3b8c1b408c.tar.gz
monolog-78a26a3f4f6e51b9bf6a7f328a945e3b8c1b408c.tar.bz2
Tested WebProcessor
-rw-r--r--src/Monolog/Processor/WebProcessor.php22
-rw-r--r--tests/Monolog/Processor/WebProcessorTest.php39
2 files changed, 58 insertions, 3 deletions
diff --git a/src/Monolog/Processor/WebProcessor.php b/src/Monolog/Processor/WebProcessor.php
index 24f4404..46b2177 100644
--- a/src/Monolog/Processor/WebProcessor.php
+++ b/src/Monolog/Processor/WebProcessor.php
@@ -18,6 +18,22 @@ namespace Monolog\Processor;
*/
class WebProcessor
{
+ protected $serverData;
+
+ /**
+ * @param mixed $serverData array or object w/ ArrayAccess that provides access to the $_SERVER data
+ */
+ public function __construct($serverData = null)
+ {
+ if (null === $serverData) {
+ $this->serverData =& $_SERVER;
+ } elseif (is_array($serverData) || $serverData instanceof \ArrayAccess) {
+ $this->serverData = $serverData;
+ } else {
+ throw new \UnexpectedValueException('$serverData must be an array or object implementing ArrayAccess.');
+ }
+ }
+
/**
* @param array $record
* @param HandlerInterface $handler
@@ -28,9 +44,9 @@ class WebProcessor
$record['extra'] = array_merge(
$record['extra'],
array(
- 'url' => $_SERVER['REQUEST_URI'],
- 'ip' => $_SERVER['REMOTE_ADDR'],
- 'method' => $_SERVER['REQUEST_METHOD'],
+ 'url' => $this->serverData['REQUEST_URI'],
+ 'ip' => $this->serverData['REMOTE_ADDR'],
+ 'http_method' => $this->serverData['REQUEST_METHOD'],
)
);
diff --git a/tests/Monolog/Processor/WebProcessorTest.php b/tests/Monolog/Processor/WebProcessorTest.php
new file mode 100644
index 0000000..28a04c9
--- /dev/null
+++ b/tests/Monolog/Processor/WebProcessorTest.php
@@ -0,0 +1,39 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class WebProcessorTest extends TestCase
+{
+ public function testProcessor()
+ {
+ $server = array(
+ 'REQUEST_URI' => 'A',
+ 'REMOTE_ADDR' => 'B',
+ 'REQUEST_METHOD' => 'C',
+ );
+ $processor = new WebProcessor($server);
+ $record = $processor($this->getRecord());
+ $this->assertEquals($server['REQUEST_URI'], $record['extra']['url']);
+ $this->assertEquals($server['REMOTE_ADDR'], $record['extra']['ip']);
+ $this->assertEquals($server['REQUEST_METHOD'], $record['extra']['http_method']);
+ }
+
+ /**
+ * @expectedException UnexpectedValueException
+ */
+ public function testInvalidData()
+ {
+ new WebProcessor(new \stdClass);
+ }
+}