Przeglądaj źródła

SlackWebhookHandler: use footer for username & footer_icon for userIcon (#1617)

* Use footer for username & footer_icon for userIcon

* Update test case for SlackWebhookHandler
Bei Xiao 3 lat temu
rodzic
commit
f9a8e87563

+ 8 - 6
src/Monolog/Handler/Slack/SlackRecord.php

@@ -146,12 +146,14 @@ class SlackRecord
 
         if ($this->useAttachment) {
             $attachment = array(
-                'fallback'  => $message,
-                'text'      => $message,
-                'color'     => $this->getAttachmentColor($record['level']),
-                'fields'    => array(),
-                'mrkdwn_in' => array('fields'),
-                'ts'        => $record['datetime']->getTimestamp(),
+                'fallback'    => $message,
+                'text'        => $message,
+                'color'       => $this->getAttachmentColor($record['level']),
+                'fields'      => array(),
+                'mrkdwn_in'   => array('fields'),
+                'ts'          => $record['datetime']->getTimestamp(),
+                'footer'      => $this->username,
+                'footer_icon' => $this->userIcon,
             );
 
             if ($this->useShortAttachment) {

+ 49 - 0
tests/Monolog/Handler/SlackWebhookHandlerTest.php

@@ -51,6 +51,8 @@ class SlackWebhookHandlerTest extends TestCase
                     'title' => 'Message',
                     'mrkdwn_in' => array('fields'),
                     'ts' => $record['datetime']->getTimestamp(),
+                    'footer' => null,
+                    'footer_icon' => null,
                 ),
             ),
         ), $slackRecord->getSlackData($record));
@@ -84,6 +86,53 @@ class SlackWebhookHandlerTest extends TestCase
         ), $slackRecord->getSlackData($this->getRecord()));
     }
 
+    /**
+     * @covers ::__construct
+     * @covers ::getSlackRecord
+     */
+    public function testConstructorFullWithAttachment()
+    {
+        $handler = new SlackWebhookHandler(
+            self::WEBHOOK_URL,
+            'test-channel-with-attachment',
+            'test-username-with-attachment',
+            true,
+            'https://www.example.com/example.png',
+            false,
+            false,
+            Logger::DEBUG,
+            false
+        );
+
+        $record = $this->getRecord();
+        $slackRecord = $handler->getSlackRecord();
+        $this->assertInstanceOf('Monolog\Handler\Slack\SlackRecord', $slackRecord);
+        $this->assertEquals(array(
+            'username' => 'test-username-with-attachment',
+            'channel' => 'test-channel-with-attachment',
+            'attachments' => array(
+                array(
+                    'fallback' => 'test',
+                    'text' => 'test',
+                    'color' => SlackRecord::COLOR_WARNING,
+                    'fields' => array(
+                        array(
+                            'title' => 'Level',
+                            'value' => Logger::getLevelName(Logger::WARNING),
+                            'short' => false,
+                        ),
+                    ),
+                    'mrkdwn_in' => array('fields'),
+                    'ts' => $record['datetime']->getTimestamp(),
+                    'footer' => 'test-username-with-attachment',
+                    'footer_icon' => 'https://www.example.com/example.png',
+                    'title' => 'Message',
+                ),
+            ),
+            'icon_url' => 'https://www.example.com/example.png',
+        ), $slackRecord->getSlackData($record));
+    }
+
     /**
      * @covers ::getFormatter
      */