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", "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, }, { "input_message": { "attachments": [ { "id": 1, "ts": 1697480778, "fallback": "title & <asd>", "text": "text & <asd>", "pretext": "pretext & <asd>", "title": "title & <asd>", "title_link": "https://title.link/?x=&z=z", "author_name": "author_name & <asd>", "from_url": "https://from.url/?x=&z=z", "image_url": "https://image.url/?x=&z=z", "footer": "footer & <asd>", "fields": [ { "value": "field value & <asd>", "title": "field title & <asd>", "short": False, }, { "value": "field value mention <@U407ABLLW>", "title": "field title mention <@U407ABLLW>", "short": False, }, ], }, { "id": 2, "blocks": [ { "type": "rich_text", "block_id": "IQm+Q", "elements": [ { "type": "rich_text_preformatted", "elements": [ { "type": "text", "text": "block rich_text_preformatted & ", } ], } ], }, { "type": "rich_text", "block_id": "a5bVo", "elements": [ { "type": "rich_text_section", "elements": [ { "type": "text", "text": "block rich_text_section & ", }, { "type": "link", "url": "https://block.link?x=&z=z", "style": {"code": True}, }, ], } ], }, { "type": "rich_text", "block_id": "FeChA", "elements": [ { "type": "rich_text_section", "elements": [ {"type": "user", "user_id": "U407ABLLW"}, {"type": "text", "text": ": <@ASD>"}, ], } ], }, ], "fallback": "[no preview available]", }, ] }, "input_text_before": "", "output": "\n".join( [ "| pretext & ", "| author_name & : title & (https://title.link/?x=&z=z)", "| https://from.url/?x=&z=z", "| text & ", "| https://image.url/?x=&z=z", "| field title & : field value & ", "| field title mention <@U407ABLLW>: field value mention @alice", "| footer & | Oct 16, 2023", "| ```", "| block rich_text_preformatted & ", "| ```", "| block rich_text_section & `https://block.link?x=&z=z`", "| @alice: <@ASD>", ] ), }, ), ) def test_unwrap_attachments(case, channel_general): wee_slack.config.link_previews = case.get("link_previews") message_json = {"ts": str(wee_slack.SlackTS()), **case["input_message"]} message = wee_slack.SlackMessage("normal", message_json, channel_general) result = wee_slack.unwrap_attachments(message, case["input_text_before"]) assert result == case["output"]