from __future__ import print_function, unicode_literals from datetime import datetime, timedelta import pytest import time import wee_slack import os os.environ['TZ'] = 'UTC' @pytest.mark.parametrize('case', ( { 'input': "foo", 'output': "foo", }, { 'input': "", 'output': "@channel", }, { 'input': "", 'output': "@everyone", }, { 'input': "", 'output': "@group", }, { 'input': "", 'output': "@here", }, { 'input': "<@U407ABLLW|@othernick>: foo", 'output': "@alice: foo", }, { 'input': "<@UNKNOWN|@othernick>: foo", 'output': "@othernick: foo", }, { 'input': "foo <#C407ABS94|otherchannel> foo", 'output': "foo #general foo", }, { 'input': "foo <#UNKNOWN|otherchannel> foo", 'output': "foo #otherchannel foo", }, { 'input': "url: suffix", 'output': "url: https://example.com suffix", 'ignore_alt_text': True, }, { 'input': "url: suffix", 'output': "url: https://example.com (example) suffix", 'auto_link_display': 'both', }, { 'input': "url: suffix", 'output': "url: https://example.com (example with spaces) suffix", 'auto_link_display': 'both', }, { 'input': "url: suffix", 'output': "url: https://example.com (example.com) suffix", 'auto_link_display': 'both', }, { 'input': "url: suffix", 'output': "url: mailto:name@example.com (name@example.com) suffix", 'auto_link_display': 'both', }, { 'input': "url: suffix", 'output': "url: example.com suffix", 'auto_link_display': 'text', }, { 'input': "url: suffix", 'output': "url: https://example.com (different text) suffix", 'auto_link_display': 'text', }, { 'input': "url: suffix", 'output': "url: name@example.com suffix", 'auto_link_display': 'text', }, { 'input': "url: suffix", 'output': "url: https://example.com (different text) suffix", 'auto_link_display': 'url', }, { 'input': "url: suffix", 'output': "url: https://example.com suffix", 'auto_link_display': 'url', }, { 'input': "url: suffix", 'output': "url: mailto:name@example.com suffix", 'auto_link_display': 'url', }, { 'input': "<@U407ABLLW> multiple unfurl ", 'output': "@alice multiple unfurl https://example.com (example with spaces)", 'auto_link_display': 'both', }, { 'input': "url with equal fallback: suffix", 'output': "url with equal fallback: https://example.com suffix", 'auto_link_display': 'both', }, { 'input': "try the #general channel", 'output': "try the #general channel", }, { 'input': "<@U407ABLLW> I think 3 > 2", 'output': "@alice I think 3 > 2", }, { 'input': " This is announcement for the dev team", 'output': "@test This is announcement for the dev team" }, { 'input': " This is announcement for the dev team", 'output': "@othersubteam This is announcement for the dev team" }, { 'input': "Ends .", 'output': "Ends 2020-01-01 - January 01, 2020 - Jan 01, 2020 - Wednesday, January 01, 2020." }, { 'input': "Ends .", 'output': "Ends 12:00 - 12:00:00." }, { 'input': "Ends .", 'output': "Ends 2020-01-01 {invalid_token}." }, { 'input': "Ends .", 'output': "Ends 2020-01-01 (http://github.com)." }, { 'input': "Ends .".format( int(time.mktime(datetime.today().timetuple()))), 'output': "Ends today - today - today." }, { 'input': "Ends .".format( int(time.mktime((datetime.today() - timedelta(days=1)).timetuple()))), 'output': "Ends yesterday - yesterday - yesterday." }, { 'input': "Ends .".format( int(time.mktime((datetime.today() + timedelta(days=1)).timetuple()))), 'output': "Ends tomorrow - tomorrow - tomorrow." }, { 'input': "Ends .", 'output': "Ends January 01, 2020 - Jan 01, 2020 - Wednesday, January 01, 2020." } )) def test_unfurl_refs(case, realish_eventrouter): wee_slack.EVENTROUTER = realish_eventrouter wee_slack.config.unfurl_ignore_alt_text = case.get('ignore_alt_text') wee_slack.config.unfurl_auto_link_display = case.get('auto_link_display') result = wee_slack.unfurl_refs(case['input']) assert result == case['output']