Skip to content

Commit

Permalink
test: add test for socket server returning 409
Browse files Browse the repository at this point in the history
  • Loading branch information
Filip Maj committed Nov 22, 2024
1 parent a5b9db6 commit f40bbfa
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
34 changes: 34 additions & 0 deletions tests/slack_sdk/socket_mode/mock_socket_mode_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,3 +159,37 @@ def run_server():
loop.close()

return run_server

def start_bad_socket_mode_server(self, port: int):
logger = logging.getLogger(__name__)
state = {}

def reset_server_state():
self.state = {}

self.reset_server_state = reset_server_state

async def link(request):
return web.Response(status=409)

app = web.Application()
app.add_routes([web.get("/link", link)])
runner = web.AppRunner(app)

def run_server():
reset_server_state()

self.loop = loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(runner.setup())
site = web.TCPSite(runner, "127.0.0.1", port, reuse_port=True)
loop.run_until_complete(site.start())

# run until it's stopped from the main thread
loop.run_forever()

loop.run_until_complete(runner.cleanup())
loop.run_until_complete(asyncio.sleep(1))
loop.close()

return run_server
26 changes: 26 additions & 0 deletions tests/slack_sdk/socket_mode/test_interactions_websocket_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
from slack_sdk.socket_mode.websocket_client import SocketModeClient
from tests.helpers import is_ci_unstable_test_skip_enabled
from tests.slack_sdk.socket_mode.mock_socket_mode_server import (
start_bad_socket_mode_server,
start_socket_mode_server,
socket_mode_envelopes,
socket_mode_hello_message,
Expand Down Expand Up @@ -133,3 +134,28 @@ def test_send_message_while_disconnection(self):
client.close()
self.loop.stop()
t.join(timeout=5)

def test_wss_craps_itself(self):
if is_ci_unstable_test_skip_enabled():
# this test tends to fail on the GitHub Actions platform
return
t = Thread(target=start_bad_socket_mode_server(self, 3012))
t.daemon = True
t.start()
time.sleep(2) # wait for the server

try:
client = SocketModeClient(
app_token="xapp-A111-222-xyz",
web_client=self.web_client,
auto_reconnect_enabled=False,
trace_enabled=True,
)
client.wss_uri = "ws://0.0.0.0:3012/link"
client.connect()
time.sleep(1) # wait for the connection
assert client.is_connected() is True
finally:
client.close()
self.loop.stop()
t.join(timeout=5)

0 comments on commit f40bbfa

Please sign in to comment.