from __future__ import print_function, unicode_literals import wee_slack import pytest @pytest.mark.parametrize('case', ( { 'input_message': {'attachments': [{ 'title': 'Title', }]}, 'input_text_before': "Text before", 'output': "\n".join([ "", "| Title", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'text': 'Attachment text', 'title_link': 'http://title.link', 'from_url': 'http://from.url', 'fallback': 'Fallback', }]}, 'input_text_before': "", 'output': "\n".join([ "| Title (http://title.link)", "| http://from.url", "| Attachment text", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'text': 'Attachment text', 'title_link': 'http://title.link', 'image_url': 'http://image.url', 'fallback': 'Fallback', }]}, 'input_text_before': "", 'output': "\n".join([ "| Title (http://title.link)", "| Attachment text", "| http://image.url", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'text': 'Attachment text', 'title_link': 'http://link?a=1&b=2', 'from_url': 'http://link?a=1&b=2', 'image_url': 'http://link?a=1&b=2', }]}, 'input_text_before': "http://link?a=1&b=2", 'output': "\n".join([ "", "| Title", "| Attachment text", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'text': 'Attachment text', 'title_link': 'http://link?a=1&b=2', 'from_url': 'http://link?a=1&b=2', 'image_url': 'http://link?a=1&b=2', }]}, 'input_text_before': "http://link?a=1&b=2", 'output': "\n".join([ "", "| Title", "| Attachment text", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'text': 'Attachment text', 'title_link': 'http://link', 'from_url': 'http://link', 'image_url': 'http://link', }]}, 'input_text_before': "", 'output': "\n".join([ "| Title (http://link)", "| Attachment text", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'text': 'Attachment text', 'from_url': 'http://link', 'image_url': 'http://link', }]}, 'input_text_before': "", 'output': "\n".join([ "| Title", "| http://link", "| Attachment text", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'text': 'Attachment text\n\n\nWith multiple lines', }]}, 'input_text_before': "", 'output': "\n".join([ "| Title", "| Attachment text", "| With multiple lines", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'author_name': 'Author', 'pretext': 'Pretext', 'text': 'Attachment text', 'title_link': 'http://title.link', 'from_url': 'http://from.url', }]}, 'input_text_before': "", 'output': "\n".join([ "| Pretext", "| Author: Title (http://title.link)", "| http://from.url", "| Attachment text", ]), }, { 'input_message': {'attachments': [{ 'author_name': 'Author', 'text': 'Attachment text', 'title_link': 'http://title.link', 'from_url': 'http://from.url', }]}, 'input_text_before': "", 'output': "\n".join([ "| http://from.url", "| Author: Attachment text", ]), }, { 'input_message': {'attachments': [{ 'fallback': 'Fallback', }]}, 'input_text_before': "", 'output': "| Fallback", }, { 'input_message': {'attachments': [{ 'fallback': 'Fallback', 'title_link': 'http://link', }]}, 'input_text_before': "http://link", 'output': "", }, { 'input_message': {'attachments': [{ 'fallback': 'Fallback', 'from_url': 'http://link', }]}, 'input_text_before': "http://link", 'output': "", }, { 'input_message': {'attachments': [{ 'fallback': 'Fallback', 'image_url': 'http://link', }]}, 'input_text_before': "http://link", 'output': "", }, { 'input_message': {'attachments': [{ 'text': 'Some message', 'footer': 'Thread in #general' }]}, 'input_text_before': "", 'output': "\n".join([ "| Some message", "| Thread in #general", ]), }, { 'input_message': {'attachments': [{ 'ts': 1584986782, 'text': 'Some message', 'footer': 'Thread in #general' }]}, 'input_text_before': "", 'output': "\n".join([ "| Some message", "| Thread in #general | Mar 23, 2020", ]), }, { 'input_message': {'attachments': [{ 'ts': '1584986782.261400', 'text': 'Some message', 'footer': 'Thread in #general' }]}, 'input_text_before': "", 'output': "\n".join([ "| Some message", "| Thread in #general | Mar 23, 2020", ]), }, { 'input_message': {'attachments': [{ 'text': 'Original message', 'files': [ { 'title': 'File', 'url_private': 'http://link', } ], }]}, 'input_text_before': "", 'output': "\n".join([ "| Original message", "| http://link (File)", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'fields': [{ 'title': 'First field title', 'value': 'First field value', }, { 'title': '', 'value': 'Second field value', }], }]}, 'input_text_before': "", 'output': "\n".join([ "| Title", "| First field title: First field value", "| Second field value", ]), }, { 'input_message': {'attachments': [{ 'title': 'First attachment title', 'text': 'First attachment text', 'title_link': 'http://title.link.1', 'from_url': 'http://from.url.1', }, { 'title': 'Second attachment title', 'text': 'Second attachment text', 'title_link': 'http://title.link.2', 'from_url': 'http://from.url.2', }]}, 'input_text_before': "", 'output': "\n".join([ "| First attachment title (http://title.link.1)", "| http://from.url.1", "| First attachment text", "| Second attachment title (http://title.link.2)", "| http://from.url.2", "| Second attachment text", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'color': 'ff0000', }]}, 'input_text_before': "", 'output': "\n".join([ "<[color 16711680]>|<[color reset]> Title", ]), }, { 'input_message': {'attachments': [{ 'title': 'Title', 'color': '#ff0000', }]}, 'input_text_before': "", 'output': "\n".join([ "<[color 16711680]>|<[color reset]> Title", ]), }, { 'input_message': {'attachments': [{ 'text': 'Attachment text', 'original_url': 'http://from.url', }]}, 'input_text_before': "", 'output': "\n".join([ "| Attachment text", ]), 'link_previews': True }, { 'input_message': {'attachments': [{ 'text': 'Attachment text', 'original_url': 'http://from.url', }]}, 'input_text_before': "", 'output': '', 'link_previews': False }, { 'input_message': {'attachments': [{ 'text': 'Attachment text', }]}, 'input_text_before': "", 'output': "\n".join([ "| Attachment text", ]), 'link_previews': False }, )) def test_unwrap_attachments(case): wee_slack.config.link_previews = case.get('link_previews') result = wee_slack.unwrap_attachments( case['input_message'], case['input_text_before']) assert result == case['output']