WebProcessorTest.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php declare(strict_types=1);
  2. /*
  3. * This file is part of the Monolog package.
  4. *
  5. * (c) Jordi Boggiano <j.boggiano@seld.be>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Monolog\Processor;
  11. class WebProcessorTest extends \Monolog\Test\MonologTestCase
  12. {
  13. public function testProcessor()
  14. {
  15. $server = [
  16. 'REQUEST_URI' => 'A',
  17. 'REMOTE_ADDR' => 'B',
  18. 'REQUEST_METHOD' => 'C',
  19. 'HTTP_REFERER' => 'D',
  20. 'SERVER_NAME' => 'F',
  21. 'UNIQUE_ID' => 'G',
  22. ];
  23. $processor = new WebProcessor($server);
  24. $record = $processor($this->getRecord());
  25. $this->assertEquals($server['REQUEST_URI'], $record->extra['url']);
  26. $this->assertEquals($server['REMOTE_ADDR'], $record->extra['ip']);
  27. $this->assertEquals($server['REQUEST_METHOD'], $record->extra['http_method']);
  28. $this->assertEquals($server['HTTP_REFERER'], $record->extra['referrer']);
  29. $this->assertEquals($server['SERVER_NAME'], $record->extra['server']);
  30. $this->assertEquals($server['UNIQUE_ID'], $record->extra['unique_id']);
  31. }
  32. public function testProcessorDoNothingIfNoRequestUri()
  33. {
  34. $server = [
  35. 'REMOTE_ADDR' => 'B',
  36. 'REQUEST_METHOD' => 'C',
  37. ];
  38. $processor = new WebProcessor($server);
  39. $record = $processor($this->getRecord());
  40. $this->assertEmpty($record->extra);
  41. }
  42. public function testProcessorReturnNullIfNoHttpReferer()
  43. {
  44. $server = [
  45. 'REQUEST_URI' => 'A',
  46. 'REMOTE_ADDR' => 'B',
  47. 'REQUEST_METHOD' => 'C',
  48. 'SERVER_NAME' => 'F',
  49. ];
  50. $processor = new WebProcessor($server);
  51. $record = $processor($this->getRecord());
  52. $this->assertNull($record->extra['referrer']);
  53. }
  54. public function testProcessorDoesNotAddUniqueIdIfNotPresent()
  55. {
  56. $server = [
  57. 'REQUEST_URI' => 'A',
  58. 'REMOTE_ADDR' => 'B',
  59. 'REQUEST_METHOD' => 'C',
  60. 'SERVER_NAME' => 'F',
  61. ];
  62. $processor = new WebProcessor($server);
  63. $record = $processor($this->getRecord());
  64. $this->assertFalse(isset($record->extra['unique_id']));
  65. }
  66. public function testProcessorAddsOnlyRequestedExtraFields()
  67. {
  68. $server = [
  69. 'REQUEST_URI' => 'A',
  70. 'REMOTE_ADDR' => 'B',
  71. 'REQUEST_METHOD' => 'C',
  72. 'SERVER_NAME' => 'F',
  73. ];
  74. $processor = new WebProcessor($server, ['url', 'http_method']);
  75. $record = $processor($this->getRecord());
  76. $this->assertSame(['url' => 'A', 'http_method' => 'C'], $record->extra);
  77. }
  78. public function testProcessorAddsOnlyRequestedExtraFieldsIncludingOptionalFields()
  79. {
  80. $server = [
  81. 'REQUEST_URI' => 'A',
  82. 'UNIQUE_ID' => 'X',
  83. ];
  84. $processor = new WebProcessor($server, ['url']);
  85. $record = $processor($this->getRecord());
  86. $this->assertSame(['url' => 'A'], $record->extra);
  87. }
  88. public function testProcessorConfiguringOfExtraFields()
  89. {
  90. $server = [
  91. 'REQUEST_URI' => 'A',
  92. 'REMOTE_ADDR' => 'B',
  93. 'REQUEST_METHOD' => 'C',
  94. 'SERVER_NAME' => 'F',
  95. ];
  96. $processor = new WebProcessor($server, ['url' => 'REMOTE_ADDR']);
  97. $record = $processor($this->getRecord());
  98. $this->assertSame(['url' => 'B'], $record->extra);
  99. }
  100. public function testInvalidData()
  101. {
  102. $this->expectException(\TypeError::class);
  103. new WebProcessor(new \stdClass);
  104. }
  105. }