Move IMAP Email Content body to an attribute (#11096)

* Move IMAP Email Content body to an attribute

* Fix variable names
This commit is contained in:
NotoriousBDG 2018-01-01 21:09:40 -05:00 committed by Paulus Schoutsen
parent 0f914b4c20
commit e2cec9b3ae
2 changed files with 23 additions and 13 deletions

View File

@ -219,17 +219,19 @@ class EmailContentSensor(Entity):
return return
if self.sender_allowed(email_message): if self.sender_allowed(email_message):
message_body = EmailContentSensor.get_msg_text(email_message) message = EmailContentSensor.get_msg_subject(email_message)
if self._value_template is not None: if self._value_template is not None:
message_body = self.render_template(email_message) message = self.render_template(email_message)
self._message = message_body self._message = message
self._state_attributes = { self._state_attributes = {
ATTR_FROM: ATTR_FROM:
EmailContentSensor.get_msg_sender(email_message), EmailContentSensor.get_msg_sender(email_message),
ATTR_SUBJECT: ATTR_SUBJECT:
EmailContentSensor.get_msg_subject(email_message), EmailContentSensor.get_msg_subject(email_message),
ATTR_DATE: ATTR_DATE:
email_message['Date'] email_message['Date'],
ATTR_BODY:
EmailContentSensor.get_msg_text(email_message)
} }

View File

@ -60,7 +60,9 @@ class EmailContentSensor(unittest.TestCase):
sensor.entity_id = 'sensor.emailtest' sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True) sensor.schedule_update_ha_state(True)
self.hass.block_till_done() self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state) self.assertEqual('Test', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])
self.assertEqual('sender@test.com', self.assertEqual('sender@test.com',
sensor.device_state_attributes['from']) sensor.device_state_attributes['from'])
self.assertEqual('Test', sensor.device_state_attributes['subject']) self.assertEqual('Test', sensor.device_state_attributes['subject'])
@ -89,13 +91,15 @@ class EmailContentSensor(unittest.TestCase):
sensor.entity_id = "sensor.emailtest" sensor.entity_id = "sensor.emailtest"
sensor.schedule_update_ha_state(True) sensor.schedule_update_ha_state(True)
self.hass.block_till_done() self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state) self.assertEqual('Link', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])
def test_multi_part_only_html(self): def test_multi_part_only_html(self):
"""Test multi part emails with only HTML.""" """Test multi part emails with only HTML."""
msg = MIMEMultipart('alternative') msg = MIMEMultipart('alternative')
msg['Subject'] = "Link" msg['Subject'] = 'Link'
msg['From'] = "sender@test.com" msg['From'] = 'sender@test.com'
html = "<html><head></head><body>Test Message</body></html>" html = "<html><head></head><body>Test Message</body></html>"
@ -113,9 +117,10 @@ class EmailContentSensor(unittest.TestCase):
sensor.entity_id = 'sensor.emailtest' sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True) sensor.schedule_update_ha_state(True)
self.hass.block_till_done() self.hass.block_till_done()
self.assertEqual('Link', sensor.state)
self.assertEqual( self.assertEqual(
"<html><head></head><body>Test Message</body></html>", "<html><head></head><body>Test Message</body></html>",
sensor.state) sensor.device_state_attributes['body'])
def test_multi_part_only_other_text(self): def test_multi_part_only_other_text(self):
"""Test multi part emails with only other text.""" """Test multi part emails with only other text."""
@ -136,7 +141,9 @@ class EmailContentSensor(unittest.TestCase):
sensor.entity_id = 'sensor.emailtest' sensor.entity_id = 'sensor.emailtest'
sensor.schedule_update_ha_state(True) sensor.schedule_update_ha_state(True)
self.hass.block_till_done() self.hass.block_till_done()
self.assertEqual("Test Message", sensor.state) self.assertEqual('Link', sensor.state)
self.assertEqual("Test Message",
sensor.device_state_attributes['body'])
def test_multiple_emails(self): def test_multiple_emails(self):
"""Test multiple emails.""" """Test multiple emails."""
@ -172,10 +179,11 @@ class EmailContentSensor(unittest.TestCase):
sensor.schedule_update_ha_state(True) sensor.schedule_update_ha_state(True)
self.hass.block_till_done() self.hass.block_till_done()
self.assertEqual("Test Message", states[0].state) self.assertEqual("Test", states[0].state)
self.assertEqual("Test Message 2", states[1].state) self.assertEqual("Test 2", states[1].state)
self.assertEqual("Test Message 2", sensor.state) self.assertEqual("Test Message 2",
sensor.device_state_attributes['body'])
def test_sender_not_allowed(self): def test_sender_not_allowed(self):
"""Test not whitelisted emails.""" """Test not whitelisted emails."""