aboutsummaryrefslogtreecommitdiffstats
path: root/_pytest
diff options
context:
space:
mode:
authorTrygve Aaberge <trygveaa@gmail.com>2017-04-12 22:28:27 +0200
committerTrygve Aaberge <trygveaa@gmail.com>2017-04-12 22:32:17 +0200
commit8c0203ebdc0674e924f711e92c0056244a866f6d (patch)
treecbac1595e9998eff1f002d07372f272cb76c60aa /_pytest
parent01beb42fec5c6dbfc0d8c53ce1de88b48b48f6db (diff)
parent82f6df320adc0d2b3d6c4d6cd1e949ad427ed29f (diff)
downloadwee-slack-8c0203ebdc0674e924f711e92c0056244a866f6d.tar.gz
Merge remote-tracking branch 'wee-ng/master' into wee-ng-merge
Diffstat (limited to '_pytest')
-rw-r--r--_pytest/conftest.py121
-rw-r--r--_pytest/data/http/rtm.start.json861
-rw-r--r--_pytest/data/websocket/1485975367.79-reconnect_url.json1
-rw-r--r--_pytest/data/websocket/1485975408.19-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485975412.74-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485975420.36-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485975421.33-message.json1
-rw-r--r--_pytest/data/websocket/1485975421.42-desktop_notification.json1
-rw-r--r--_pytest/data/websocket/1485975426.55-reaction_added.json1
-rw-r--r--_pytest/data/websocket/1485975428.76-reaction_removed.json1
-rw-r--r--_pytest/data/websocket/1485975458.35-channel_created.json1
-rw-r--r--_pytest/data/websocket/1485975458.87-channel_joined.json1
-rw-r--r--_pytest/data/websocket/1485975458.87-message.json1
-rw-r--r--_pytest/data/websocket/1485975462.62-update_thread_state.json1
-rw-r--r--_pytest/data/websocket/1485975462.62-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485975476.62-channel_deleted.json1
-rw-r--r--_pytest/data/websocket/1485975476.86-group_join.json1
-rw-r--r--_pytest/data/websocket/1485975476.86-group_joined.json1
-rw-r--r--_pytest/data/websocket/1485975487.69-group_history_changed.json1
-rw-r--r--_pytest/data/websocket/1485975487.69-group_join.json1
-rw-r--r--_pytest/data/websocket/1485975493.19-group_joined.json1
-rw-r--r--_pytest/data/websocket/1485975493.23-message.json1
-rw-r--r--_pytest/data/websocket/1485975547.75-message.json1
-rw-r--r--_pytest/data/websocket/1485975547.75-update_thread_state.json1
-rw-r--r--_pytest/data/websocket/1485975547.83-reconnect_url.json1
-rw-r--r--_pytest/data/websocket/1485975606.59-team_join.json1
-rw-r--r--_pytest/data/websocket/1485975606.67-message.json1
-rw-r--r--_pytest/data/websocket/1485975606.75-im_created.json1
-rw-r--r--_pytest/data/websocket/1485975606.75-im_open.json1
-rw-r--r--_pytest/data/websocket/1485975611.29-presence_change.json1
-rw-r--r--_pytest/data/websocket/1485975640.5-user_change.json1
-rw-r--r--_pytest/data/websocket/1485975669.14-user_change.json1
-rw-r--r--_pytest/data/websocket/1485975675.81-presence_change.json1
-rw-r--r--_pytest/data/websocket/1485975690.59-mpim_joined.json1
-rw-r--r--_pytest/data/websocket/1485975690.67-group_joined.json1
-rw-r--r--_pytest/data/websocket/1485975690.67-update_thread_state.json1
-rw-r--r--_pytest/data/websocket/1485975697.58-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485975698.45-message.json1
-rw-r--r--_pytest/data/websocket/1485975701.72-reaction_added.json1
-rw-r--r--_pytest/data/websocket/1485975703.22-reaction_removed.json1
-rw-r--r--_pytest/data/websocket/1485975715.79-message.json1
-rw-r--r--_pytest/data/websocket/1485975715.87-file_shared.json1
-rw-r--r--_pytest/data/websocket/1485975723.85-message.json1
-rw-r--r--_pytest/data/websocket/1485975727.84-reconnect_url.json1
-rw-r--r--_pytest/data/websocket/1485975735.91-group_archive.json1
-rw-r--r--_pytest/data/websocket/1485975735.99-message.json1
-rw-r--r--_pytest/data/websocket/1485975736.08-message.json1
-rw-r--r--_pytest/data/websocket/1485975738.1-desktop_notification.json1
-rw-r--r--_pytest/data/websocket/1485975747.17-channel_created.json1
-rw-r--r--_pytest/data/websocket/1485975757.63-channel_rename.json1
-rw-r--r--_pytest/data/websocket/1485975771.6-presence_change.json1
-rw-r--r--_pytest/data/websocket/1485975774.62-presence_change.json1
-rw-r--r--_pytest/data/websocket/1485975822.17-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485975824.48-message.json1
-rw-r--r--_pytest/data/websocket/1485975836.23-message.json1
-rw-r--r--_pytest/data/websocket/1485975836.31-message.json1
-rw-r--r--_pytest/data/websocket/1485975842.1-message.json1
-rw-r--r--_pytest/data/websocket/1485975842.18-message.json1
-rw-r--r--_pytest/data/websocket/1485975850.32-mpim_open.json1
-rw-r--r--_pytest/data/websocket/1485975850.45-group_open.json1
-rw-r--r--_pytest/data/websocket/1485975858.56-reaction_added.json1
-rw-r--r--_pytest/data/websocket/1485975890.7-bot_added.json1
-rw-r--r--_pytest/data/websocket/1485975890.78-message.json1
-rw-r--r--_pytest/data/websocket/1485975896.16-message.json1
-rw-r--r--_pytest/data/websocket/1485975907.84-reconnect_url.json1
-rw-r--r--_pytest/data/websocket/1485975926.59-user_change.json1
-rw-r--r--_pytest/data/websocket/1485975930.81-user_change.json1
-rw-r--r--_pytest/data/websocket/1485975956.38-file_public.json1
-rw-r--r--_pytest/data/websocket/1485975956.47-file_shared.json1
-rw-r--r--_pytest/data/websocket/1485975956.47-message.json1
-rw-r--r--_pytest/data/websocket/1485975978.79-message.json1
-rw-r--r--_pytest/data/websocket/1485975978.91-file_public.json1
-rw-r--r--_pytest/data/websocket/1485975978.91-file_shared.json1
-rw-r--r--_pytest/data/websocket/1485975995.98-file_change.json1
-rw-r--r--_pytest/data/websocket/1485975998.13-file_change.json1
-rw-r--r--_pytest/data/websocket/1485976002.57-file_deleted.json1
-rw-r--r--_pytest/data/websocket/1485976002.66-message.json1
-rw-r--r--_pytest/data/websocket/1485976024.46-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976028.31-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976039.32-reaction_added.json1
-rw-r--r--_pytest/data/websocket/1485976040.8-reaction_removed.json1
-rw-r--r--_pytest/data/websocket/1485976087.84-reconnect_url.json1
-rw-r--r--_pytest/data/websocket/1485976107.57-channel_created.json1
-rw-r--r--_pytest/data/websocket/1485976114.72-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976117.99-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976124.9-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976124.98-message.json1
-rw-r--r--_pytest/data/websocket/1485976125.06-desktop_notification.json1
-rw-r--r--_pytest/data/websocket/1485976125.95-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976129.49-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976133.0-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976137.51-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976137.95-message.json1
-rw-r--r--_pytest/data/websocket/1485976138.73-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976141.79-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976145.8-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976149.89-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976151.6-message.json1
-rw-r--r--_pytest/data/websocket/1485976157.18-message.json1
-rw-r--r--_pytest/data/websocket/1485976157.8-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976161.29-user_typing.json1
-rw-r--r--_pytest/data/websocket/1485976161.75-message.json1
-rw-r--r--_pytest/data/websocket/1485976182.59-channel_archive.json1
-rw-r--r--_pytest/data/websocket/1485976186.62-channel_unarchive.json1
-rw-r--r--_pytest/data/websocket/1485976236.58-message.json1
-rw-r--r--_pytest/data/websocket/1485976236.67-file_comment_added.json1
-rw-r--r--_pytest/data/websocket/1485976248.57-message.json1
-rw-r--r--_pytest/data/websocket/1485976248.65-file_comment_edited.json1
-rw-r--r--_pytest/data/websocket/1485976267.81-reconnect_url.json1
-rw-r--r--_pytest/data/websocket/1486004888.32-presence_change.json1
-rw-r--r--_pytest/data/websocket/1486004888.41-reconnect_url.json1
-rw-r--r--_pytest/data/websocket/1486004935.63-presence_change.json1
-rw-r--r--_pytest/data/websocket/1486004950.43-message.json1
-rw-r--r--_pytest/data/websocket/1486004992.49-user_typing.json1
-rw-r--r--_pytest/data/websocket/1486004995.69-user_typing.json1
-rw-r--r--_pytest/data/websocket/1486004999.55-user_typing.json1
-rw-r--r--_pytest/data/websocket/1486004999.95-message.json1
-rw-r--r--_pytest/data/websocket/1486005004.03-user_typing.json1
-rw-r--r--_pytest/data/websocket/1486005007.16-user_typing.json1
-rw-r--r--_pytest/data/websocket/1486005008.45-reconnect_url.json1
-rw-r--r--_pytest/data/websocket/1486005009.0-message.json1
-rw-r--r--_pytest/data/websocket/1486005096.38-accounts_changed.json1
-rw-r--r--_pytest/data/websocket/1486005099.81-presence_change.json1
-rw-r--r--_pytest/data/websocket/1486005104.63-channel_marked.json1
-rw-r--r--_pytest/data/websocket/1486005109.58-im_marked.json1
-rw-r--r--_pytest/data/websocket/1486005119.69-im_marked.json1
-rw-r--r--_pytest/data/websocket/1486005124.51-mpim_marked.json1
-rw-r--r--_pytest/data/websocket/1486005124.59-group_marked.json1
-rw-r--r--_pytest/data/websocket/1486005124.67-group_marked.json1
-rw-r--r--_pytest/data/websocket/1486005188.48-reconnect_url.json1
-rw-r--r--_pytest/test_eventrouter.py86
-rw-r--r--_pytest/test_everything.py50
-rw-r--r--_pytest/test_linkifytext.py6
-rw-r--r--_pytest/test_presencechange.py31
-rw-r--r--_pytest/test_process_message.py68
-rw-r--r--_pytest/test_processreply.py33
-rw-r--r--_pytest/test_processteamjoin.py54
-rw-r--r--_pytest/test_sendmessage.py21
-rw-r--r--_pytest/test_slackchannel.py33
-rw-r--r--_pytest/test_slackdmchannel.py20
-rw-r--r--_pytest/test_slackgroupchannel.py20
-rw-r--r--_pytest/test_slackmpdmchannel.py20
-rw-r--r--_pytest/test_slackrequest.py11
-rw-r--r--_pytest/test_slackteam.py10
-rw-r--r--_pytest/test_slackts.py24
-rw-r--r--_pytest/test_unfurl.py25
146 files changed, 1514 insertions, 108 deletions
diff --git a/_pytest/conftest.py b/_pytest/conftest.py
index e9b7750..0259ac2 100644
--- a/_pytest/conftest.py
+++ b/_pytest/conftest.py
@@ -1,15 +1,48 @@
+import json
import pytest
import sys
sys.path.append(".")
-#sys.path.append(str(pytest.config.rootdir))
-from wee_slack import SlackServer
-from wee_slack import Channel
-from wee_slack import User
-from wee_slack import SearchList
+#New stuff
+from wee_slack import EventRouter
+from wee_slack import SlackRequest
import wee_slack
+class fakewebsocket(object):
+ def __init__(self):
+ self.returndata = []
+ pass
+ def add(self, data):
+ self.returndata.append(data)
+ def recv(self):
+ return json.dumps(self.returndata.pop(0))
+ def send(self, data):
+ print "websocket received: {}".format(data)
+ return
+
+@pytest.fixture
+def mock_websocket():
+ return fakewebsocket()
+
+@pytest.fixture
+def realish_eventrouter():
+ e = EventRouter()
+ context = e.store_context(SlackRequest('xoxoxoxox', "rtm.start", {"meh": "blah"}))
+ rtmstartdata = open('_pytest/data/http/rtm.start.json', 'r').read()
+ e.receive_httprequest_callback(context, 1, 0, rtmstartdata, 4)
+ e.handle_next()
+ #e.sc is just shortcuts to these items
+ e.sc = {}
+ e.sc["team_id"] = e.teams.keys()[0]
+ e.sc["team"] = e.teams[e.sc["team_id"]]
+ e.sc["user"] = e.teams[e.sc["team_id"]].users[e.teams[e.sc["team_id"]].users.keys()[0]]
+ socket = mock_websocket
+ e.teams[e.sc["team_id"]].ws = socket
+
+ return e
+
+
class FakeWeechat():
"""
this is the thing that acts as "w." everywhere..
@@ -18,7 +51,8 @@ class FakeWeechat():
WEECHAT_RC_OK = True
def __init__(self):
- print "INITIALIZE FAKE WEECHAT"
+ pass
+ #print "INITIALIZE FAKE WEECHAT"
def prnt(*args):
output = "("
for arg in args:
@@ -33,77 +67,24 @@ class FakeWeechat():
return "1355517519"
def hdata_string(*args):
return "testuser"
-
+ def buffer_new(*args):
+ return "0x8a8a8a8b"
def __getattr__(self, name):
def method(*args):
- print "called {}".format(name)
- if args:
- print "\twith args: {}".format(args)
+ pass
+ #print "called {}".format(name)
+ #if args:
+ # print "\twith args: {}".format(args)
return method
@pytest.fixture
-def fake_weechat():
+def mock_weechat():
wee_slack.w = FakeWeechat()
- pass
-
-
-@pytest.fixture
-def slack_debug():
+ wee_slack.config = wee_slack.PluginConfig()
+ wee_slack.debug_string = None
wee_slack.slack_debug = "debug_buffer_ptr"
-
-@pytest.fixture
-def server(fake_weechat, monkeypatch):
-#def server(monkeypatch, mychannels, myusers):
- def mock_connect_to_slack(*args):
- return True
- monkeypatch.setattr(SlackServer, 'connect_to_slack', mock_connect_to_slack)
- myserver = SlackServer('xoxo-12345')
- myserver.identifier = 'test.slack.com'
- myserver.nick = 'myusername'
- return myserver
-
-@pytest.fixture
-def myservers(server):
- servers = SearchList()
- servers.append(server)
- return servers
-
-
-
-@pytest.fixture
-def channel(monkeypatch, server):
- def mock_buffer_prnt(*args):
- print "called buffer_prnt\n\twith args: {}".format(args)
- return
- def mock_do_nothing(*args):
- print args
- return True
- monkeypatch.setattr(Channel, 'create_buffer', mock_do_nothing)
- monkeypatch.setattr(Channel, 'attach_buffer', mock_do_nothing)
- monkeypatch.setattr(Channel, 'set_topic', mock_do_nothing)
- monkeypatch.setattr(Channel, 'set_topic', mock_do_nothing)
- monkeypatch.setattr(Channel, 'buffer_prnt', mock_buffer_prnt)
- mychannel = Channel(server, '#testchan', 'C2147483705', True, last_read=0, prepend_name="", members=[], topic="")
- return mychannel
-
-@pytest.fixture
-def mychannels(channel):
- channels = SearchList()
- channels.append(channel)
- return channels
-
-@pytest.fixture
-def user(monkeypatch, server):
- wee_slack.domain = None
- wee_slack.colorize_nicks = True
+ wee_slack.STOP_TALKING_TO_SLACK = False
+ wee_slack.proc = {}
pass
- myuser = User(server, "testuser", 'U2147483697', presence="away")
- myuser.color = ''
- return myuser
-@pytest.fixture
-def myusers(monkeypatch, user):
- users = SearchList()
- users.append(user)
- return users
diff --git a/_pytest/data/http/rtm.start.json b/_pytest/data/http/rtm.start.json
new file mode 100644
index 0000000..d9cc464
--- /dev/null
+++ b/_pytest/data/http/rtm.start.json
@@ -0,0 +1,861 @@
+{
+ "ok": true,
+ "self": {
+ "id": "U3ZKBBDL5",
+ "name": "bob",
+ "prefs": {
+ "highlight_words": "",
+ "user_colors": "",
+ "color_names_in_list": true,
+ "growls_enabled": true,
+ "tz": "America\/Los_Angeles",
+ "push_dm_alert": true,
+ "push_mention_alert": true,
+ "push_everything": true,
+ "push_show_preview": true,
+ "push_idle_wait": 2,
+ "push_sound": "b2.mp3",
+ "push_loud_channels": "",
+ "push_mention_channels": "",
+ "push_loud_channels_set": "",
+ "threads_everything": false,
+ "email_alerts": "instant",
+ "email_alerts_sleep_until": 0,
+ "email_misc": false,
+ "email_weekly": true,
+ "welcome_message_hidden": false,
+ "all_channels_loud": true,
+ "loud_channels": "",
+ "never_channels": "",
+ "loud_channels_set": "",
+ "search_sort": "timestamp",
+ "expand_inline_imgs": true,
+ "expand_internal_inline_imgs": true,
+ "expand_snippets": false,
+ "posts_formatting_guide": true,
+ "seen_welcome_2": true,
+ "seen_ssb_prompt": false,
+ "spaces_new_xp_banner_dismissed": false,
+ "search_only_my_channels": false,
+ "search_only_current_team": false,
+ "emoji_mode": "default",
+ "emoji_use": "",
+ "has_invited": false,
+ "has_uploaded": false,
+ "has_created_channel": false,
+ "has_searched": false,
+ "search_exclude_channels": "",
+ "messages_theme": "default",
+ "webapp_spellcheck": true,
+ "no_joined_overlays": false,
+ "no_created_overlays": false,
+ "dropbox_enabled": false,
+ "seen_domain_invite_reminder": false,
+ "seen_member_invite_reminder": false,
+ "mute_sounds": false,
+ "arrow_history": false,
+ "tab_ui_return_selects": true,
+ "obey_inline_img_limit": true,
+ "new_msg_snd": "knock_brush.mp3",
+ "require_at": false,
+ "ssb_space_window": "",
+ "mac_ssb_bounce": "",
+ "mac_ssb_bullet": true,
+ "expand_non_media_attachments": true,
+ "show_typing": true,
+ "pagekeys_handled": true,
+ "last_snippet_type": "",
+ "display_real_names_override": 0,
+ "display_preferred_names": true,
+ "time24": false,
+ "enter_is_special_in_tbt": false,
+ "graphic_emoticons": false,
+ "convert_emoticons": true,
+ "ss_emojis": true,
+ "sidebar_behavior": "",
+ "seen_onboarding_start": false,
+ "onboarding_cancelled": true,
+ "seen_onboarding_slackbot_conversation": false,
+ "seen_onboarding_channels": false,
+ "seen_onboarding_direct_messages": false,
+ "seen_onboarding_invites": false,
+ "seen_onboarding_search": false,
+ "seen_onboarding_recent_mentions": false,
+ "seen_onboarding_starred_items": false,
+ "seen_onboarding_private_groups": false,
+ "onboarding_slackbot_conversation_step": 0,
+ "dnd_enabled": true,
+ "dnd_start_hour": "22:00",
+ "dnd_end_hour": "08:00",
+ "mark_msgs_read_immediately": true,
+ "start_scroll_at_oldest": true,
+ "snippet_editor_wrap_long_lines": false,
+ "ls_disabled": false,
+ "sidebar_theme": "default",
+ "sidebar_theme_custom_values": "",
+ "f_key_search": false,
+ "k_key_omnibox": true,
+ "speak_growls": false,
+ "mac_speak_voice": "com.apple.speech.synthesis.voice.Alex",
+ "mac_speak_speed": 250,
+ "at_channel_suppressed_channels": "",
+ "push_at_channel_suppressed_channels": "",
+ "prompted_for_email_disabling": false,
+ "full_text_extracts": false,
+ "no_text_in_notifications": false,
+ "muted_channels": "",
+ "no_macelectron_banner": false,
+ "no_macssb1_banner": false,
+ "no_macssb2_banner": false,
+ "no_winssb1_banner": false,
+ "no_invites_widget_in_sidebar": false,
+ "no_omnibox_in_channels": false,
+ "k_key_omnibox_auto_hide_count": 0,
+ "prev_next_btn": false,
+ "hide_user_group_info_pane": false,
+ "mentions_exclude_at_user_groups": false,
+ "privacy_policy_seen": true,
+ "enterprise_migration_seen": true,
+ "last_tos_acknowledged": "tos_oct2016",
+ "search_exclude_bots": false,
+ "load_lato_2": false,
+ "fuller_timestamps": false,
+ "last_seen_at_channel_warning": 0,
+ "msg_preview": false,
+ "msg_preview_persistent": true,
+ "emoji_autocomplete_big": false,
+ "winssb_run_from_tray": true,
+ "winssb_window_flash_behavior": "idle",
+ "two_factor_auth_enabled": false,
+ "two_factor_type": null,
+ "two_factor_backup_type": null,
+ "hide_hex_swatch": false,
+ "client_logs_pri": "",
+ "enhanced_debugging": false,
+ "thin_channel_membership_fe": false,
+ "flannel_server_pool": "random",
+ "mentions_exclude_at_channels": true,
+ "confirm_clear_all_unreads": true,
+ "confirm_user_marked_away": true,
+ "box_enabled": false,
+ "seen_single_emoji_msg": false,
+ "confirm_sh_call_start": true,
+ "preferred_skin_tone": "",
+ "show_all_skin_tones": false,
+ "separate_private_channels": false,
+ "whats_new_read": 1485969645,
+ "hotness": false,
+ "frecency_jumper": "",
+ "frecency_ent_jumper": "",
+ "jumbomoji": true,
+ "newxp_seen_last_message": "1",
+ "attachments_with_borders": false,
+ "show_memory_instrument": false,
+ "enable_unread_view": false,
+ "seen_unread_view_coachmark": false,
+ "seen_calls_video_beta_coachmark": false,
+ "seen_calls_video_ga_coachmark": false,
+ "seen_calls_ss_window_coachmark": false,
+ "measure_css_usage": false,
+ "enable_react_emoji_picker": true,
+ "seen_replies_coachmark": false,
+ "seen_custom_status_badge": false,
+ "all_unreads_sort_order": "alphabetical",
+ "locale": "en_US",
+ "gdrive_authed": true,
+ "gdrive_enabled": true,
+ "seen_gdrive_coachmark": false,
+ "channel_sort": "{\"is_custom_sorted\":false, \"priority_display\":false, \"priority_type\":\"\", \"sorts\":[]}",
+ "overloaded_message_enabled": true,
+ "seen_highlights_coachmark": false,
+ "seen_highlights_arrows_coachmark": false,
+ "a11y_font_size": "normal",
+ "a11y_animations": true,
+ "intro_to_apps_message_seen": false
+ },
+ "created": 1485969645,
+ "manual_presence": "active"
+ },
+ "team": {
+ "id": "T3YS5EAL9",
+ "name": "weeslacktest",
+ "email_domain": "",
+ "domain": "weeslacktest",
+ "msg_edit_window_mins": -1,
+ "prefs": {
+ "invites_only_admins": false,
+ "default_channels": [
+ "C407ABS94",
+ "C3ZEQAYN7"
+ ],
+ "display_email_addresses": false,
+ "hide_referers": true,
+ "msg_edit_window_mins": -1,
+ "allow_message_deletion": true,
+ "calling_app_name": "Slack",
+ "allow_calls": true,
+ "display_real_names": false,
+ "who_can_at_everyone": "regular",
+ "who_can_at_channel": "ra",
+ "who_can_create_channels": "regular",
+ "who_can_archive_channels": "regular",
+ "who_can_create_groups": "ra",
+ "who_can_post_general": "ra",
+ "who_can_kick_channels": "admin",
+ "who_can_kick_groups": "regular",
+ "retention_type": 0,
+ "retention_duration": 0,
+ "group_retention_type": 0,
+ "group_retention_duration": 0,
+ "dm_retention_type": 0,
+ "dm_retention_duration": 0,
+ "file_retention_duration": 0,
+ "file_retention_type": 0,
+ "allow_retention_override": true,
+ "require_at_for_mention": false,
+ "default_rxns": [
+ "simple_smile",
+ "thumbsup",
+ "white_check_mark",
+ "heart",
+ "eyes"
+ ],
+ "team_handy_rxns": {
+ "restrict": false,
+ "list": [
+ {
+ "name": "slightly_smiling_face",
+ "title": "I'm happy!"
+ },
+ {
+ "name": "+1",
+ "title": "good!"
+ },
+ {
+ "name": "white_check_mark",
+ "title": "done!"
+ },
+ {
+ "name": "heart",
+ "title": "love it!"
+ },
+ {
+ "name": "eyes",
+ "title": "looking..."
+ }
+ ]
+ },
+ "channel_handy_rxns": null,
+ "compliance_export_start": 0,
+ "warn_before_at_channel": "always",
+ "disallow_public_file_urls": false,
+ "who_can_create_delete_user_groups": "admin",
+ "who_can_edit_user_groups": "admin",
+ "who_can_change_team_profile": "admin",
+ "allow_shared_channels": false,
+ "who_has_team_visibility": "ra",
+ "disable_file_uploads": "allow_all",
+ "disable_file_editing": false,
+ "disable_file_deleting": false,
+ "who_can_create_shared_channels": "admin",
+ "who_can_manage_shared_channels": {
+ "type": [
+ "admin"
+ ]
+ },
+ "who_can_post_in_shared_channels": {
+ "type": [
+ "regular",
+ "ra"
+ ]
+ },
+ "allow_shared_channel_perms_override": false,
+ "gdrive_enabled_team": true,
+ "dnd_enabled": true,
+ "dnd_start_hour": "22:00",
+ "dnd_end_hour": "08:00",
+ "auth_mode": "normal",
+ "who_can_manage_integrations": {
+ "type": [
+ "regular"
+ ]
+ },
+ "invites_limit": true
+ },
+ "icon": {
+ "image_34": "https:\/\/a.slack-edge.com\/0180\/img\/avatars-teams\/ava_0014-34.png",
+ "image_44": "https:\/\/a.slack-edge.com\/0180\/img\/avatars-teams\/ava_0014-44.png",
+ "image_68": "https:\/\/a.slack-edge.com\/66f9\/img\/avatars-teams\/ava_0014-68.png",
+ "image_88": "https:\/\/a.slack-edge.com\/66f9\/img\/avatars-teams\/ava_0014-88.png",
+ "image_102": "https:\/\/a.slack-edge.com\/66f9\/img\/avatars-teams\/ava_0014-102.png",
+ "image_132": "https:\/\/a.slack-edge.com\/66f9\/img\/avatars-teams\/ava_0014-132.png",
+ "image_230": "https:\/\/a.slack-edge.com\/bfaba\/img\/avatars-teams\/ava_0014-230.png",
+ "image_default": true
+ },
+ "over_storage_limit": false,
+ "plan": "",
+ "avatar_base_url": "https:\/\/ca.slack-edge.com\/",
+ "over_integrations_limit": true
+ },
+ "latest_event_ts": "1485976462.000000",
+ "channels": [
+ {
+ "id": "C407ABS94",
+ "name": "general",
+ "is_channel": true,
+ "created": 1485969592,
+ "creator": "U407ABLLW",
+ "is_archived": false,
+ "is_general": true,
+ "has_pins": false,
+ "is_member": true,
+ "last_read": "1485976236.000019",
+ "latest": {
+ "type": "message",
+ "subtype": "file_comment",
+ "text": "<@U407ABLLW|alice> commented on <@U407ABLLW|alice>\u2019s file <https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZJQTA66\/1x1.png|1x1.png>: first comment! now i edited it.",
+ "file": {
+ "id": "F3ZJQTA66",
+ "created": 1485975955,
+ "timestamp": 1485975955,
+ "name": "1x1.png",
+ "title": "1x1.png",
+ "mimetype": "image\/png",
+ "filetype": "png",
+ "pretty_type": "PNG",
+ "user": "U407ABLLW",
+ "editable": false,
+ "size": 68,
+ "mode": "hosted",
+ "is_external": false,
+ "external_type": "",
+ "is_public": true,
+ "public_url_shared": false,
+ "display_as_bot": false,
+ "username": "",
+ "url_private": "https:\/\/files.slack.com\/files-pri\/T3YS5EAL9-F3ZJQTA66\/1x1.png",
+ "url_private_download": "https:\/\/files.slack.com\/files-pri\/T3YS5EAL9-F3ZJQTA66\/download\/1x1.png",
+ "thumb_64": "https:\/\/files.slack.com\/files-tmb\/T3YS5EAL9-F3ZJQTA66-8ab528dd77\/1x1_64.png",
+ "thumb_80": "https:\/\/files.slack.com\/files-tmb\/T3YS5EAL9-F3ZJQTA66-8ab528dd77\/1x1_80.png",
+ "thumb_360": "https:\/\/files.slack.com\/files-tmb\/T3YS5EAL9-F3ZJQTA66-8ab528dd77\/1x1_360.png",
+ "thumb_360_w": 1,
+ "thumb_360_h": 1,
+ "thumb_160": "https:\/\/files.slack.com\/files-tmb\/T3YS5EAL9-F3ZJQTA66-8ab528dd77\/1x1_160.png",
+ "image_exif_rotation": 1,
+ "original_w": 1,
+ "original_h": 1,
+ "permalink": "https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZJQTA66\/1x1.png",
+ "permalink_public": "https:\/\/slack-files.com\/T3YS5EAL9-F3ZJQTA66-5d747593d2",
+ "channels": [
+ "C407ABS94"
+ ],
+ "groups": [],
+ "ims": [],
+ "comments_count": 1
+ },
+ "comment": {
+ "id": "Fc3ZMDRQLV",
+ "created": 1485976236,
+ "timestamp": 1485976236,
+ "user": "U407ABLLW",
+ "is_intro": false,
+ "comment": "first comment! now i edited it.",
+ "channel": ""
+ },
+ "is_intro": false,
+ "ts": "1485976236.000019"
+ },
+ "unread_count": 0,
+ "unread_count_display": 0,
+ "members": [
+ "U3ZKBBDL5",
+ "U407ABLLW",
+ "U4096CBHC"
+ ],
+ "topic": {
+ "value": "Company-wide announcements and work-based matters",
+ "creator": "",
+ "last_set": 0
+ },
+ "purpose": {
+ "value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
+ "creator": "",
+ "last_set": 0
+ },
+ "previous_names": []
+ },
+ {
+ "id": "C3ZM2GMGU",
+ "name": "made-to-be-archived",
+ "is_channel": true,
+ "created": 1485976107,
+ "creator": "U407ABLLW",
+ "is_archived": false,
+ "is_general": false,
+ "has_pins": false,
+ "is_member": false,
+ "previous_names": []
+ },
+ {
+ "id": "C3ZEQAYN7",
+ "name": "random",
+ "is_channel": true,
+ "created": 1485969592,
+ "creator": "U407ABLLW",
+ "is_archived": false,
+ "is_general": false,
+ "has_pins": false,
+ "is_member": true,
+ "last_read": "1485969592.000002",
+ "latest": {
+ "user": "U4096CBHC",
+ "text": "<@U4096CBHC|charles> has joined the channel",
+ "type": "message",
+ "subtype": "channel_join",
+ "ts": "1485975606.000004"
+ },
+ "unread_count": 2,
+ "unread_count_display": 0,
+ "members": [
+ "U3ZKBBDL5",
+ "U407ABLLW",
+ "U4096CBHC"
+ ],
+ "topic": {
+ "value": "Non-work banter and water cooler conversation",
+ "creator": "",
+ "last_set": 0
+ },
+ "purpose": {
+ "value": "A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you'd prefer to keep out of more focused work-related channels.",
+ "creator": "",
+ "last_set": 0
+ },
+ "previous_names": []
+ },
+ {
+ "id": "C3ZM8JTD3",
+ "name": "some-channel2-renamed",
+ "is_channel": true,
+ "created": 1485975747,
+ "creator": "U407ABLLW",
+ "is_archived": false,
+ "is_general": false,
+ "has_pins": false,
+ "is_member": false,
+ "previous_names": [
+ "some-channel2"
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "id": "G3ZGMF4RZ",
+ "name": "mpdm-bob--alice--charles-1",
+ "is_group": true,
+ "created": 1485975690,
+ "creator": "U407ABLLW",
+ "is_archived": false,
+ "is_mpim": true,
+ "has_pins": false,
+ "is_open": true,
+ "last_read": "0000000000.000000",
+ "latest": {
+ "type": "message",
+ "subtype": "file_share",
+ "text": "<@U407ABLLW|alice> uploaded a file: <https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt|Untitled>",
+ "file": {
+ "id": "F3ZLY6K5J",
+ "created": 1485975715,
+ "timestamp": 1485975715,
+ "name": "-.txt",
+ "title": "Untitled",
+ "mimetype": "text\/plain",
+ "filetype": "text",
+ "pretty_type": "Plain Text",
+ "user": "U407ABLLW",
+ "editable": true,
+ "size": 14,
+ "mode": "snippet",
+ "is_external": false,
+ "external_type": "",
+ "is_public": false,
+ "public_url_shared": false,
+ "display_as_bot": false,
+ "username": "",
+ "url_private": "https:\/\/files.slack.com\/files-pri\/T3YS5EAL9-F3ZLY6K5J\/-.txt",
+ "url_private_download": "https:\/\/files.slack.com\/files-pri\/T3YS5EAL9-F3ZLY6K5J\/download\/-.txt",
+ "permalink": "https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt",
+ "permalink_public": "https:\/\/slack-files.com\/T3YS5EAL9-F3ZLY6K5J-39c2c4f739",
+ "edit_link": "https:\/\/weeslacktest.slack.com\/files\/alice\/F3ZLY6K5J\/-.txt\/edit",
+ "preview": "some code here",
+ "preview_highlight": "<div class=\"CodeMirror cm-s-default CodeMirrorServer\" oncopy=\"if(event.clipboardData){event.clipboardData.setData('text\/plain',window.getSelection().toString().replace(\/\\u200b\/g,''));event.preventDefault();event.stopPropagation();}\">\n<div class=\"CodeMirror-code\">\n<div><pre>some code here<\/pre><\/div>\n<\/div>\n<\/div>\n",
+ "lines": 1,
+ "lines_more": 0,
+ "preview_is_truncated": false,
+ "channels": [],
+ "groups": [
+ "G3ZGMF4RZ"
+ ],
+ "ims": [],
+ "comments_count": 0
+ },
+ "user": "U407ABLLW",
+ "upload": true,
+ "display_as_bot": false,
+ "username": "<@U407ABLLW|alice>",
+ "bot_id": null,
+ "ts": "1485975715.000005"
+ },
+ "unread_count": 1,
+ "unread_count_display": 1,
+ "members": [
+ "U407ABLLW",
+ "U3ZKBBDL5",
+ "U4096CBHC"
+ ],
+ "topic": {
+ "value": "Group messaging",
+ "creator": "U407ABLLW",
+ "last_set": 1485975690
+ },
+ "purpose": {
+ "value": "Group messaging with: @bob @alice @charles",
+ "creator": "U407ABLLW",
+ "last_set": 1485975690
+ }
+ },
+ {
+ "id": "G3ZJKP7GA",
+ "name": "some-private-channel",
+ "is_group": true,
+ "created": 1485975492,
+ "creator": "U407ABLLW",
+ "is_archived": false,
+ "is_mpim": false,
+ "has_pins": false,
+ "is_open": true,
+ "last_read": "1485975492.000002",
+ "latest": {
+ "user": "U407ABLLW",
+ "purpose": "seekret",
+ "text": "<@U407ABLLW|alice> set the channel's purpose: seekret",
+ "type": "message",
+ "subtype": "group_purpose",
+ "ts": "1485975492.000004"
+ },
+ "unread_count": 2,
+ "unread_count_display": 1,
+ "members": [
+ "U3ZKBBDL5",
+ "U407ABLLW"
+ ],
+ "topic": {
+ "value": "",
+ "creator": "",
+ "last_set": 0
+ },
+ "purpose": {
+ "value": "seekret",
+ "creator": "U407ABLLW",
+ "last_set": 1485975493
+ }
+ },
+ {
+ "id": "G409GKN9M",
+ "name": "some-channel",
+ "is_group": true,
+ "created": 1485975458,
+ "creator": "U407ABLLW",
+ "is_archived": true,
+ "is_mpim": false,
+ "has_pins": false,
+ "is_open": false,
+ "last_read": "1485975476.876631",
+ "latest": {
+ "user": "U407ABLLW",
+ "text": "<@U407ABLLW|alice> archived the private channel",
+ "type": "message",
+ "subtype": "group_archive",
+ "ts": "1485975735.000006"
+ },
+ "unread_count": 1,
+ "unread_count_display": 1,
+ "members": [
+ "U3ZKBBDL5",
+ "U407ABLLW"
+ ],
+ "topic": {
+ "value": "",
+ "creator": "U407ABLLW",
+ "last_set": 1485975476
+ },
+ "purpose": {
+ "value": "who knows?",
+ "creator": "U407ABLLW",
+ "last_set": 1485975476
+ }
+ }
+ ],
+ "ims": [
+ {
+ "id": "D3ZK1D8JY",
+ "created": 1485969645,
+ "is_im": true,
+ "is_org_shared": false,
+ "user": "USLACKBOT",
+ "has_pins": false,
+ "last_read": "1485969667.000002",
+ "latest": {
+ "type": "message",
+ "user": "USLACKBOT",
+ "text": "<@U407ABLLW|alice> archived the private channel <https:\/\/weeslacktest.slack.com\/archives\/some-channel|some-channel>",
+ "ts": "1485975735.000002"
+ },
+ "unread_count": 1,
+ "unread_count_display": 1,
+ "is_open": true
+ },
+ {
+ "id": "D3ZEQULFM",
+ "created": 1485969645,
+ "is_im": true,
+ "is_org_shared": false,
+ "user": "U3ZKBBDL5",
+ "has_pins": false,
+ "last_read": "0000000000.000000",
+ "latest": null,
+ "unread_count": 0,
+ "unread_count_display": 0,
+ "is_open": true
+ },
+ {
+ "id": "D3ZEQULHZ",
+ "created": 1485969645,
+ "is_im": true,
+ "is_org_shared": false,
+ "user": "U407ABLLW",
+ "has_pins": false,
+ "last_read": "0000000000.000000",
+ "latest": {
+ "type": "message",
+ "user": "U407ABLLW",
+ "text": "hi bob",
+ "ts": "1485975421.000002"
+ },
+ "unread_count": 1,
+ "unread_count_display": 1,
+ "is_open": true
+ },
+ {
+ "id": "D409J34CF",
+ "created": 1485975606,
+ "is_im": true,
+ "is_org_shared": false,
+ "user": "U4096CBHC",
+ "has_pins": false,
+ "last_read": "0000000000.000000",
+ "latest": null,
+ "unread_count": 0,
+ "unread_count_display": 0,
+ "is_open": true
+ }
+ ],
+ "cache_ts": 1485977062,
+ "read_only_channels": [],
+ "can_manage_shared_channels": false,
+ "subteams": {
+ "self": [],
+ "all": []
+ },
+ "dnd": {
+ "dnd_enabled": true,
+ "dnd_debug": {
+ "next_dnd_start_date": "Wed, 01 Feb 2017 22:00:00 -0800",
+ "next_dnd_end_date": "Thu, 02 Feb 2017 08:00:00 -0800",
+ "now": "Wed, 01 Feb 2017 11:24:22 -0800",
+ "type": "slack"
+ },
+ "next_dnd_start_ts": 1486015200,
+ "next_dnd_end_ts": 1486051200,
+ "snooze_enabled": false
+ },
+ "users": [
+ {
+ "id": "U407ABLLW",
+ "team_id": "T3YS5EAL9",
+ "name": "alice",
+ "deleted": false,
+ "status": null,
+ "color": "9f69e7",
+ "real_name": "First Testuser",
+ "tz": "America\/Los_Angeles",
+ "tz_label": "Pacific Standard Time",
+ "tz_offset": -28800,
+ "profile": {
+ "first_name": "First",
+ "last_name": "Testuser",
+ "avatar_hash": "gfd0ce7a168d",
+ "real_name": "First Testuser",
+ "real_name_normalized": "First Testuser",
+ "email": "redacted1@gmail.com",
+ "image_24": "https:\/\/secure.gravatar.com\/avatar\/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0024-24.png",
+ "image_32": "https:\/\/secure.gravatar.com\/avatar\/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0024-32.png",
+ "image_48": "https:\/\/secure.gravatar.com\/avatar\/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0024-48.png",
+ "image_72": "https:\/\/secure.gravatar.com\/avatar\/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0024-72.png",
+ "image_192": "https:\/\/secure.gravatar.com\/avatar\/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0024-192.png",
+ "image_512": "https:\/\/secure.gravatar.com\/avatar\/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0024-512.png",
+ "fields": null
+ },
+ "is_admin": true,
+ "is_owner": true,
+ "is_primary_owner": true,
+ "is_restricted": false,
+ "is_ultra_restricted": false,
+ "is_bot": false,
+ "presence": "away"
+ },
+ {
+ "id": "U3ZKBBDL5",
+ "team_id": "T3YS5EAL9",
+ "name": "bob",
+ "deleted": false,
+ "status": null,
+ "color": "4bbe2e",
+ "real_name": "Second Testuser",
+ "tz": "America\/Los_Angeles",
+ "tz_label": "Pacific Standard Time",
+ "tz_offset": -28800,
+ "profile": {
+ "first_name": "Second",
+ "last_name": "Testuser",
+ "avatar_hash": "g6f7a5bf7eb7",
+ "real_name": "Second Testuser",
+ "real_name_normalized": "Second Testuser",
+ "email": "redacted2@gmail.com",
+ "image_24": "https:\/\/secure.gravatar.com\/avatar\/6f7a5bf7eb782853afb1d33f28ca9ae7.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0019-24.png",
+ "image_32": "https:\/\/secure.gravatar.com\/avatar\/6f7a5bf7eb782853afb1d33f28ca9ae7.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0019-32.png",
+ "image_48": "https:\/\/secure.gravatar.com\/avatar\/6f7a5bf7eb782853afb1d33f28ca9ae7.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0019-48.png",
+ "image_72": "https:\/\/secure.gravatar.com\/avatar\/6f7a5bf7eb782853afb1d33f28ca9ae7.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0019-72.png",
+ "image_192": "https:\/\/secure.gravatar.com\/avatar\/6f7a5bf7eb782853afb1d33f28ca9ae7.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0019-192.png",
+ "image_512": "https:\/\/secure.gravatar.com\/avatar\/6f7a5bf7eb782853afb1d33f28ca9ae7.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0019-512.png",
+ "fields": null
+ },
+ "is_admin": false,
+ "is_owner": false,
+ "is_primary_owner": false,
+ "is_restricted": false,
+ "is_ultra_restricted": false,
+ "is_bot": false,
+ "has_2fa": false,
+ "presence": "active"
+ },
+ {
+ "id": "U4096CBHC",
+ "team_id": "T3YS5EAL9",
+ "name": "charles",
+ "deleted": false,
+ "status": null,
+ "color": "e7392d",
+ "real_name": "Charles Testuser",
+ "tz": "America\/Los_Angeles",
+ "tz_label": "Pacific Standard Time",
+ "tz_offset": -28800,
+ "profile": {
+ "first_name": "Charles",
+ "last_name": "Testuser",
+ "avatar_hash": "5af404f7d4b7",
+ "fields": [],
+ "image_24": "https:\/\/avatars.slack-edge.com\/2017-02-01\/135714629508_5af404f7d4b7728d10c0_24.png",
+ "image_32": "https:\/\/avatars.slack-edge.com\/2017-02-01\/135714629508_5af404f7d4b7728d10c0_24.png",
+ "image_48": "https:\/\/avatars.slack-edge.com\/2017-02-01\/135714629508_5af404f7d4b7728d10c0_24.png",
+ "image_72": "https:\/\/avatars.slack-edge.com\/2017-02-01\/135714629508_5af404f7d4b7728d10c0_24.png",
+ "image_192": "https:\/\/avatars.slack-edge.com\/2017-02-01\/135714629508_5af404f7d4b7728d10c0_24.png",
+ "image_512": "https:\/\/avatars.slack-edge.com\/2017-02-01\/135714629508_5af404f7d4b7728d10c0_24.png",
+ "image_1024": "https:\/\/avatars.slack-edge.com\/2017-02-01\/135714629508_5af404f7d4b7728d10c0_24.png",
+ "image_original": "https:\/\/avatars.slack-edge.com\/2017-02-01\/135714629508_5af404f7d4b7728d10c0_original.png",
+ "real_name": "Charles Testuser",
+ "real_name_normalized": "Charles Testuser",
+ "email": "redacted3@gmail.com"
+ },
+ "is_admin": false,
+ "is_owner": false,
+ "is_primary_owner": false,
+ "is_restricted": false,
+ "is_ultra_restricted": false,
+ "is_bot": false,
+ "presence": "away"
+ },
+ {
+ "id": "USLACKBOT",
+ "team_id": "T3YS5EAL9",
+ "name": "slackbot",
+ "deleted": false,
+ "status": null,
+ "color": "757575",
+ "real_name": "slackbot",
+ "tz": null,
+ "tz_label": "Pacific Standard Time",
+ "tz_offset": -28800,
+ "profile": {
+ "first_name": "slackbot",
+ "last_name": "",
+ "image_24": "https:\/\/a.slack-edge.com\/0180\/img\/slackbot_24.png",
+ "image_32": "https:\/\/a.slack-edge.com\/2fac\/plugins\/slackbot\/assets\/service_32.png",
+ "image_48": "https:\/\/a.slack-edge.com\/2fac\/plugins\/slackbot\/assets\/service_48.png",
+ "image_72": "https:\/\/a.slack-edge.com\/0180\/img\/slackbot_72.png",
+ "image_192": "https:\/\/a.slack-edge.com\/66f9\/img\/slackbot_192.png",
+ "image_512": "https:\/\/a.slack-edge.com\/1801\/img\/slackbot_512.png",
+ "avatar_hash": "sv1444671949",
+ "real_name": "slackbot",
+ "real_name_normalized": "slackbot",
+ "fields": null
+ },
+ "is_admin": false,
+ "is_owner": false,
+ "is_primary_owner": false,
+ "is_restricted": false,
+ "is_ultra_restricted": false,
+ "is_bot": false,
+ "presence": "active"
+ }
+ ],
+ "cache_version": "v15-koala",
+ "cache_ts_version": "v1-cat",
+ "bots": [
+ {
+ "id": "B3YTBU6L8",
+ "deleted": false,
+ "name": "incoming-webhook",
+ "app_id": "A0F7XDUAZ",
+ "icons": {
+ "image_36": "https:\/\/a.slack-edge.com\/12b5a\/plugins\/tester\/assets\/service_36.png",
+ "image_48": "https:\/\/a.slack-edge.com\/12b5a\/plugins\/tester\/assets\/service_48.png",
+ "image_72": "https:\/\/a.slack-edge.com\/12b5a\/plugins\/tester\/assets\/service_72.png"
+ }
+ },
+ {
+ "id": "B3ZESMZKM",
+ "deleted": false,
+ "name": "Slack API Tester",
+ "app_id": "A02",
+ "icons": {
+ "image_36": "https:\/\/a.slack-edge.com\/b48b\/plugins\/slack_api_news\/assets\/service_36.png",
+ "image_48": "https:\/\/a.slack-edge.com\/b48b\/plugins\/slack_api_news\/assets\/service_48.png",
+ "image_72": "https:\/\/a.slack-edge.com\/b48b\/plugins\/slack_api_news\/assets\/service_72.png"
+ }
+ },
+ {
+ "id": "B407MVCA3",
+ "deleted": false,
+ "name": "gdrive",
+ "app_id": "A0F7YS32P",
+ "icons": {
+ "image_36": "https:\/\/a.slack-edge.com\/12b5a\/plugins\/gdrive\/assets\/service_36.png",
+ "image_48": "https:\/\/a.slack-edge.com\/12b5a\/plugins\/gdrive\/assets\/service_48.png",
+ "image_72": "https:\/\/a.slack-edge.com\/12b5a\/plugins\/gdrive\/assets\/service_72.png"
+ }
+ }
+ ],
+ "url": "wss:\/\/mpmulti-9ry9.slack-msgs.com\/websocket\/U4n-6Yw8mpc9C64E74gYXGbojir25QCCcLJ9eK57KDURr0o5so6x4qZU-pKn-LX0bYt-ZmIaFcN4TxoKPry1eRtOwiCNSyGyIGxnYrUtrsvMvkFr5C2-osZVL85WqzIWRoE00sBma3U8BkKfi8oUmMoYGKFFVeJ2WPI_ygHRPOo="
+}
diff --git a/_pytest/data/websocket/1485975367.79-reconnect_url.json b/_pytest/data/websocket/1485975367.79-reconnect_url.json
new file mode 100644
index 0000000..94cacca
--- /dev/null
+++ b/_pytest/data/websocket/1485975367.79-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-gvop.slack-msgs.com/websocket/tamYoLuX4lU-WBS7cFe2RCh8kqeO86F0Mi1RKFVfk7FM-QNu1KD7HiMBStfdLkwkKHmtyTACNE6SONtoQRTbnC0q9fAoLHPl76Y7y9IhCve6VKs2KNLmRH37WutXTBsj3b9HvF79VySlPgAwVXZeH0lgfDDk_RAY9l_dJ8u-jSs=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"}
diff --git a/_pytest/data/websocket/1485975408.19-user_typing.json b/_pytest/data/websocket/1485975408.19-user_typing.json
new file mode 100644
index 0000000..422e30b
--- /dev/null
+++ b/_pytest/data/websocket/1485975408.19-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "D3ZEQULHZ"}
diff --git a/_pytest/data/websocket/1485975412.74-user_typing.json b/_pytest/data/websocket/1485975412.74-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485975412.74-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485975420.36-user_typing.json b/_pytest/data/websocket/1485975420.36-user_typing.json
new file mode 100644
index 0000000..422e30b
--- /dev/null
+++ b/_pytest/data/websocket/1485975420.36-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "D3ZEQULHZ"}
diff --git a/_pytest/data/websocket/1485975421.33-message.json b/_pytest/data/websocket/1485975421.33-message.json
new file mode 100644
index 0000000..9a85771
--- /dev/null
+++ b/_pytest/data/websocket/1485975421.33-message.json
@@ -0,0 +1 @@
+{"text": "hi bob", "ts": "1485975421.000002", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "D3ZEQULHZ"}
diff --git a/_pytest/data/websocket/1485975421.42-desktop_notification.json b/_pytest/data/websocket/1485975421.42-desktop_notification.json
new file mode 100644
index 0000000..ee6739a
--- /dev/null
+++ b/_pytest/data/websocket/1485975421.42-desktop_notification.json
@@ -0,0 +1 @@
+{"avatarImage": "https://secure.gravatar.com/avatar/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0024-192.png", "subtitle": "alice", "is_shared": false, "title": "weeslacktest", "ssbFilename": "knock_brush.mp3", "imageUri": null, "launchUri": "slack://channel?id=D3ZEQULHZ&message=1485975421000002&team=T3YS5EAL9", "event_ts": "1485975421.875655", "msg": "1485975421.000002", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "content": "hi bob", "type": "desktop_notification", "channel": "D3ZEQULHZ"}
diff --git a/_pytest/data/websocket/1485975426.55-reaction_added.json b/_pytest/data/websocket/1485975426.55-reaction_added.json
new file mode 100644
index 0000000..b51cfdb
--- /dev/null
+++ b/_pytest/data/websocket/1485975426.55-reaction_added.json
@@ -0,0 +1 @@
+{"reaction": "grinning", "event_ts": "1485975426.875724", "ts": "1485975426.000003", "item": {"type": "message", "ts": "1485975421.000002", "channel": "D3ZEQULHZ"}, "user": "U407ABLLW", "item_user": "U407ABLLW", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reaction_added"}
diff --git a/_pytest/data/websocket/1485975428.76-reaction_removed.json b/_pytest/data/websocket/1485975428.76-reaction_removed.json
new file mode 100644
index 0000000..b3b90ac
--- /dev/null
+++ b/_pytest/data/websocket/1485975428.76-reaction_removed.json
@@ -0,0 +1 @@
+{"reaction": "grinning", "event_ts": "1485975428.875759", "ts": "1485975428.000004", "item": {"type": "message", "ts": "1485975421.000002", "channel": "D3ZEQULHZ"}, "user": "U407ABLLW", "item_user": "U407ABLLW", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reaction_removed"}
diff --git a/_pytest/data/websocket/1485975458.35-channel_created.json b/_pytest/data/websocket/1485975458.35-channel_created.json
new file mode 100644
index 0000000..ca225d8
--- /dev/null
+++ b/_pytest/data/websocket/1485975458.35-channel_created.json
@@ -0,0 +1 @@
+{"event_ts": "1485975458.876318", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_created", "channel": {"is_shared": false, "is_channel": true, "creator": "U407ABLLW", "created": 1485975458, "is_org_shared": false, "id": "C3ZJKCGTU", "name": "some-channel"}}
diff --git a/_pytest/data/websocket/1485975458.87-channel_joined.json b/_pytest/data/websocket/1485975458.87-channel_joined.json
new file mode 100644
index 0000000..8991446
--- /dev/null
+++ b/_pytest/data/websocket/1485975458.87-channel_joined.json
@@ -0,0 +1 @@
+{"event_ts": "1485975458.876336", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_joined", "channel": {"previous_names": [], "is_general": false, "name": "some-channel", "is_channel": true, "created": 1485975458, "is_member": true, "unread_count_display": 0, "is_archived": false, "creator": "U407ABLLW", "topic": {"last_set": 0, "value": "", "creator": ""}, "unread_count": 0, "purpose": {"last_set": 1485975458, "value": "who knows?", "creator": "U407ABLLW"}, "members": ["U3ZKBBDL5", "U407ABLLW"], "last_read": "1485975458.000003", "id": "C3ZJKCGTU", "latest": {"text": "<@U407ABLLW|alice> set the channel purpose: who knows?", "ts": "1485975458.000003", "subtype": "channel_purpose", "purpose": "who knows?", "type": "message", "user": "U407ABLLW"}}}
diff --git a/_pytest/data/websocket/1485975458.87-message.json b/_pytest/data/websocket/1485975458.87-message.json
new file mode 100644
index 0000000..63f611c
--- /dev/null
+++ b/_pytest/data/websocket/1485975458.87-message.json
@@ -0,0 +1 @@
+{"type": "message", "user_profile": {"avatar_hash": "g6f7a5bf7eb7", "first_name": "Second", "image_72": "https://secure.gravatar.com/avatar/6f7a5bf7eb782853afb1d33f28ca9ae7.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0019-72.png", "name": "bob", "real_name": "Second Testuser"}, "text": "<@U3ZKBBDL5|bob> has joined the channel", "ts": "1485975458.000004", "subtype": "channel_join", "user": "U3ZKBBDL5", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "inviter": "U407ABLLW", "channel": "C3ZJKCGTU"}
diff --git a/_pytest/data/websocket/1485975462.62-update_thread_state.json b/_pytest/data/websocket/1485975462.62-update_thread_state.json
new file mode 100644
index 0000000..7a5411a
--- /dev/null
+++ b/_pytest/data/websocket/1485975462.62-update_thread_state.json
@@ -0,0 +1 @@
+{"mention_count": 0, "event_ts": "1485975458.876340", "timestamp": "1485975458.741354", "has_unreads": false, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "update_thread_state"}
diff --git a/_pytest/data/websocket/1485975462.62-user_typing.json b/_pytest/data/websocket/1485975462.62-user_typing.json
new file mode 100644
index 0000000..ec19e94
--- /dev/null
+++ b/_pytest/data/websocket/1485975462.62-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C3ZJKCGTU"}
diff --git a/_pytest/data/websocket/1485975476.62-channel_deleted.json b/_pytest/data/websocket/1485975476.62-channel_deleted.json
new file mode 100644
index 0000000..8dd1cb8
--- /dev/null
+++ b/_pytest/data/websocket/1485975476.62-channel_deleted.json
@@ -0,0 +1 @@
+{"event_ts": "1485975476.876638", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_deleted", "channel": "C3ZJKCGTU"}
diff --git a/_pytest/data/websocket/1485975476.86-group_join.json b/_pytest/data/websocket/1485975476.86-group_join.json
new file mode 100644
index 0000000..dc72eeb
--- /dev/null
+++ b/_pytest/data/websocket/1485975476.86-group_join.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_join", "user": "U407ABLLW", "channel": "G409GKN9M", "ts": "1485975476.000002"}
diff --git a/_pytest/data/websocket/1485975476.86-group_joined.json b/_pytest/data/websocket/1485975476.86-group_joined.json
new file mode 100644
index 0000000..bbd971c
--- /dev/null
+++ b/_pytest/data/websocket/1485975476.86-group_joined.json
@@ -0,0 +1 @@
+{"event_ts": "1485975476.876646", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_joined", "channel": {"name": "some-channel", "created": 1485975458, "is_mpim": false, "is_archived": false, "creator": "U407ABLLW", "is_group": true, "topic": {"last_set": 1485975476, "value": "", "creator": "U407ABLLW"}, "purpose": {"last_set": 1485975476, "value": "who knows?", "creator": "U407ABLLW"}, "members": ["U407ABLLW", "U3ZKBBDL5"], "is_starred": false, "id": "G409GKN9M"}}
diff --git a/_pytest/data/websocket/1485975487.69-group_history_changed.json b/_pytest/data/websocket/1485975487.69-group_history_changed.json
new file mode 100644
index 0000000..0196401
--- /dev/null
+++ b/_pytest/data/websocket/1485975487.69-group_history_changed.json
@@ -0,0 +1 @@
+{"event_ts": "1485975476.876650", "is_mpim": false, "ts": "1485975476.000004", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_history_changed", "channel": "G409GKN9M", "latest": "1485975476.876632"}
diff --git a/_pytest/data/websocket/1485975487.69-group_join.json b/_pytest/data/websocket/1485975487.69-group_join.json
new file mode 100644
index 0000000..0fdb54c
--- /dev/null
+++ b/_pytest/data/websocket/1485975487.69-group_join.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_join", "user": "U3ZKBBDL5", "channel": "G409GKN9M", "ts": "1485975476.000003"}
diff --git a/_pytest/data/websocket/1485975493.19-group_joined.json b/_pytest/data/websocket/1485975493.19-group_joined.json
new file mode 100644
index 0000000..76e7b55
--- /dev/null
+++ b/_pytest/data/websocket/1485975493.19-group_joined.json
@@ -0,0 +1 @@
+{"event_ts": "1485975492.876964", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_joined", "channel": {"name": "some-private-channel", "last_read": "1485975492.000002", "creator": "U407ABLLW", "is_mpim": false, "is_archived": false, "created": 1485975492, "is_group": true, "topic": {"last_set": 0, "value": "", "creator": ""}, "unread_count": 0, "is_open": true, "purpose": {"last_set": 0, "value": "", "creator": ""}, "members": ["U3ZKBBDL5", "U407ABLLW"], "latest": {"text": "<@U407ABLLW|alice> has joined the group", "subtype": "group_join", "type": "message", "user": "U407ABLLW", "ts": "1485975492.000002"}, "id": "G3ZJKP7GA", "unread_count_display": 0}}
diff --git a/_pytest/data/websocket/1485975493.23-message.json b/_pytest/data/websocket/1485975493.23-message.json
new file mode 100644
index 0000000..c6dad6c
--- /dev/null
+++ b/_pytest/data/websocket/1485975493.23-message.json
@@ -0,0 +1 @@
+{"type": "message", "user_profile": {"avatar_hash": "g6f7a5bf7eb7", "first_name": "Second", "image_72": "https://secure.gravatar.com/avatar/6f7a5bf7eb782853afb1d33f28ca9ae7.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0019-72.png", "name": "bob", "real_name": "Second Testuser"}, "text": "<@U3ZKBBDL5|bob> has joined the group", "ts": "1485975492.000003", "subtype": "group_join", "user": "U3ZKBBDL5", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "inviter": "U407ABLLW", "channel": "G3ZJKP7GA"}
diff --git a/_pytest/data/websocket/1485975547.75-message.json b/_pytest/data/websocket/1485975547.75-message.json
new file mode 100644
index 0000000..4826952
--- /dev/null
+++ b/_pytest/data/websocket/1485975547.75-message.json
@@ -0,0 +1 @@
+{"user_profile": {"avatar_hash": "gfd0ce7a168d", "first_name": "First", "image_72": "https://secure.gravatar.com/avatar/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0024-72.png", "name": "alice", "real_name": "First Testuser"}, "text": "<@U407ABLLW|alice> set the channel's purpose: seekret", "ts": "1485975492.000004", "subtype": "group_purpose", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "G3ZJKP7GA", "purpose": "seekret"}
diff --git a/_pytest/data/websocket/1485975547.75-update_thread_state.json b/_pytest/data/websocket/1485975547.75-update_thread_state.json
new file mode 100644
index 0000000..4d91b20
--- /dev/null
+++ b/_pytest/data/websocket/1485975547.75-update_thread_state.json
@@ -0,0 +1 @@
+{"mention_count": 0, "event_ts": "1485975492.876967", "timestamp": "1485975493.013414", "has_unreads": false, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "update_thread_state"}
diff --git a/_pytest/data/websocket/1485975547.83-reconnect_url.json b/_pytest/data/websocket/1485975547.83-reconnect_url.json
new file mode 100644
index 0000000..42da6c5
--- /dev/null
+++ b/_pytest/data/websocket/1485975547.83-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-t63z.slack-msgs.com/websocket/I4VgKhpT11zUwKt_Wajw_phIbuzM7xTy0V0DVLb6dyPDkqGU5-497Jn3bOGncotPX4QhfZepKVtlUkrSWCqMcbjH_vjRo91HBvzvk4nJoScjn6KJatZ6vpzokG44Ee-vNMsxXLeedcbraFAzCrLlODGRqvdqxUQDQFMVES0XHP8=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"}
diff --git a/_pytest/data/websocket/1485975606.59-team_join.json b/_pytest/data/websocket/1485975606.59-team_join.json
new file mode 100644
index 0000000..3af908e
--- /dev/null
+++ b/_pytest/data/websocket/1485975606.59-team_join.json
@@ -0,0 +1 @@
+{"event_ts": "1485975606.879253", "cache_ts": 1485975606, "type": "team_join", "user": {"status": null, "profile": {"first_name": "Chuck", "last_name": "Testuser", "fields": null, "real_name": "Chuck Testuser", "image_24": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-24.png", "real_name_normalized": "Chuck Testuser", "image_512": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0010-512.png", "image_32": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-32.png", "image_48": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-48.png", "avatar_hash": "g7f87f7015f8", "image_72": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-72.png", "image_192": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0010-192.png"}, "tz": "America/Los_Angeles", "name": "chuck", "presence": "away", "deleted": false, "is_bot": false, "tz_label": "Pacific Standard Time", "real_name": "Chuck Testuser", "color": "e7392d", "team_id": "T3YS5EAL9", "is_admin": false, "is_ultra_restricted": false, "is_restricted": false, "tz_offset": -28800, "is_primary_owner": false, "id": "U4096CBHC", "is_owner": false}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}}
diff --git a/_pytest/data/websocket/1485975606.67-message.json b/_pytest/data/websocket/1485975606.67-message.json
new file mode 100644
index 0000000..cfc8e5f
--- /dev/null
+++ b/_pytest/data/websocket/1485975606.67-message.json
@@ -0,0 +1 @@
+{"user_profile": {"avatar_hash": "g7f87f7015f8", "first_name": "Chuck", "image_72": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-72.png", "name": "chuck", "real_name": "Chuck Testuser"}, "text": "<@U4096CBHC|chuck> has joined the channel", "ts": "1485975606.000003", "subtype": "channel_join", "user": "U4096CBHC", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485975606.75-im_created.json b/_pytest/data/websocket/1485975606.75-im_created.json
new file mode 100644
index 0000000..fa360d8
--- /dev/null
+++ b/_pytest/data/websocket/1485975606.75-im_created.json
@@ -0,0 +1 @@
+{"event_ts": "1485975606.879278", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "im_created", "user": "U4096CBHC", "channel": {"last_read": "0000000000.000000", "created": 1485975606, "is_org_shared": false, "unread_count": 0, "is_open": false, "user": "U4096CBHC", "unread_count_display": 0, "is_im": true, "id": "D409J34CF", "latest": null}}
diff --git a/_pytest/data/websocket/1485975606.75-im_open.json b/_pytest/data/websocket/1485975606.75-im_open.json
new file mode 100644
index 0000000..f2a9696
--- /dev/null
+++ b/_pytest/data/websocket/1485975606.75-im_open.json
@@ -0,0 +1 @@
+{"event_ts": "1485975606.879280", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "im_open", "user": "U4096CBHC", "channel": "D409J34CF"}
diff --git a/_pytest/data/websocket/1485975611.29-presence_change.json b/_pytest/data/websocket/1485975611.29-presence_change.json
new file mode 100644
index 0000000..ec41e5f
--- /dev/null
+++ b/_pytest/data/websocket/1485975611.29-presence_change.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "presence_change", "user": "U4096CBHC", "presence": "active"}
diff --git a/_pytest/data/websocket/1485975640.5-user_change.json b/_pytest/data/websocket/1485975640.5-user_change.json
new file mode 100644
index 0000000..9c2b114
--- /dev/null
+++ b/_pytest/data/websocket/1485975640.5-user_change.json
@@ -0,0 +1 @@
+{"event_ts": "1485975640.879906", "cache_ts": 1485975640, "type": "user_change", "user": {"status": null, "profile": {"first_name": "Charles", "last_name": "Testuser", "fields": [], "real_name": "Charles Testuser", "image_24": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-24.png", "real_name_normalized": "Charles Testuser", "image_512": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0010-512.png", "image_32": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-32.png", "image_48": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-48.png", "avatar_hash": "g7f87f7015f8", "image_72": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-72.png", "image_192": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0010-192.png"}, "tz": "America/Los_Angeles", "name": "chuck", "deleted": false, "is_bot": false, "tz_label": "Pacific Standard Time", "real_name": "Charles Testuser", "color": "e7392d", "team_id": "T3YS5EAL9", "is_admin": false, "is_ultra_restricted": false, "is_restricted": false, "tz_offset": -28800, "is_primary_owner": false, "id": "U4096CBHC", "is_owner": false}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}}
diff --git a/_pytest/data/websocket/1485975669.14-user_change.json b/_pytest/data/websocket/1485975669.14-user_change.json
new file mode 100644
index 0000000..0561553
--- /dev/null
+++ b/_pytest/data/websocket/1485975669.14-user_change.json
@@ -0,0 +1 @@
+{"event_ts": "1485975668.880329", "cache_ts": 1485975669, "type": "user_change", "user": {"status": null, "profile": {"first_name": "Charles", "last_name": "Testuser", "fields": [], "real_name": "Charles Testuser", "image_24": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=24&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-24.png", "real_name_normalized": "Charles Testuser", "image_512": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=512&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0010-512.png", "image_32": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=32&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-32.png", "image_48": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=48&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-48.png", "avatar_hash": "g7f87f7015f8", "image_72": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0010-72.png", "image_192": "https://secure.gravatar.com/avatar/7f87f7015f8e5081190ece053e41b11e.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0010-192.png"}, "tz": "America/Los_Angeles", "name": "charles", "deleted": false, "is_bot": false, "tz_label": "Pacific Standard Time", "real_name": "Charles Testuser", "color": "e7392d", "team_id": "T3YS5EAL9", "is_admin": false, "is_ultra_restricted": false, "is_restricted": false, "tz_offset": -28800, "is_primary_owner": false, "id": "U4096CBHC", "is_owner": false}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}}
diff --git a/_pytest/data/websocket/1485975675.81-presence_change.json b/_pytest/data/websocket/1485975675.81-presence_change.json
new file mode 100644
index 0000000..ec41e5f
--- /dev/null
+++ b/_pytest/data/websocket/1485975675.81-presence_change.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "presence_change", "user": "U4096CBHC", "presence": "active"}
diff --git a/_pytest/data/websocket/1485975690.59-mpim_joined.json b/_pytest/data/websocket/1485975690.59-mpim_joined.json
new file mode 100644
index 0000000..d377778
--- /dev/null
+++ b/_pytest/data/websocket/1485975690.59-mpim_joined.json
@@ -0,0 +1 @@
+{"event_ts": "1485975690.880722", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "mpim_joined", "channel": {"name": "mpdm-bob--alice--charles-1", "last_read": "0000000000.000000", "creator": "U407ABLLW", "is_mpim": true, "is_archived": false, "created": 1485975690, "is_group": true, "topic": {"last_set": 1485975690, "value": "Group messaging", "creator": "U407ABLLW"}, "unread_count": 0, "is_open": false, "purpose": {"last_set": 1485975690, "value": "Group messaging with: @bob @alice @charles", "creator": "U407ABLLW"}, "members": ["U407ABLLW", "U3ZKBBDL5", "U4096CBHC"], "latest": null, "id": "G3ZGMF4RZ", "unread_count_display": 0}}
diff --git a/_pytest/data/websocket/1485975690.67-group_joined.json b/_pytest/data/websocket/1485975690.67-group_joined.json
new file mode 100644
index 0000000..b1c27dd
--- /dev/null
+++ b/_pytest/data/websocket/1485975690.67-group_joined.json
@@ -0,0 +1 @@
+{"event_ts": "1485975690.880723", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_joined", "channel": {"name": "mpdm-bob--alice--charles-1", "last_read": "0000000000.000000", "creator": "U407ABLLW", "is_mpim": true, "is_archived": false, "created": 1485975690, "is_group": true, "topic": {"last_set": 1485975690, "value": "Group messaging", "creator": "U407ABLLW"}, "unread_count": 0, "is_open": false, "purpose": {"last_set": 1485975690, "value": "Group messaging with: @bob @alice @charles", "creator": "U407ABLLW"}, "members": ["U407ABLLW", "U3ZKBBDL5", "U4096CBHC"], "latest": null, "id": "G3ZGMF4RZ", "unread_count_display": 0}}
diff --git a/_pytest/data/websocket/1485975690.67-update_thread_state.json b/_pytest/data/websocket/1485975690.67-update_thread_state.json
new file mode 100644
index 0000000..c745df6
--- /dev/null
+++ b/_pytest/data/websocket/1485975690.67-update_thread_state.json
@@ -0,0 +1 @@
+{"mention_count": 0, "event_ts": "1485975690.880724", "timestamp": "1485975690.537094", "has_unreads": false, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "update_thread_state"}
diff --git a/_pytest/data/websocket/1485975697.58-user_typing.json b/_pytest/data/websocket/1485975697.58-user_typing.json
new file mode 100644
index 0000000..b8239d4
--- /dev/null
+++ b/_pytest/data/websocket/1485975697.58-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "G3ZGMF4RZ"}
diff --git a/_pytest/data/websocket/1485975698.45-message.json b/_pytest/data/websocket/1485975698.45-message.json
new file mode 100644
index 0000000..2118ec7
--- /dev/null
+++ b/_pytest/data/websocket/1485975698.45-message.json
@@ -0,0 +1 @@
+{"text": "surely", "ts": "1485975698.000002", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "G3ZGMF4RZ"}
diff --git a/_pytest/data/websocket/1485975701.72-reaction_added.json b/_pytest/data/websocket/1485975701.72-reaction_added.json
new file mode 100644
index 0000000..b4d2282
--- /dev/null
+++ b/_pytest/data/websocket/1485975701.72-reaction_added.json
@@ -0,0 +1 @@
+{"reaction": "unamused", "event_ts": "1485975701.880957", "ts": "1485975701.000003", "item": {"type": "message", "ts": "1485975698.000002", "channel": "G3ZGMF4RZ"}, "user": "U407ABLLW", "item_user": "U407ABLLW", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reaction_added"}
diff --git a/_pytest/data/websocket/1485975703.22-reaction_removed.json b/_pytest/data/websocket/1485975703.22-reaction_removed.json
new file mode 100644
index 0000000..3deafb2
--- /dev/null
+++ b/_pytest/data/websocket/1485975703.22-reaction_removed.json
@@ -0,0 +1 @@
+{"reaction": "unamused", "event_ts": "1485975703.880979", "ts": "1485975703.000004", "item": {"type": "message", "ts": "1485975698.000002", "channel": "G3ZGMF4RZ"}, "user": "U407ABLLW", "item_user": "U407ABLLW", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reaction_removed"}
diff --git a/_pytest/data/websocket/1485975715.79-message.json b/_pytest/data/websocket/1485975715.79-message.json
new file mode 100644
index 0000000..5d3c51c
--- /dev/null
+++ b/_pytest/data/websocket/1485975715.79-message.json
@@ -0,0 +1 @@
+{"username": "<@U407ABLLW|alice>", "source_team": "T3YS5EAL9", "user_profile": {"avatar_hash": "gfd0ce7a168d", "first_name": "First", "image_72": "https://secure.gravatar.com/avatar/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0024-72.png", "name": "alice", "real_name": "First Testuser"}, "text": "<@U407ABLLW|alice> uploaded a file: <https://weeslacktest.slack.com/files/alice/F3ZLY6K5J/-.txt|Untitled>", "team": "T3YS5EAL9", "upload": true, "ts": "1485975715.000005", "display_as_bot": false, "user": "U407ABLLW", "file": {"filetype": "text", "lines_more": 0, "channels": [], "display_as_bot": false, "id": "F3ZLY6K5J", "size": 14, "title": "Untitled", "url_private": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZLY6K5J/-.txt", "ims": [], "preview": "some code here", "external_type": "", "edit_link": "https://weeslacktest.slack.com/files/alice/F3ZLY6K5J/-.txt/edit", "username": "", "timestamp": 1485975715, "public_url_shared": false, "editable": true, "preview_highlight": "<div class=\"CodeMirror cm-s-default CodeMirrorServer\" oncopy=\"if(event.clipboardData){event.clipboardData.setData('text/plain',window.getSelection().toString().replace(/\\u200b/g,''));event.preventDefault();event.stopPropagation();}\">\n<div class=\"CodeMirror-code\">\n<div><pre>some code here</pre></div>\n</div>\n</div>\n", "url_private_download": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZLY6K5J/download/-.txt", "user": "U407ABLLW", "groups": [], "is_public": false, "pretty_type": "Plain Text", "is_external": false, "mimetype": "text/plain", "permalink_public": "https://slack-files.com/T3YS5EAL9-F3ZLY6K5J-39c2c4f739", "permalink": "https://weeslacktest.slack.com/files/alice/F3ZLY6K5J/-.txt", "name": "-.txt", "created": 1485975715, "lines": 1, "comments_count": 0, "mode": "snippet", "preview_is_truncated": false}, "subtype": "file_share", "user_team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "G3ZGMF4RZ", "bot_id": null}
diff --git a/_pytest/data/websocket/1485975715.87-file_shared.json b/_pytest/data/websocket/1485975715.87-file_shared.json
new file mode 100644
index 0000000..526f72c
--- /dev/null
+++ b/_pytest/data/websocket/1485975715.87-file_shared.json
@@ -0,0 +1 @@
+{"user_id": "U407ABLLW", "event_ts": "1485975715.881302", "file_id": "F3ZLY6K5J", "file": {"id": "F3ZLY6K5J"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_shared"}
diff --git a/_pytest/data/websocket/1485975723.85-message.json b/_pytest/data/websocket/1485975723.85-message.json
new file mode 100644
index 0000000..d06d025
--- /dev/null
+++ b/_pytest/data/websocket/1485975723.85-message.json
@@ -0,0 +1 @@
+{"event_ts": "1485975723.881563", "ts": "1485975723.000006", "subtype": "message_deleted", "hidden": true, "previous_message": {"text": "surely", "type": "message", "user": "U407ABLLW", "ts": "1485975698.000002"}, "type": "message", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "channel": "G3ZGMF4RZ", "deleted_ts": "1485975698.000002"}
diff --git a/_pytest/data/websocket/1485975727.84-reconnect_url.json b/_pytest/data/websocket/1485975727.84-reconnect_url.json
new file mode 100644
index 0000000..3630d02
--- /dev/null
+++ b/_pytest/data/websocket/1485975727.84-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-824w.slack-msgs.com/websocket/Pl7CWLLi3w1S0gHESj79_JySeV0ho6vZRl1usylFoDVBWTj332mKkaLBR6OdrDqRDlYPnwwnh9TqlqOMVajfyHMH_Q02oVU14YJS_ao5_nEJBBd58vDB3XkKfGdPRZNgP2Id05xTpEy9izt9EF_BdDaDaTU9nGc5c2ggnuS9gos=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"}
diff --git a/_pytest/data/websocket/1485975735.91-group_archive.json b/_pytest/data/websocket/1485975735.91-group_archive.json
new file mode 100644
index 0000000..61cfdc7
--- /dev/null
+++ b/_pytest/data/websocket/1485975735.91-group_archive.json
@@ -0,0 +1 @@
+{"event_ts": "1485975735.881780", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_archive", "ts": "1485975735.000005", "channel": "G409GKN9M"}
diff --git a/_pytest/data/websocket/1485975735.99-message.json b/_pytest/data/websocket/1485975735.99-message.json
new file mode 100644
index 0000000..10f541f
--- /dev/null
+++ b/_pytest/data/websocket/1485975735.99-message.json
@@ -0,0 +1 @@
+{"user_profile": {"avatar_hash": "gfd0ce7a168d", "first_name": "First", "image_72": "https://secure.gravatar.com/avatar/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0024-72.png", "name": "alice", "real_name": "First Testuser"}, "text": "<@U407ABLLW|alice> archived the private channel", "ts": "1485975735.000006", "subtype": "group_archive", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "G409GKN9M"}
diff --git a/_pytest/data/websocket/1485975736.08-message.json b/_pytest/data/websocket/1485975736.08-message.json
new file mode 100644
index 0000000..147dbb4
--- /dev/null
+++ b/_pytest/data/websocket/1485975736.08-message.json
@@ -0,0 +1 @@
+{"text": "<@U407ABLLW|alice> archived the private channel <https://weeslacktest.slack.com/archives/some-channel|some-channel>", "ts": "1485975735.000002", "user": "USLACKBOT", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "D3ZK1D8JY"}
diff --git a/_pytest/data/websocket/1485975738.1-desktop_notification.json b/_pytest/data/websocket/1485975738.1-desktop_notification.json
new file mode 100644
index 0000000..da451bb
--- /dev/null
+++ b/_pytest/data/websocket/1485975738.1-desktop_notification.json
@@ -0,0 +1 @@
+{"avatarImage": "https://a.slack-edge.com/66f9/img/slackbot_192.png", "subtitle": "slackbot", "is_shared": false, "title": "weeslacktest", "ssbFilename": "knock_brush.mp3", "imageUri": null, "launchUri": "slack://channel?id=D3ZK1D8JY&message=1485975735000002&team=T3YS5EAL9", "event_ts": "1485975737.881829", "msg": "1485975735.000002", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "content": "@alice archived the private channel some-channel", "type": "desktop_notification", "channel": "D3ZK1D8JY"}
diff --git a/_pytest/data/websocket/1485975747.17-channel_created.json b/_pytest/data/websocket/1485975747.17-channel_created.json
new file mode 100644
index 0000000..6bcafdb
--- /dev/null
+++ b/_pytest/data/websocket/1485975747.17-channel_created.json
@@ -0,0 +1 @@
+{"event_ts": "1485975746.882009", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_created", "channel": {"is_shared": false, "is_channel": true, "creator": "U407ABLLW", "created": 1485975747, "is_org_shared": false, "id": "C3ZM8JTD3", "name": "some-channel2"}}
diff --git a/_pytest/data/websocket/1485975757.63-channel_rename.json b/_pytest/data/websocket/1485975757.63-channel_rename.json
new file mode 100644
index 0000000..a921fed
--- /dev/null
+++ b/_pytest/data/websocket/1485975757.63-channel_rename.json
@@ -0,0 +1 @@
+{"event_ts": "1485975757.882178", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_rename", "channel": {"name": "some-channel2-renamed", "id": "C3ZM8JTD3", "is_channel": true, "created": "1485975747"}}
diff --git a/_pytest/data/websocket/1485975771.6-presence_change.json b/_pytest/data/websocket/1485975771.6-presence_change.json
new file mode 100644
index 0000000..e70421c
--- /dev/null
+++ b/_pytest/data/websocket/1485975771.6-presence_change.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "presence_change", "user": "U407ABLLW", "presence": "away"}
diff --git a/_pytest/data/websocket/1485975774.62-presence_change.json b/_pytest/data/websocket/1485975774.62-presence_change.json
new file mode 100644
index 0000000..9728fae
--- /dev/null
+++ b/_pytest/data/websocket/1485975774.62-presence_change.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "presence_change", "user": "U407ABLLW", "presence": "active"}
diff --git a/_pytest/data/websocket/1485975822.17-user_typing.json b/_pytest/data/websocket/1485975822.17-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485975822.17-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485975824.48-message.json b/_pytest/data/websocket/1485975824.48-message.json
new file mode 100644
index 0000000..9fae542
--- /dev/null
+++ b/_pytest/data/websocket/1485975824.48-message.json
@@ -0,0 +1 @@
+{"text": "generally, yep!", "ts": "1485975824.000004", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485975836.23-message.json b/_pytest/data/websocket/1485975836.23-message.json
new file mode 100644
index 0000000..6715bed
--- /dev/null
+++ b/_pytest/data/websocket/1485975836.23-message.json
@@ -0,0 +1 @@
+{"thread_ts": "1485975824.000004", "text": "have you met my friend threads?", "ts": "1485975835.000005", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485975836.31-message.json b/_pytest/data/websocket/1485975836.31-message.json
new file mode 100644
index 0000000..3823c61
--- /dev/null
+++ b/_pytest/data/websocket/1485975836.31-message.json
@@ -0,0 +1 @@
+{"hidden": true, "event_ts": "1485975835.883772", "ts": "1485975835.000006", "subtype": "message_replied", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "message": {"thread_ts": "1485975824.000004", "text": "generally, yep!", "ts": "1485975824.000004", "reply_count": 1, "user": "U407ABLLW", "replies": [{"user": "U407ABLLW", "ts": "1485975835.000005"}], "type": "message"}, "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485975842.1-message.json b/_pytest/data/websocket/1485975842.1-message.json
new file mode 100644
index 0000000..b94a913
--- /dev/null
+++ b/_pytest/data/websocket/1485975842.1-message.json
@@ -0,0 +1 @@
+{"thread_ts": "1485975824.000004", "text": "react if yes", "ts": "1485975841.000007", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485975842.18-message.json b/_pytest/data/websocket/1485975842.18-message.json
new file mode 100644
index 0000000..7bc2b38
--- /dev/null
+++ b/_pytest/data/websocket/1485975842.18-message.json
@@ -0,0 +1 @@
+{"hidden": true, "event_ts": "1485975841.883922", "ts": "1485975841.000008", "subtype": "message_replied", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "message": {"thread_ts": "1485975824.000004", "text": "generally, yep!", "ts": "1485975824.000004", "reply_count": 2, "user": "U407ABLLW", "replies": [{"user": "U407ABLLW", "ts": "1485975835.000005"}, {"user": "U407ABLLW", "ts": "1485975841.000007"}], "type": "message"}, "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485975850.32-mpim_open.json b/_pytest/data/websocket/1485975850.32-mpim_open.json
new file mode 100644
index 0000000..ebce13e
--- /dev/null
+++ b/_pytest/data/websocket/1485975850.32-mpim_open.json
@@ -0,0 +1 @@
+{"event_ts": "1485975849.884091", "is_mpim": true, "user": "U3ZKBBDL5", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "mpim_open", "channel": "G3ZGMF4RZ"}
diff --git a/_pytest/data/websocket/1485975850.45-group_open.json b/_pytest/data/websocket/1485975850.45-group_open.json
new file mode 100644
index 0000000..beb27d3
--- /dev/null
+++ b/_pytest/data/websocket/1485975850.45-group_open.json
@@ -0,0 +1 @@
+{"event_ts": "1485975849.884092", "is_mpim": true, "user": "U3ZKBBDL5", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_open", "channel": "G3ZGMF4RZ"}
diff --git a/_pytest/data/websocket/1485975858.56-reaction_added.json b/_pytest/data/websocket/1485975858.56-reaction_added.json
new file mode 100644
index 0000000..978d30f
--- /dev/null
+++ b/_pytest/data/websocket/1485975858.56-reaction_added.json
@@ -0,0 +1 @@
+{"reaction": "stuck_out_tongue", "event_ts": "1485975858.884268", "item": {"type": "message", "ts": "1485975841.000007", "channel": "C407ABS94"}, "user": "U4096CBHC", "item_user": "U407ABLLW", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reaction_added"}
diff --git a/_pytest/data/websocket/1485975890.7-bot_added.json b/_pytest/data/websocket/1485975890.7-bot_added.json
new file mode 100644
index 0000000..91254cf
--- /dev/null
+++ b/_pytest/data/websocket/1485975890.7-bot_added.json
@@ -0,0 +1 @@
+{"event_ts": "1485975890.885679", "type": "bot_added", "cache_ts": 1485975890, "bot": {"deleted": false, "id": "B3YTBU6L8", "app_id": "A0F7XDUAZ", "name": "incoming-webhook", "icons": {"image_36": "https://a.slack-edge.com/12b5a/plugins/tester/assets/service_36.png", "image_48": "https://a.slack-edge.com/12b5a/plugins/tester/assets/service_48.png", "image_72": "https://a.slack-edge.com/12b5a/plugins/tester/assets/service_72.png"}}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}}
diff --git a/_pytest/data/websocket/1485975890.78-message.json b/_pytest/data/websocket/1485975890.78-message.json
new file mode 100644
index 0000000..785faa6
--- /dev/null
+++ b/_pytest/data/websocket/1485975890.78-message.json
@@ -0,0 +1 @@
+{"text": "added an integration to this channel: <https://weeslacktest.slack.com/services/B3YTBU6L8|incoming-webhook>", "ts": "1485975890.000009", "subtype": "bot_add", "user": "U4096CBHC", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94", "bot_id": "B3YTBU6L8"}
diff --git a/_pytest/data/websocket/1485975896.16-message.json b/_pytest/data/websocket/1485975896.16-message.json
new file mode 100644
index 0000000..3a9db89
--- /dev/null
+++ b/_pytest/data/websocket/1485975896.16-message.json
@@ -0,0 +1 @@
+{"text": "disabled an integration in this channel: <https://weeslacktest.slack.com/services/B3YTBU6L8|incoming-webhook>", "ts": "1485975896.000010", "subtype": "bot_disable", "user": "U4096CBHC", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94", "bot_id": "B3YTBU6L8"}
diff --git a/_pytest/data/websocket/1485975907.84-reconnect_url.json b/_pytest/data/websocket/1485975907.84-reconnect_url.json
new file mode 100644
index 0000000..a2f99c1
--- /dev/null
+++ b/_pytest/data/websocket/1485975907.84-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-1r8c.slack-msgs.com/websocket/8atJCMnYZ10YaqNai-zwEaNMfkwh85XwRpc0MYVVOzAojnPcrx8SboF-NBWeep6Hy7arytqEffr_Fh7mPrDagwEGwbOeX-OH3OLlubVjpC2cCLWwm2jN3rEZcq8A4j0tpPP56GZ84jbLn4BKvDhKkkKhRXQhuYtC7kskaXXLTbk=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"}
diff --git a/_pytest/data/websocket/1485975926.59-user_change.json b/_pytest/data/websocket/1485975926.59-user_change.json
new file mode 100644
index 0000000..179a67d
--- /dev/null
+++ b/_pytest/data/websocket/1485975926.59-user_change.json
@@ -0,0 +1 @@
+{"event_ts": "1485975926.886492", "cache_ts": 1485975926, "type": "user_change", "user": {"status": null, "profile": {"first_name": "Charles", "last_name": "Testuser", "fields": [], "real_name": "Charles Testuser", "image_24": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_original": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_original.png", "real_name_normalized": "Charles Testuser", "image_512": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_32": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_48": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "avatar_hash": "5af404f7d4b7", "image_72": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_1024": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_192": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png"}, "tz": "America/Los_Angeles", "name": "charles", "deleted": false, "is_bot": false, "tz_label": "Pacific Standard Time", "real_name": "Charles Testuser", "color": "e7392d", "team_id": "T3YS5EAL9", "is_admin": false, "is_ultra_restricted": false, "is_restricted": false, "tz_offset": -28800, "is_primary_owner": false, "id": "U4096CBHC", "is_owner": false}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}}
diff --git a/_pytest/data/websocket/1485975930.81-user_change.json b/_pytest/data/websocket/1485975930.81-user_change.json
new file mode 100644
index 0000000..afbbb1b
--- /dev/null
+++ b/_pytest/data/websocket/1485975930.81-user_change.json
@@ -0,0 +1 @@
+{"event_ts": "1485975930.886576", "cache_ts": 1485975930, "type": "user_change", "user": {"status": null, "profile": {"first_name": "Charles", "last_name": "Testuser", "fields": [], "real_name": "Charles Testuser", "image_24": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_original": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_original.png", "real_name_normalized": "Charles Testuser", "image_512": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_32": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_48": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "avatar_hash": "5af404f7d4b7", "image_72": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_1024": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png", "image_192": "https://avatars.slack-edge.com/2017-02-01/135714629508_5af404f7d4b7728d10c0_24.png"}, "tz": "America/Los_Angeles", "name": "charles", "deleted": false, "is_bot": false, "tz_label": "Pacific Standard Time", "real_name": "Charles Testuser", "color": "e7392d", "team_id": "T3YS5EAL9", "is_admin": false, "is_ultra_restricted": false, "is_restricted": false, "tz_offset": -28800, "is_primary_owner": false, "id": "U4096CBHC", "is_owner": false}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}}
diff --git a/_pytest/data/websocket/1485975956.38-file_public.json b/_pytest/data/websocket/1485975956.38-file_public.json
new file mode 100644
index 0000000..288b528
--- /dev/null
+++ b/_pytest/data/websocket/1485975956.38-file_public.json
@@ -0,0 +1 @@
+{"user_id": "U407ABLLW", "event_ts": "1485975956.887078", "file_id": "F3ZJQTA66", "file": {"id": "F3ZJQTA66"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_public"}
diff --git a/_pytest/data/websocket/1485975956.47-file_shared.json b/_pytest/data/websocket/1485975956.47-file_shared.json
new file mode 100644
index 0000000..1064ac7
--- /dev/null
+++ b/_pytest/data/websocket/1485975956.47-file_shared.json
@@ -0,0 +1 @@
+{"user_id": "U407ABLLW", "event_ts": "1485975956.887081", "file_id": "F3ZJQTA66", "file": {"id": "F3ZJQTA66"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_shared"}
diff --git a/_pytest/data/websocket/1485975956.47-message.json b/_pytest/data/websocket/1485975956.47-message.json
new file mode 100644
index 0000000..04e67a8
--- /dev/null
+++ b/_pytest/data/websocket/1485975956.47-message.json
@@ -0,0 +1 @@
+{"username": "<@U407ABLLW|alice>", "source_team": "T3YS5EAL9", "user_profile": {"avatar_hash": "gfd0ce7a168d", "first_name": "First", "image_72": "https://secure.gravatar.com/avatar/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=72&d=https%3A%2F%2Fa.slack-edge.com%2F66f9%2Fimg%2Favatars%2Fava_0024-72.png", "name": "alice", "real_name": "First Testuser"}, "text": "<@U407ABLLW|alice> uploaded a file: <https://weeslacktest.slack.com/files/alice/F3ZJQTA66/1x1.png|1x1.png>", "team": "T3YS5EAL9", "upload": true, "ts": "1485975956.000011", "display_as_bot": false, "user": "U407ABLLW", "file": {"image_exif_rotation": 1, "filetype": "png", "channels": ["C407ABS94"], "display_as_bot": false, "id": "F3ZJQTA66", "size": 68, "original_h": 1, "thumb_360_w": 1, "title": "1x1.png", "url_private": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZJQTA66/1x1.png", "thumb_360": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_360.png", "thumb_64": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_64.png", "ims": [], "thumb_80": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_80.png", "thumb_360_h": 1, "external_type": "", "username": "", "timestamp": 1485975955, "public_url_shared": false, "editable": false, "thumb_160": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_160.png", "url_private_download": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZJQTA66/download/1x1.png", "user": "U407ABLLW", "groups": [], "is_public": true, "pretty_type": "PNG", "is_external": false, "mimetype": "image/png", "permalink_public": "https://slack-files.com/T3YS5EAL9-F3ZJQTA66-5d747593d2", "permalink": "https://weeslacktest.slack.com/files/alice/F3ZJQTA66/1x1.png", "name": "1x1.png", "created": 1485975955, "original_w": 1, "comments_count": 0, "mode": "hosted"}, "subtype": "file_share", "user_team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94", "bot_id": null}
diff --git a/_pytest/data/websocket/1485975978.79-message.json b/_pytest/data/websocket/1485975978.79-message.json
new file mode 100644
index 0000000..f7c1846
--- /dev/null
+++ b/_pytest/data/websocket/1485975978.79-message.json
@@ -0,0 +1 @@
+{"username": "<@U407ABLLW|alice>", "subtype": "file_share", "text": "<@U407ABLLW|alice> shared a file: <https://weeslacktest.slack.com/files/alice/F3YTCL8TA/some_post_here|some post here>", "upload": false, "ts": "1485975978.000012", "display_as_bot": false, "user": "U407ABLLW", "file": {"filetype": "space", "channels": ["C407ABS94"], "display_as_bot": false, "id": "F3YTCL8TA", "size": 73, "title": "some post here", "url_private": "https://files.slack.com/files-pri/T3YS5EAL9-F3YTCL8TA/some_post_here", "ims": [], "state": "locked", "editor": "U407ABLLW", "preview": null, "external_type": "", "username": "", "updated": 1485975959, "timestamp": 1485975967, "public_url_shared": false, "editable": true, "url_private_download": "https://files.slack.com/files-pri/T3YS5EAL9-F3YTCL8TA/download/some_post_here", "user": "U407ABLLW", "groups": [], "is_public": false, "last_editor": "U407ABLLW", "pretty_type": "Post", "is_external": false, "mimetype": "text/plain", "permalink_public": "https://slack-files.com/T3YS5EAL9-F3YTCL8TA-9d9391a713", "permalink": "https://weeslacktest.slack.com/files/alice/F3YTCL8TA/some_post_here", "name": "some_post_here", "created": 1485975959, "comments_count": 0, "mode": "space"}, "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94", "bot_id": null}
diff --git a/_pytest/data/websocket/1485975978.91-file_public.json b/_pytest/data/websocket/1485975978.91-file_public.json
new file mode 100644
index 0000000..820f802
--- /dev/null
+++ b/_pytest/data/websocket/1485975978.91-file_public.json
@@ -0,0 +1 @@
+{"user_id": "U407ABLLW", "event_ts": "1485975978.887563", "file_id": "F3YTCL8TA", "file": {"id": "F3YTCL8TA"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_public"}
diff --git a/_pytest/data/websocket/1485975978.91-file_shared.json b/_pytest/data/websocket/1485975978.91-file_shared.json
new file mode 100644
index 0000000..ede98ba
--- /dev/null
+++ b/_pytest/data/websocket/1485975978.91-file_shared.json
@@ -0,0 +1 @@
+{"user_id": "U407ABLLW", "event_ts": "1485975978.887560", "file_id": "F3YTCL8TA", "file": {"id": "F3YTCL8TA"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_shared"}
diff --git a/_pytest/data/websocket/1485975995.98-file_change.json b/_pytest/data/websocket/1485975995.98-file_change.json
new file mode 100644
index 0000000..9744692
--- /dev/null
+++ b/_pytest/data/websocket/1485975995.98-file_change.json
@@ -0,0 +1 @@
+{"user_id": "U407ABLLW", "event_ts": "1485975995.887846", "file_id": "F3YTCL8TA", "file": {"id": "F3YTCL8TA"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_change"}
diff --git a/_pytest/data/websocket/1485975998.13-file_change.json b/_pytest/data/websocket/1485975998.13-file_change.json
new file mode 100644
index 0000000..8933dd7
--- /dev/null
+++ b/_pytest/data/websocket/1485975998.13-file_change.json
@@ -0,0 +1 @@
+{"user_id": "U407ABLLW", "event_ts": "1485975998.887906", "file_id": "F3YTCL8TA", "file": {"id": "F3YTCL8TA"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_change"}
diff --git a/_pytest/data/websocket/1485976002.57-file_deleted.json b/_pytest/data/websocket/1485976002.57-file_deleted.json
new file mode 100644
index 0000000..34719d0
--- /dev/null
+++ b/_pytest/data/websocket/1485976002.57-file_deleted.json
@@ -0,0 +1 @@
+{"event_ts": "1485976002.888005", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_deleted", "file_id": "F3YTCL8TA"}
diff --git a/_pytest/data/websocket/1485976002.66-message.json b/_pytest/data/websocket/1485976002.66-message.json
new file mode 100644
index 0000000..cb7bc08
--- /dev/null
+++ b/_pytest/data/websocket/1485976002.66-message.json
@@ -0,0 +1 @@
+{"event_ts": "1485976002.888006", "ts": "1485976002.000013", "subtype": "message_deleted", "hidden": true, "previous_message": {"username": "<@U407ABLLW|alice>", "subtype": "file_share", "text": "<@U407ABLLW|alice> shared a file: <https://weeslacktest.slack.com/files/alice/F3YTCL8TA/some_post_here|some post here>", "upload": false, "ts": "1485975978.000012", "display_as_bot": false, "user": "U407ABLLW", "file": {"filetype": "space", "channels": [], "display_as_bot": false, "id": "F3YTCL8TA", "size": 73, "title": "some post here", "url_private": "https://files.slack.com/files-pri/T3YS5EAL9-F3YTCL8TA/some_post_here", "ims": [], "state": "locked", "editor": "U407ABLLW", "preview": null, "external_type": "", "username": "", "updated": 1485975959, "timestamp": 1485975967, "public_url_shared": false, "editable": true, "url_private_download": "https://files.slack.com/files-pri/T3YS5EAL9-F3YTCL8TA/download/some_post_here", "user": "U407ABLLW", "groups": [], "is_public": true, "last_editor": "U407ABLLW", "pretty_type": "Post", "is_external": false, "mimetype": "text/plain", "permalink_public": "https://slack-files.com/T3YS5EAL9-F3YTCL8TA-9d9391a713", "permalink": "https://weeslacktest.slack.com/files/alice/F3YTCL8TA/some_post_here", "name": "some_post_here", "created": 1485975959, "comments_count": 0, "mode": "space"}, "type": "message", "bot_id": null}, "type": "message", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "channel": "C407ABS94", "deleted_ts": "1485975978.000012"}
diff --git a/_pytest/data/websocket/1485976024.46-user_typing.json b/_pytest/data/websocket/1485976024.46-user_typing.json
new file mode 100644
index 0000000..b8239d4
--- /dev/null
+++ b/_pytest/data/websocket/1485976024.46-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "G3ZGMF4RZ"}
diff --git a/_pytest/data/websocket/1485976028.31-user_typing.json b/_pytest/data/websocket/1485976028.31-user_typing.json
new file mode 100644
index 0000000..8307f14
--- /dev/null
+++ b/_pytest/data/websocket/1485976028.31-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "G3ZJKP7GA"}
diff --git a/_pytest/data/websocket/1485976039.32-reaction_added.json b/_pytest/data/websocket/1485976039.32-reaction_added.json
new file mode 100644
index 0000000..864ea68
--- /dev/null
+++ b/_pytest/data/websocket/1485976039.32-reaction_added.json
@@ -0,0 +1 @@
+{"reaction": "unamused", "event_ts": "1485976039.888795", "item": {"type": "message", "ts": "1485975841.000007", "channel": "C407ABS94"}, "user": "U407ABLLW", "item_user": "U407ABLLW", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reaction_added"}
diff --git a/_pytest/data/websocket/1485976040.8-reaction_removed.json b/_pytest/data/websocket/1485976040.8-reaction_removed.json
new file mode 100644
index 0000000..3553a10
--- /dev/null
+++ b/_pytest/data/websocket/1485976040.8-reaction_removed.json
@@ -0,0 +1 @@
+{"reaction": "unamused", "event_ts": "1485976040.888829", "item": {"type": "message", "ts": "1485975841.000007", "channel": "C407ABS94"}, "user": "U407ABLLW", "item_user": "U407ABLLW", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reaction_removed"}
diff --git a/_pytest/data/websocket/1485976087.84-reconnect_url.json b/_pytest/data/websocket/1485976087.84-reconnect_url.json
new file mode 100644
index 0000000..40308ce
--- /dev/null
+++ b/_pytest/data/websocket/1485976087.84-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-clcz.slack-msgs.com/websocket/ZwLc8-LUIYLyvEwRO5WKs99SLtxBN9Cyu1W5qmqkre0AtWFl_H8xTE7HbF0E9LUvgI4bNkIRG8WgPxIzfr5gLJsU6vg8By36_mUUZYfH0TV65y_h2vV7NQe6s3A6WJdKRoJAe_EI2AN5L-VeL9rK1Ygc0nw3ngmuL78G6cm48xw=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"}
diff --git a/_pytest/data/websocket/1485976107.57-channel_created.json b/_pytest/data/websocket/1485976107.57-channel_created.json
new file mode 100644
index 0000000..b061743
--- /dev/null
+++ b/_pytest/data/websocket/1485976107.57-channel_created.json
@@ -0,0 +1 @@
+{"event_ts": "1485976107.890695", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_created", "channel": {"is_shared": false, "is_channel": true, "creator": "U407ABLLW", "created": 1485976107, "is_org_shared": false, "id": "C3ZM2GMGU", "name": "made-to-be-archived"}}
diff --git a/_pytest/data/websocket/1485976114.72-user_typing.json b/_pytest/data/websocket/1485976114.72-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976114.72-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976117.99-user_typing.json b/_pytest/data/websocket/1485976117.99-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976117.99-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976124.9-user_typing.json b/_pytest/data/websocket/1485976124.9-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976124.9-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976124.98-message.json b/_pytest/data/websocket/1485976124.98-message.json
new file mode 100644
index 0000000..26ce4e5
--- /dev/null
+++ b/_pytest/data/websocket/1485976124.98-message.json
@@ -0,0 +1 @@
+{"text": "referencing someong by <@U3ZKBBDL5> name", "ts": "1485976124.000014", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976125.06-desktop_notification.json b/_pytest/data/websocket/1485976125.06-desktop_notification.json
new file mode 100644
index 0000000..ddd6dff
--- /dev/null
+++ b/_pytest/data/websocket/1485976125.06-desktop_notification.json
@@ -0,0 +1 @@
+{"avatarImage": "https://secure.gravatar.com/avatar/fd0ce7a168dc2235d21c53c2c1cfee0c.jpg?s=192&d=https%3A%2F%2Fa.slack-edge.com%2F7fa9%2Fimg%2Favatars%2Fava_0024-192.png", "subtitle": "#general", "is_shared": false, "title": "weeslacktest", "ssbFilename": "knock_brush.mp3", "imageUri": null, "launchUri": "slack://channel?id=C407ABS94&message=1485976124000014&team=T3YS5EAL9", "event_ts": "1485976124.891186", "msg": "1485976124.000014", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "content": "alice: referencing someong by @bob name", "type": "desktop_notification", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976125.95-user_typing.json b/_pytest/data/websocket/1485976125.95-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976125.95-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976129.49-user_typing.json b/_pytest/data/websocket/1485976129.49-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976129.49-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976133.0-user_typing.json b/_pytest/data/websocket/1485976133.0-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976133.0-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976137.51-user_typing.json b/_pytest/data/websocket/1485976137.51-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976137.51-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976137.95-message.json b/_pytest/data/websocket/1485976137.95-message.json
new file mode 100644
index 0000000..f4579e5
--- /dev/null
+++ b/_pytest/data/websocket/1485976137.95-message.json
@@ -0,0 +1 @@
+{"text": "referencing someone else by <@U407ABLLW> name", "ts": "1485976137.000015", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976138.73-user_typing.json b/_pytest/data/websocket/1485976138.73-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976138.73-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976141.79-user_typing.json b/_pytest/data/websocket/1485976141.79-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976141.79-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976145.8-user_typing.json b/_pytest/data/websocket/1485976145.8-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976145.8-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976149.89-user_typing.json b/_pytest/data/websocket/1485976149.89-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976149.89-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976151.6-message.json b/_pytest/data/websocket/1485976151.6-message.json
new file mode 100644
index 0000000..7efa65d
--- /dev/null
+++ b/_pytest/data/websocket/1485976151.6-message.json
@@ -0,0 +1 @@
+{"text": "referencing a #channel-that-doesnt-exist", "ts": "1485976151.000016", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976157.18-message.json b/_pytest/data/websocket/1485976157.18-message.json
new file mode 100644
index 0000000..62244b4
--- /dev/null
+++ b/_pytest/data/websocket/1485976157.18-message.json
@@ -0,0 +1 @@
+{"hidden": true, "event_ts": "1485976156.891735", "ts": "1485976156.000017", "subtype": "message_changed", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "message": {"text": "referencing a <#C407ABS94|general>", "edited": {"user": "U407ABLLW", "ts": "1485976157.000000"}, "type": "message", "user": "U407ABLLW", "ts": "1485976151.000016"}, "channel": "C407ABS94", "previous_message": {"text": "referencing a #channel-that-doesnt-exist", "type": "message", "user": "U407ABLLW", "ts": "1485976151.000016"}}
diff --git a/_pytest/data/websocket/1485976157.8-user_typing.json b/_pytest/data/websocket/1485976157.8-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976157.8-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976161.29-user_typing.json b/_pytest/data/websocket/1485976161.29-user_typing.json
new file mode 100644
index 0000000..df57e72
--- /dev/null
+++ b/_pytest/data/websocket/1485976161.29-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976161.75-message.json b/_pytest/data/websocket/1485976161.75-message.json
new file mode 100644
index 0000000..f0b899b
--- /dev/null
+++ b/_pytest/data/websocket/1485976161.75-message.json
@@ -0,0 +1 @@
+{"text": "referencing <#C3ZM8JTD3|some-channel2-renamed>", "ts": "1485976161.000018", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976182.59-channel_archive.json b/_pytest/data/websocket/1485976182.59-channel_archive.json
new file mode 100644
index 0000000..4ebdb1f
--- /dev/null
+++ b/_pytest/data/websocket/1485976182.59-channel_archive.json
@@ -0,0 +1 @@
+{"event_ts": "1485976182.892242", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_archive", "user": "U407ABLLW", "channel": "C3ZM2GMGU"}
diff --git a/_pytest/data/websocket/1485976186.62-channel_unarchive.json b/_pytest/data/websocket/1485976186.62-channel_unarchive.json
new file mode 100644
index 0000000..c95897d
--- /dev/null
+++ b/_pytest/data/websocket/1485976186.62-channel_unarchive.json
@@ -0,0 +1 @@
+{"event_ts": "1485976186.892309", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_unarchive", "user": "U407ABLLW", "channel": "C3ZM2GMGU"}
diff --git a/_pytest/data/websocket/1485976236.58-message.json b/_pytest/data/websocket/1485976236.58-message.json
new file mode 100644
index 0000000..f09b294
--- /dev/null
+++ b/_pytest/data/websocket/1485976236.58-message.json
@@ -0,0 +1 @@
+{"comment": {"comment": "first comment!", "created": 1485976236, "timestamp": 1485976236, "is_intro": false, "user": "U407ABLLW", "id": "Fc3ZMDRQLV", "channel": ""}, "text": "<@U407ABLLW|alice> commented on <@U407ABLLW|alice>\u2019s file <https://weeslacktest.slack.com/files/alice/F3ZJQTA66/1x1.png|1x1.png>: first comment!", "ts": "1485976236.000019", "subtype": "file_comment", "is_intro": false, "file": {"image_exif_rotation": 1, "filetype": "png", "channels": ["C407ABS94"], "display_as_bot": false, "id": "F3ZJQTA66", "size": 68, "original_h": 1, "thumb_360_w": 1, "title": "1x1.png", "url_private": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZJQTA66/1x1.png", "thumb_360": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_360.png", "thumb_64": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_64.png", "ims": [], "thumb_80": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_80.png", "thumb_360_h": 1, "external_type": "", "username": "", "timestamp": 1485975955, "public_url_shared": false, "editable": false, "thumb_160": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_160.png", "url_private_download": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZJQTA66/download/1x1.png", "user": "U407ABLLW", "groups": [], "is_public": true, "pretty_type": "PNG", "is_external": false, "mimetype": "image/png", "permalink_public": "https://slack-files.com/T3YS5EAL9-F3ZJQTA66-5d747593d2", "permalink": "https://weeslacktest.slack.com/files/alice/F3ZJQTA66/1x1.png", "name": "1x1.png", "created": 1485975955, "original_w": 1, "comments_count": 1, "mode": "hosted"}, "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"}
diff --git a/_pytest/data/websocket/1485976236.67-file_comment_added.json b/_pytest/data/websocket/1485976236.67-file_comment_added.json
new file mode 100644
index 0000000..82c1f0c
--- /dev/null
+++ b/_pytest/data/websocket/1485976236.67-file_comment_added.json
@@ -0,0 +1 @@
+{"comment": {"comment": "first comment!", "created": 1485976236, "timestamp": 1485976236, "is_intro": false, "user": "U407ABLLW", "id": "Fc3ZMDRQLV", "channel": ""}, "user_id": "U407ABLLW", "event_ts": "1485976236.893560", "file_id": "F3ZJQTA66", "file": {"id": "F3ZJQTA66"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_comment_added"}
diff --git a/_pytest/data/websocket/1485976248.57-message.json b/_pytest/data/websocket/1485976248.57-message.json
new file mode 100644
index 0000000..d3c8ce6
--- /dev/null
+++ b/_pytest/data/websocket/1485976248.57-message.json
@@ -0,0 +1 @@
+{"hidden": true, "event_ts": "1485976248.893799", "ts": "1485976248.000020", "subtype": "message_changed", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "message": {"comment": {"comment": "first comment! now i edited it.", "created": 1485976236, "timestamp": 1485976236, "is_intro": false, "user": "U407ABLLW", "id": "Fc3ZMDRQLV", "channel": ""}, "text": "<@U407ABLLW|alice> commented on <@U407ABLLW|alice>\u2019s file <https://weeslacktest.slack.com/files/alice/F3ZJQTA66/1x1.png|1x1.png>: first comment! now i edited it.", "ts": "1485976236.000019", "subtype": "file_comment", "is_intro": false, "file": {"image_exif_rotation": 1, "filetype": "png", "channels": ["C407ABS94"], "display_as_bot": false, "id": "F3ZJQTA66", "size": 68, "original_h": 1, "thumb_360_w": 1, "title": "1x1.png", "url_private": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZJQTA66/1x1.png", "thumb_360": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_360.png", "thumb_64": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_64.png", "ims": [], "thumb_80": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_80.png", "thumb_360_h": 1, "external_type": "", "username": "", "timestamp": 1485975955, "public_url_shared": false, "editable": false, "thumb_160": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_160.png", "url_private_download": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZJQTA66/download/1x1.png", "user": "U407ABLLW", "groups": [], "is_public": true, "pretty_type": "PNG", "is_external": false, "mimetype": "image/png", "permalink_public": "https://slack-files.com/T3YS5EAL9-F3ZJQTA66-5d747593d2", "permalink": "https://weeslacktest.slack.com/files/alice/F3ZJQTA66/1x1.png", "name": "1x1.png", "created": 1485975955, "original_w": 1, "comments_count": 1, "mode": "hosted"}, "type": "message"}, "channel": "C407ABS94", "previous_message": {"comment": {"comment": "first comment! now i edited it.", "created": 1485976236, "timestamp": 1485976236, "is_intro": false, "user": "U407ABLLW", "id": "Fc3ZMDRQLV", "channel": ""}, "text": "<@U407ABLLW|alice> commented on <@U407ABLLW|alice>\u2019s file <https://weeslacktest.slack.com/files/alice/F3ZJQTA66/1x1.png|1x1.png>: first comment! now i edited it.", "ts": "1485976236.000019", "subtype": "file_comment", "is_intro": false, "file": {"image_exif_rotation": 1, "filetype": "png", "channels": ["C407ABS94"], "display_as_bot": false, "id": "F3ZJQTA66", "size": 68, "original_h": 1, "thumb_360_w": 1, "title": "1x1.png", "url_private": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZJQTA66/1x1.png", "thumb_360": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_360.png", "thumb_64": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_64.png", "ims": [], "thumb_80": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_80.png", "thumb_360_h": 1, "external_type": "", "username": "", "timestamp": 1485975955, "public_url_shared": false, "editable": false, "thumb_160": "https://files.slack.com/files-tmb/T3YS5EAL9-F3ZJQTA66-8ab528dd77/1x1_160.png", "url_private_download": "https://files.slack.com/files-pri/T3YS5EAL9-F3ZJQTA66/download/1x1.png", "user": "U407ABLLW", "groups": [], "is_public": true, "pretty_type": "PNG", "is_external": false, "mimetype": "image/png", "permalink_public": "https://slack-files.com/T3YS5EAL9-F3ZJQTA66-5d747593d2", "permalink": "https://weeslacktest.slack.com/files/alice/F3ZJQTA66/1x1.png", "name": "1x1.png", "created": 1485975955, "original_w": 1, "comments_count": 1, "mode": "hosted"}, "type": "message"}}
diff --git a/_pytest/data/websocket/1485976248.65-file_comment_edited.json b/_pytest/data/websocket/1485976248.65-file_comment_edited.json
new file mode 100644
index 0000000..3e7c528
--- /dev/null
+++ b/_pytest/data/websocket/1485976248.65-file_comment_edited.json
@@ -0,0 +1 @@
+{"comment": {"comment": "first comment! now i edited it.", "created": 1485976236, "timestamp": 1485976236, "is_intro": false, "user": "U407ABLLW", "id": "Fc3ZMDRQLV", "channel": ""}, "user_id": "U407ABLLW", "event_ts": "1485976248.893801", "file_id": "F3ZJQTA66", "file": {"id": "F3ZJQTA66"}, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "file_comment_edited"}
diff --git a/_pytest/data/websocket/1485976267.81-reconnect_url.json b/_pytest/data/websocket/1485976267.81-reconnect_url.json
new file mode 100644
index 0000000..55533ab
--- /dev/null
+++ b/_pytest/data/websocket/1485976267.81-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-m00z.slack-msgs.com/websocket/fZI1FV2ZuMYXeQLMKi1SrH2j69xL6m_6hC38CVCr0ugPFpMS1IBxlCvHJYbSrH-fMhSuLmbkEd1te_ND5Q-EyVVX-w06mn5NLZM9GaX_mWb9A3w79sThYzEgnnQ8onoeFM2CWgFNxWM_3XS4HJaWXeee-_sNh_booNbby8jm9mg=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"}
diff --git a/_pytest/data/websocket/1486004888.32-presence_change.json b/_pytest/data/websocket/1486004888.32-presence_change.json
new file mode 100644
index 0000000..c52679d
--- /dev/null
+++ b/_pytest/data/websocket/1486004888.32-presence_change.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "presence_change", "user": "U3ZKBBDL5", "presence": "active"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486004888.41-reconnect_url.json b/_pytest/data/websocket/1486004888.41-reconnect_url.json
new file mode 100644
index 0000000..ae7d1f1
--- /dev/null
+++ b/_pytest/data/websocket/1486004888.41-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-3z94.slack-msgs.com/websocket/v0jzriT0ZxrHn6tVO4Dpi96hr54r8ZOaGklQfQN2G_D1kO6mEMs7KXXfUTax40_5zkAA6XTfZpSsjo3TGVD0hcFrhhSwhTsbFvs6W2m5pHH8hfaLJuKFkfPZySnprXsHCXDNKMWyTKMFTZ_CAUKjyhJWzY9Z708pAGB8oy6YMcE=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486004935.63-presence_change.json b/_pytest/data/websocket/1486004935.63-presence_change.json
new file mode 100644
index 0000000..eca19bc
--- /dev/null
+++ b/_pytest/data/websocket/1486004935.63-presence_change.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "presence_change", "user": "U407ABLLW", "presence": "active"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486004950.43-message.json b/_pytest/data/websocket/1486004950.43-message.json
new file mode 100644
index 0000000..ce13b3f
--- /dev/null
+++ b/_pytest/data/websocket/1486004950.43-message.json
@@ -0,0 +1 @@
+{"text": "is here", "ts": "1486004950.000002", "subtype": "me_message", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486004992.49-user_typing.json b/_pytest/data/websocket/1486004992.49-user_typing.json
new file mode 100644
index 0000000..859d905
--- /dev/null
+++ b/_pytest/data/websocket/1486004992.49-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486004995.69-user_typing.json b/_pytest/data/websocket/1486004995.69-user_typing.json
new file mode 100644
index 0000000..859d905
--- /dev/null
+++ b/_pytest/data/websocket/1486004995.69-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486004999.55-user_typing.json b/_pytest/data/websocket/1486004999.55-user_typing.json
new file mode 100644
index 0000000..859d905
--- /dev/null
+++ b/_pytest/data/websocket/1486004999.55-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486004999.95-message.json b/_pytest/data/websocket/1486004999.95-message.json
new file mode 100644
index 0000000..b906b1b
--- /dev/null
+++ b/_pytest/data/websocket/1486004999.95-message.json
@@ -0,0 +1 @@
+{"text": "this _is_ a *formatted* message", "ts": "1486004999.000003", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005004.03-user_typing.json b/_pytest/data/websocket/1486005004.03-user_typing.json
new file mode 100644
index 0000000..859d905
--- /dev/null
+++ b/_pytest/data/websocket/1486005004.03-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005007.16-user_typing.json b/_pytest/data/websocket/1486005007.16-user_typing.json
new file mode 100644
index 0000000..859d905
--- /dev/null
+++ b/_pytest/data/websocket/1486005007.16-user_typing.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "user_typing", "user": "U407ABLLW", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005008.45-reconnect_url.json b/_pytest/data/websocket/1486005008.45-reconnect_url.json
new file mode 100644
index 0000000..bafddd6
--- /dev/null
+++ b/_pytest/data/websocket/1486005008.45-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-14cn.slack-msgs.com/websocket/28Rgy5cmEP5N50Jq5Jk0YSCKRdC_PTNklbuT07jR1-BP0vpyvFzhUFpTqbl7pxbMkSCE1rv8OMQMKsWyHgDnoJ9KANYeHweBmRAsL41zPn-dJnJmTpnm670fgK1Nr-tVsfXpo7ql0cbstLR_KWDHr8zt1B2TbqIUeoikNN6oBiY=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005009.0-message.json b/_pytest/data/websocket/1486005009.0-message.json
new file mode 100644
index 0000000..10c96e9
--- /dev/null
+++ b/_pytest/data/websocket/1486005009.0-message.json
@@ -0,0 +1 @@
+{"text": "this is ~strikethrough~", "ts": "1486005008.000004", "user": "U407ABLLW", "team": "T3YS5EAL9", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "message", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005096.38-accounts_changed.json b/_pytest/data/websocket/1486005096.38-accounts_changed.json
new file mode 100644
index 0000000..1d0086c
--- /dev/null
+++ b/_pytest/data/websocket/1486005096.38-accounts_changed.json
@@ -0,0 +1 @@
+{"event_ts": "1486005096.312395", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "accounts_changed"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005099.81-presence_change.json b/_pytest/data/websocket/1486005099.81-presence_change.json
new file mode 100644
index 0000000..c52679d
--- /dev/null
+++ b/_pytest/data/websocket/1486005099.81-presence_change.json
@@ -0,0 +1 @@
+{"wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "presence_change", "user": "U3ZKBBDL5", "presence": "active"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005104.63-channel_marked.json b/_pytest/data/websocket/1486005104.63-channel_marked.json
new file mode 100644
index 0000000..956e886
--- /dev/null
+++ b/_pytest/data/websocket/1486005104.63-channel_marked.json
@@ -0,0 +1 @@
+{"mention_count": 0, "event_ts": "1486005104.313131", "ts": "1486005008.000004", "unread_count": 0, "num_mentions": 0, "mention_count_display": 0, "unread_count_display": 0, "num_mentions_display": 0, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "channel_marked", "channel": "C407ABS94"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005109.58-im_marked.json b/_pytest/data/websocket/1486005109.58-im_marked.json
new file mode 100644
index 0000000..b74c742
--- /dev/null
+++ b/_pytest/data/websocket/1486005109.58-im_marked.json
@@ -0,0 +1 @@
+{"event_ts": "1486005109.313169", "ts": "1485975735.000002", "dm_count": 0, "mention_count_display": 0, "unread_count_display": 0, "num_mentions_display": 0, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "im_marked", "channel": "D3ZK1D8JY"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005119.69-im_marked.json b/_pytest/data/websocket/1486005119.69-im_marked.json
new file mode 100644
index 0000000..802f4c9
--- /dev/null
+++ b/_pytest/data/websocket/1486005119.69-im_marked.json
@@ -0,0 +1 @@
+{"event_ts": "1486005119.313254", "ts": "1485975421.000002", "dm_count": 0, "mention_count_display": 0, "unread_count_display": 0, "num_mentions_display": 0, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "im_marked", "channel": "D3ZEQULHZ"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005124.51-mpim_marked.json b/_pytest/data/websocket/1486005124.51-mpim_marked.json
new file mode 100644
index 0000000..3357683
--- /dev/null
+++ b/_pytest/data/websocket/1486005124.51-mpim_marked.json
@@ -0,0 +1 @@
+{"mention_count": 0, "event_ts": "1486005124.313290", "is_mpim": true, "ts": "1485975715.000005", "unread_count": 0, "num_mentions": 0, "mention_count_display": 0, "unread_count_display": 0, "num_mentions_display": 0, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "mpim_marked", "channel": "G3ZGMF4RZ"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005124.59-group_marked.json b/_pytest/data/websocket/1486005124.59-group_marked.json
new file mode 100644
index 0000000..8efe97a
--- /dev/null
+++ b/_pytest/data/websocket/1486005124.59-group_marked.json
@@ -0,0 +1 @@
+{"mention_count": 0, "event_ts": "1486005124.313291", "is_mpim": true, "ts": "1485975715.000005", "unread_count": 0, "num_mentions": 0, "mention_count_display": 0, "unread_count_display": 0, "num_mentions_display": 0, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_marked", "channel": "G3ZGMF4RZ"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005124.67-group_marked.json b/_pytest/data/websocket/1486005124.67-group_marked.json
new file mode 100644
index 0000000..7753500
--- /dev/null
+++ b/_pytest/data/websocket/1486005124.67-group_marked.json
@@ -0,0 +1 @@
+{"mention_count": 0, "event_ts": "1486005124.313292", "is_mpim": false, "ts": "1485975492.000004", "unread_count": 0, "num_mentions": 0, "mention_count_display": 0, "unread_count_display": 0, "num_mentions_display": 0, "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "group_marked", "channel": "G3ZJKP7GA"} \ No newline at end of file
diff --git a/_pytest/data/websocket/1486005188.48-reconnect_url.json b/_pytest/data/websocket/1486005188.48-reconnect_url.json
new file mode 100644
index 0000000..1bdbd43
--- /dev/null
+++ b/_pytest/data/websocket/1486005188.48-reconnect_url.json
@@ -0,0 +1 @@
+{"url": "wss://mpmulti-lz08.slack-msgs.com/websocket/dHqqUxSrrgTCJI7af1mYz7ECm0-rxu4GOIPmnYwK_K9uWOwBXvF54joGrhpZcUjrJ913Vx01Wh6Ta4u5-bC4-Zn9H9wXklCc6mDDf8iJJmXKC2nWZYaP8jOTzPRNM97iISoe5LNSXl_JB-9J5DSSwEdBh7eQ0SEFeko7NxXP6_o=", "wee_slack_metadata": {"team": "d80c2b6c3127dbb1991917394ed219e8212a2606"}, "type": "reconnect_url"} \ No newline at end of file
diff --git a/_pytest/test_eventrouter.py b/_pytest/test_eventrouter.py
new file mode 100644
index 0000000..b235512
--- /dev/null
+++ b/_pytest/test_eventrouter.py
@@ -0,0 +1,86 @@
+import pytest
+from wee_slack import EventRouter, ProcessNotImplemented, SlackRequest
+
+def test_EventRouter(mock_weechat):
+ # Sending valid json adds to the queue.
+ e = EventRouter()
+ e.receive_json('{}')
+ assert len(e.queue) == 1
+
+ # Handling an event removes from the queue.
+ e = EventRouter()
+ # Create a function to test we are called
+ e.proc['testfunc'] = lambda x, y: x
+ e.receive_json('{"type": "testfunc"}')
+ e.handle_next()
+ assert len(e.queue) == 0
+
+ # Handling a local event removes from the queue.
+ e = EventRouter()
+ # Create a function to test we are called
+ e.proc['local_testfunc'] = lambda x, y: x
+ e.receive_json('{"type": "local_testfunc"}')
+ e.handle_next()
+ assert len(e.queue) == 0
+
+ # Handling an event without an associated processor
+ # raises an exception.
+ e = EventRouter()
+ # Create a function to test we are called
+ e.receive_json('{"type": "testfunc"}')
+ with pytest.raises(ProcessNotImplemented):
+ e.handle_next()
+
+def test_EventRouterReceivedata(mock_weechat):
+
+ e = EventRouter()
+ context = e.store_context(SlackRequest('xoxoxoxox', "rtm.startold", {"meh": "blah"}))
+ print context
+ e.receive_httprequest_callback(context, 1, -1, ' {"JSON": "MEH", ', 4)
+ #print len(e.reply_buffer)
+ context = e.store_context(SlackRequest('xoxoxoxox', "rtm.startold", {"meh": "blah"}))
+ print context
+ e.receive_httprequest_callback(context, 1, -1, ' "JSON2": "MEH", ', 4)
+ #print len(e.reply_buffer)
+ context = e.store_context(SlackRequest('xoxoxoxox', "rtm.startold", {"meh": "blah"}))
+ print context
+ e.receive_httprequest_callback(context, 1, 0, ' "JSON3": "MEH"}', 4)
+ #print len(e.reply_buffer)
+ try:
+ e.handle_next()
+ e.handle_next()
+ e.handle_next()
+ e.handle_next()
+ except:
+ pass
+
+ print e.context
+ #assert False
+
+ context = e.store_context(SlackRequest('xoxoxoxox', "rtm.start", {"meh": "blah"}))
+ rtmstartdata = open('_pytest/data/http/rtm.start.json', 'r').read()
+ e.receive_httprequest_callback(context, 1, -1, rtmstartdata[:5000], 4)
+ e.receive_httprequest_callback(context, 1, 0, rtmstartdata[5000:], 4)
+ e.handle_next()
+
+ #print len(e.reply_buffer)
+
+ #print e.teams
+
+ for t in e.teams:
+ #print vars(e.teams[t])
+ for c in e.teams[t].channels:
+ pass
+ #print c
+ for u in e.teams[t].users:
+ pass
+ #print vars(u)
+
+
+# e = EventRouter()
+# # Create a function to test we are called
+# e.receive_json('{"type": "message"}')
+# e.handle_next()
+# assert False
+
+ #assert False
diff --git a/_pytest/test_everything.py b/_pytest/test_everything.py
new file mode 100644
index 0000000..a121541
--- /dev/null
+++ b/_pytest/test_everything.py
@@ -0,0 +1,50 @@
+import glob
+import json
+
+#from wee_slack import render
+from wee_slack import ProcessNotImplemented
+
+def test_process_message(monkeypatch, realish_eventrouter, mock_websocket):
+
+ eventrouter = realish_eventrouter
+
+ t = eventrouter.teams.keys()[0]
+ #u = eventrouter.teams[t].users.keys()[0]
+
+ #user = eventrouter.teams[t].users[u]
+ #print user
+
+ socket = mock_websocket
+ eventrouter.teams[t].ws = socket
+
+ datafiles = glob.glob("_pytest/data/websocket/*.json")
+
+ print datafiles
+ #assert False
+
+ notimplemented = set()
+
+ for fname in datafiles:
+ try:
+ print "####################"
+ data = json.loads(open(fname, 'r').read())
+ socket.add(data)
+ print data
+ eventrouter.receive_ws_callback(t)
+ eventrouter.handle_next()
+ except ProcessNotImplemented as e:
+ notimplemented.add(str(e))
+ #this handles some message data not existing - need to fix
+ except KeyError:
+ pass
+
+ if len(notimplemented) > 0:
+ print "####################"
+ print sorted(notimplemented)
+ print "####################"
+
+ print len(eventrouter.queue)
+ #assert False
+
+
+
diff --git a/_pytest/test_linkifytext.py b/_pytest/test_linkifytext.py
new file mode 100644
index 0000000..f9da3f9
--- /dev/null
+++ b/_pytest/test_linkifytext.py
@@ -0,0 +1,6 @@
+from wee_slack import linkify_text
+
+#def test_linkifytext():
+# linkify_text('@ryan')
+
+# assert False
diff --git a/_pytest/test_presencechange.py b/_pytest/test_presencechange.py
new file mode 100644
index 0000000..b4202fa
--- /dev/null
+++ b/_pytest/test_presencechange.py
@@ -0,0 +1,31 @@
+
+def test_PresenceChange(monkeypatch, realish_eventrouter, mock_websocket):
+
+ e = realish_eventrouter
+
+ t = e.teams.keys()[0]
+ u = e.teams[t].users.keys()[0]
+
+ user = e.teams[t].users[u]
+
+ socket = mock_websocket
+ e.teams[t].ws = socket
+
+ socket.add({
+ "type": "presence_change",
+ "user": user.identifier,
+ "presence": "active",
+ })
+ socket.add({
+ "type": "presence_change",
+ "user": user.identifier,
+ "presence": "away",
+ })
+
+ e.receive_ws_callback(t)
+ e.handle_next()
+ assert e.teams[t].users[u].presence == "active"
+
+ e.receive_ws_callback(t)
+ e.handle_next()
+ assert e.teams[t].users[u].presence == "away"
diff --git a/_pytest/test_process_message.py b/_pytest/test_process_message.py
index 0ca56cd..e2447f7 100644
--- a/_pytest/test_process_message.py
+++ b/_pytest/test_process_message.py
@@ -1,38 +1,48 @@
-
-import wee_slack
-import pytest
import json
-from collections import defaultdict
+from wee_slack import render
+
+def test_process_message(monkeypatch, realish_eventrouter, mock_websocket):
-def test_process_message(slack_debug, monkeypatch, myservers, mychannels, myusers):
- called = defaultdict(int)
- wee_slack.servers = myservers
- wee_slack.channels = mychannels
- wee_slack.users = myusers
- wee_slack.message_cache = {}
- wee_slack.servers[0].users = myusers
- wee_slack.unfurl_ignore_alt_text = False
+ e = realish_eventrouter
- def mock_buffer_prnt(*args):
- called['buffer_prnt'] += 1
- monkeypatch.setattr(wee_slack.Channel, 'buffer_prnt', mock_buffer_prnt)
+ t = e.teams.keys()[0]
+ u = e.teams[t].users.keys()[0]
-# def mock_buffer_prnt_changed(*args):
-# called['buffer_prnt_changed'] += 1
-# print args
-# monkeypatch.setattr(wee_slack.Channel, 'buffer_prnt_changed', mock_buffer_prnt_changed)
+ user = e.teams[t].users[u]
+ #print user
+ socket = mock_websocket
+ e.teams[t].ws = socket
messages = []
- messages.append( json.loads(open('_pytest/data/message-normal.json', 'r').read()) )
- messages.append( json.loads(open('_pytest/data/message-normal2.json', 'r').read()) )
- messages.append( json.loads(open('_pytest/data/message-changed.json', 'r').read()) )
- messages.append( json.loads(open('_pytest/data/message-deleted.json', 'r').read()) )
+ messages.append(json.loads(open('_pytest/data/websocket/1485975421.33-message.json', 'r').read()))
+
+ # test message and then change
+ messages.append(json.loads(open('_pytest/data/websocket/1485976157.18-message.json', 'r').read()))
+ messages.append(json.loads(open('_pytest/data/websocket/1485976151.6-message.json', 'r').read()))
+
+ # test message then deletion
+ messages.append(json.loads(open('_pytest/data/websocket/1485975698.45-message.json', 'r').read()))
+ messages.append(json.loads(open('_pytest/data/websocket/1485975723.85-message.json', 'r').read()))
+
for m in messages:
- wee_slack.process_message(m)
- print "---"
- print called
- print "---"
-# assert called['buffer_prnt'] == 2
-# assert called['buffer_prnt_changed'] == 1
+ m["user"] = user.id
+ socket.add(m)
+
+ e.receive_ws_callback(t)
+ e.handle_next()
+
+ e.receive_ws_callback(t)
+ e.handle_next()
+
+ e.receive_ws_callback(t)
+ e.handle_next()
+
+ e.receive_ws_callback(t)
+ e.handle_next()
+
+
+ #assert e.teams[t].channels['C407ABS94'].messages.keys()[0] == '1485976151.00016'
+ #assert False
+
diff --git a/_pytest/test_processreply.py b/_pytest/test_processreply.py
new file mode 100644
index 0000000..a725f23
--- /dev/null
+++ b/_pytest/test_processreply.py
@@ -0,0 +1,33 @@
+#from wee_slack import process_reply
+
+def test_process_reply(monkeypatch, realish_eventrouter, mock_websocket):
+
+ e = realish_eventrouter
+
+ t = e.teams.keys()[0]
+ #u = e.teams[t].users.keys()[0]
+
+ #user = e.teams[t].users[u]
+ #print user
+
+ socket = mock_websocket
+ e.teams[t].ws = socket
+
+ c = e.teams[t].channels.keys()[0]
+ channel = e.teams[t].channels[c]
+ channel.send_message('asdf')
+
+ socket = mock_websocket
+ socket.add({"reply_to": 1, "_team": t, "ts": "12341234.111"})
+
+ print e.teams[t].ws_replies
+
+ e.receive_ws_callback(t)
+ e.handle_next()
+
+ #reply = {"reply_to": 1, "_team": t, "ts": "12341234.111"}
+ #print reply
+ #process_reply(reply, e)
+ #print e.teams[t].ws_replies
+ #assert False
+ pass
diff --git a/_pytest/test_processteamjoin.py b/_pytest/test_processteamjoin.py
new file mode 100644
index 0000000..00a8b4c
--- /dev/null
+++ b/_pytest/test_processteamjoin.py
@@ -0,0 +1,54 @@
+import glob
+import json
+
+from wee_slack import ProcessNotImplemented
+
+def test_process_reply(monkeypatch, mock_websocket, realish_eventrouter):
+
+ eventrouter = realish_eventrouter
+
+ t = eventrouter.teams.keys()[0]
+ #u = eventrouter.teams[t].users.keys()[0]
+
+ #user = eventrouter.teams[t].users[u]
+ #print user
+
+ #delete charles so we can add him
+ del eventrouter.teams[t].users['U4096CBHC']
+
+ assert len(eventrouter.teams[t].users) == 3
+
+ socket = mock_websocket
+ eventrouter.teams[t].ws = socket
+
+ datafiles = glob.glob("_pytest/data/websocket/1485975606.59-team_join.json")
+
+ print datafiles
+ #assert False
+
+ notimplemented = set()
+
+ for fname in datafiles:
+ try:
+ print "####################"
+ data = json.loads(open(fname, 'r').read())
+ socket.add(data)
+ print data
+ eventrouter.receive_ws_callback(t)
+ eventrouter.handle_next()
+ except ProcessNotImplemented as e:
+ notimplemented.add(str(e))
+ #this handles some message data not existing - need to fix
+ except KeyError:
+ pass
+
+ if len(notimplemented) > 0:
+ print "####################"
+ print sorted(notimplemented)
+ print "####################"
+
+ #print len(eventrouter.queue)
+ assert len(eventrouter.teams[t].users) == 4
+
+
+
diff --git a/_pytest/test_sendmessage.py b/_pytest/test_sendmessage.py
new file mode 100644
index 0000000..a87942d
--- /dev/null
+++ b/_pytest/test_sendmessage.py
@@ -0,0 +1,21 @@
+
+def test_send_message(monkeypatch, realish_eventrouter, mock_websocket):
+ e = realish_eventrouter
+
+ t = e.teams.keys()[0]
+ #u = e.teams[t].users.keys()[0]
+
+ #user = e.teams[t].users[u]
+ #print user
+
+ socket = mock_websocket
+ e.teams[t].ws = socket
+
+ c = e.teams[t].channels.keys()[0]
+
+ channel = e.teams[t].channels[c]
+ channel.send_message('asdf')
+
+ print c
+
+ #assert False
diff --git a/_pytest/test_slackchannel.py b/_pytest/test_slackchannel.py
new file mode 100644
index 0000000..7d93afc
--- /dev/null
+++ b/_pytest/test_slackchannel.py
@@ -0,0 +1,33 @@
+from mock import Mock
+#from wee_slack import SlackChannel
+
+def test_SlackChannel(realish_eventrouter):
+ e = realish_eventrouter
+
+ print e.sc["team"].channels
+ #c = SlackChannel(e, **json.loads(chan))
+ c = e.sc["team"].channels['C3ZEQAYN7']
+
+ print c.formatted_name()
+ c.is_someone_typing = Mock(return_value=True)
+ c.channel_buffer = Mock(return_value=True)
+ print c.create_buffer()
+ print c.rename()
+ print c.current_short_name
+ print c.formatted_name()
+ print c.rename()
+ print c.formatted_name()
+
+ print "-------"
+ print c == "random"
+ print "-------"
+ print c == "#random"
+ print "-------"
+ print c == "weeslacktest.slack.com.#random"
+ print "-------"
+ print c == "weeslacktest.slack.com.random"
+ print "-------"
+ print c == "dandom"
+
+ print e.weechat_controller.buffers
+ #assert False
diff --git a/_pytest/test_slackdmchannel.py b/_pytest/test_slackdmchannel.py
new file mode 100644
index 0000000..203c4ae
--- /dev/null
+++ b/_pytest/test_slackdmchannel.py
@@ -0,0 +1,20 @@
+from mock import Mock
+#from wee_slack import SlackChannel
+
+def test_SlackDMChannel(realish_eventrouter):
+ e = realish_eventrouter
+
+ print e.sc["team"].channels
+ #c = SlackChannel(e, **json.loads(chan))
+ c = e.sc["team"].channels['D3ZEQULHZ']
+
+ print c.formatted_name()
+ c.is_someone_typing = Mock(return_value=True)
+ c.channel_buffer = Mock(return_value=True)
+ print c.create_buffer()
+ print c.rename()
+ print c.current_short_name
+ print c.formatted_name()
+ print c.rename()
+ print c.formatted_name()
+# assert False
diff --git a/_pytest/test_slackgroupchannel.py b/_pytest/test_slackgroupchannel.py
new file mode 100644
index 0000000..59793f2
--- /dev/null
+++ b/_pytest/test_slackgroupchannel.py
@@ -0,0 +1,20 @@
+from mock import Mock
+#from wee_slack import SlackChannel
+
+def test_SlackGroupChannel(realish_eventrouter):
+ e = realish_eventrouter
+
+ print e.sc["team"].channels
+ #c = SlackChannel(e, **json.loads(chan))
+ c = e.sc["team"].channels['G3ZJKP7GA']
+
+ print c.formatted_name()
+ c.is_someone_typing = Mock(return_value=True)
+ c.channel_buffer = Mock(return_value=True)
+ print c.create_buffer()
+ print c.rename()
+ print c.current_short_name
+ print c.formatted_name()
+ print c.rename()
+ print c.formatted_name()
+# assert False
diff --git a/_pytest/test_slackmpdmchannel.py b/_pytest/test_slackmpdmchannel.py
new file mode 100644
index 0000000..a2c6c51
--- /dev/null
+++ b/_pytest/test_slackmpdmchannel.py
@@ -0,0 +1,20 @@
+from mock import Mock
+#from wee_slack import SlackChannel
+
+def test_SlackMPDMChannel(realish_eventrouter):
+ e = realish_eventrouter
+
+ print e.sc["team"].channels
+ #c = SlackChannel(e, **json.loads(chan))
+ c = e.sc["team"].channels['G3ZGMF4RZ']
+
+ print c.formatted_name()
+ c.is_someone_typing = Mock(return_value=True)
+ c.channel_buffer = Mock(return_value=True)
+ print c.create_buffer()
+ print c.rename()
+ print c.current_short_name
+ print c.formatted_name()
+ print c.rename()
+ print c.formatted_name()
+# assert False
diff --git a/_pytest/test_slackrequest.py b/_pytest/test_slackrequest.py
new file mode 100644
index 0000000..081330e
--- /dev/null
+++ b/_pytest/test_slackrequest.py
@@ -0,0 +1,11 @@
+from wee_slack import SlackRequest, EventRouter
+
+def test_SlackRequest():
+ s = SlackRequest('xoxoxoxox', "blah.get", {"meh": "blah"})
+ print s
+
+ e = EventRouter()
+ e.receive(s)
+ e.handle_next()
+ #assert False
+
diff --git a/_pytest/test_slackteam.py b/_pytest/test_slackteam.py
new file mode 100644
index 0000000..fa6ac6a
--- /dev/null
+++ b/_pytest/test_slackteam.py
@@ -0,0 +1,10 @@
+from wee_slack import SlackTeam, EventRouter
+
+def test_SlackTeam():
+ e = EventRouter()
+ #s = SlackTeam('xoxo')
+ #e.register_team(s)
+ #print e.queue
+ #print e.handle_next()
+ #assert False
+
diff --git a/_pytest/test_slackts.py b/_pytest/test_slackts.py
new file mode 100644
index 0000000..87f43a7
--- /dev/null
+++ b/_pytest/test_slackts.py
@@ -0,0 +1,24 @@
+from wee_slack import SlackTS
+
+
+def test_slackts():
+ base = SlackTS("1485976156.000017")
+
+ b = SlackTS("1485976156.000016")
+ c = SlackTS("1485976156.000018")
+
+ d = SlackTS("1485976155.000017")
+ e = SlackTS("1485976157.000017")
+
+ assert base > b
+ assert base < c
+
+ assert base > d
+ assert base < e
+
+ c = SlackTS()
+ assert c > base
+
+ assert base == "1485976156.000017"
+ assert base > "1485976156.000016"
+ assert base < "1485976156.000018"
diff --git a/_pytest/test_unfurl.py b/_pytest/test_unfurl.py
index 2168aed..b631888 100644
--- a/_pytest/test_unfurl.py
+++ b/_pytest/test_unfurl.py
@@ -20,7 +20,7 @@ slack = wee_slack
},
{
'input': "foo <#C2147483705> foo",
- 'output': "foo #testchan foo",
+ 'output': "foo #test-chan foo",
},
{
'input': "url: <https://example.com|example> suffix",
@@ -34,13 +34,20 @@ slack = wee_slack
'input': "<@U2147483697|@othernick> multiple unfurl <https://example.com|example with spaces>",
'output': "@othernick multiple unfurl https://example.com (example with spaces)",
},
+ {
+ 'input': "try the #test-chan channel",
+ 'output': "try the #test-chan channel",
+ },
))
-def test_unfurl_refs(myservers, mychannels, myusers, case):
- slack.servers = myservers
- slack.channels = mychannels
- slack.users = myusers
- slack.message_cache = {}
- slack.servers[0].users = myusers
- print mychannels[0].identifier
+def test_unfurl_refs(case):
+ pass
+ #print myslack
+ #slack.servers = myslack.server
+ #slack.channels = myslack.channel
+ #slack.users = myslack.user
+ #slack.message_cache = {}
+ #slack.servers[0].users = myslack.user
+ #print myslack.channel[0].identifier
+
+ #assert slack.unfurl_refs(case['input'], ignore_alt_text=case.get('ignore_alt_text', False)) == case['output']
- assert slack.unfurl_refs(case['input'], ignore_alt_text=case.get('ignore_alt_text', False)) == case['output']