Skip to content

Commit

Permalink
Add the default
Browse files Browse the repository at this point in the history
  • Loading branch information
WilliamBergamin committed Jul 12, 2024
1 parent 632655c commit 70e4726
Show file tree
Hide file tree
Showing 19 changed files with 96 additions and 32 deletions.
5 changes: 1 addition & 4 deletions slack_cli_hooks/hooks/doctor.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@
import json
import platform

from slack_cli_hooks.protocol import (
Protocol,
build_protocol,
)
from slack_cli_hooks.protocol import Protocol, build_protocol

PROTOCOL: Protocol

Expand Down
9 changes: 3 additions & 6 deletions slack_cli_hooks/hooks/get_hooks.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
#!/usr/bin/env python
import json
import sys
from slack_cli_hooks.protocol import (
Protocol,
MessageBoundaryProtocol,
build_protocol,
)

from slack_cli_hooks.protocol import DefaultProtocol, MessageBoundaryProtocol, Protocol, build_protocol

PROTOCOL: Protocol

Expand All @@ -22,7 +19,7 @@
},
"config": {
"watch": {"filter-regex": "(^manifest\\.json$)", "paths": ["."]},
"protocol-version": [MessageBoundaryProtocol.name],
"protocol-version": [MessageBoundaryProtocol.name, DefaultProtocol.name],
"sdk-managed-connection-enabled": True,
},
"runtime": "python",
Expand Down
9 changes: 4 additions & 5 deletions slack_cli_hooks/protocol/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import argparse
import sys
from typing import List

from .default_protocol import DefaultProtocol
from .message_boundary_protocol import MessageBoundaryProtocol
from .protocol import Protocol

__all__ = [
"MessageBoundaryProtocol",
"Protocol",
]
__all__ = ["DefaultProtocol" "MessageBoundaryProtocol", "Protocol"]


def build_protocol(argv: List[str] = sys.argv[1:]) -> Protocol:
Expand All @@ -19,4 +18,4 @@ def build_protocol(argv: List[str] = sys.argv[1:]) -> Protocol:

if args.protocol == MessageBoundaryProtocol.name:
return MessageBoundaryProtocol(boundary=args.boundary)
raise NotImplementedError
return DefaultProtocol()
24 changes: 24 additions & 0 deletions slack_cli_hooks/protocol/default_protocol.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from .protocol import Protocol


class DefaultProtocol(Protocol):
name: str = "default"

def debug(self, msg: str, *args, **kwargs):
"""Nothing will be logged here"""
pass

def info(self, msg: str, *args, **kwargs):
"""Nothing will be logged here"""
pass

def warning(self, msg: str, *args, **kwargs):
"""Nothing will be logged here"""
pass

def error(self, msg: str, *args, **kwargs):
"""Nothing will be logged here"""
pass

def respond(self, data: str):
print(data)
1 change: 1 addition & 0 deletions slack_cli_hooks/protocol/message_boundary_protocol.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging

from .protocol import Protocol


Expand Down
1 change: 1 addition & 0 deletions tests/mock_protocol.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from unittest.mock import Mock

from slack_cli_hooks.protocol.protocol import Protocol


Expand Down
5 changes: 3 additions & 2 deletions tests/mock_socket_mode_server.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import json
import threading
import time
from urllib.request import urlopen
from urllib.error import URLError
from unittest import TestCase
from urllib.error import URLError
from urllib.request import urlopen

from flask import Flask
from gevent import pywsgi
from geventwebsocket.handler import WebSocketHandler
Expand Down
2 changes: 1 addition & 1 deletion tests/mock_web_api_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from http.server import HTTPServer, SimpleHTTPRequestHandler
from typing import Type
from unittest import TestCase
from urllib.parse import urlparse, ParseResult
from urllib.parse import ParseResult, urlparse


class MockHandler(SimpleHTTPRequestHandler):
Expand Down
2 changes: 1 addition & 1 deletion tests/scenario_test/test_app/app.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import os

from slack_sdk import WebClient
from slack_bolt.app import App
from slack_sdk import WebClient
from utils import get_test_socket_mode_handler, wait_for_test_socket_connection

web_client = WebClient(base_url="http://localhost:8888", token=os.environ.get("SLACK_BOT_TOKEN"))
Expand Down
2 changes: 1 addition & 1 deletion tests/scenario_test/test_app/my_app.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import os

from slack_sdk import WebClient
from slack_bolt.app import App
from slack_sdk import WebClient
from utils import get_test_socket_mode_handler, wait_for_test_socket_connection

web_client = WebClient(base_url="http://localhost:8888", token=os.environ.get("SLACK_BOT_TOKEN"))
Expand Down
2 changes: 1 addition & 1 deletion tests/scenario_test/test_app/utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import time

from typing import Optional

from slack_bolt.adapter.socket_mode.builtin import SocketModeHandler
from slack_bolt.app.app import App

Expand Down
1 change: 0 additions & 1 deletion tests/scenario_test/test_get_hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ def test_get_manifest(self, capsys):
runpy.run_module(get_hooks.__name__, run_name="__main__", alter_sys=False)

out, err = capsys.readouterr()

json_response = json.loads(out)
assert err == ""
assert "hooks" in json_response
Expand Down
2 changes: 2 additions & 0 deletions tests/scenario_test/test_get_manifest.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import runpy
import sys
from unittest.mock import patch

import pytest

from slack_cli_hooks.error import CliError
from slack_cli_hooks.hooks import get_manifest

Expand Down
5 changes: 3 additions & 2 deletions tests/scenario_test/test_start.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import os
import runpy
import sys
from unittest.mock import patch

import pytest
import os
from slack_cli_hooks.error import CliError

from slack_cli_hooks.error import CliError
from slack_cli_hooks.hooks import start
from tests.mock_socket_mode_server import start_socket_mode_server, stop_socket_mode_server
from tests.mock_web_api_server import cleanup_mock_web_api_server, setup_mock_web_api_server
Expand Down
2 changes: 1 addition & 1 deletion tests/slack_cli_hooks/hooks/test_check_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
from urllib import request

import pytest

from packaging.version import Version

from slack_cli_hooks.error import PypiError
from slack_cli_hooks.hooks import check_update
from slack_cli_hooks.hooks.check_update import (
Expand Down
3 changes: 2 additions & 1 deletion tests/slack_cli_hooks/hooks/test_get_hooks.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import re

from slack_cli_hooks.hooks.get_hooks import hooks_payload


Expand All @@ -15,7 +16,7 @@ def test_hooks_payload_config(self):
config = hooks_payload["config"]

assert config["sdk-managed-connection-enabled"] is True
assert config["protocol-version"] == ["message-boundaries"]
assert config["protocol-version"] == ["message-boundaries", "default"]

def test_hooks_watch_regex(self):
config = hooks_payload["config"]
Expand Down
1 change: 1 addition & 0 deletions tests/slack_cli_hooks/hooks/test_get_manifest.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from unittest import mock

import pytest

from slack_cli_hooks.error import CliError
from slack_cli_hooks.hooks.get_manifest import filter_directories, find_file_path

Expand Down
41 changes: 41 additions & 0 deletions tests/slack_cli_hooks/protocol/test_default_protocol.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from slack_cli_hooks.protocol import DefaultProtocol


class TestDefaultProtocol:
def test_name(self):
assert DefaultProtocol.name == "default"

def test_debug(self, capsys):
DefaultProtocol().debug("test")

out, err = capsys.readouterr()
assert out == ""
assert err == ""

def test_info(self, capsys):
DefaultProtocol().info("test")

out, err = capsys.readouterr()
assert out == ""
assert err == ""

def test_warning(self, capsys):
DefaultProtocol().warning("test")

out, err = capsys.readouterr()
assert out == ""
assert err == ""

def test_error(self, capsys):
DefaultProtocol().error("test")

out, err = capsys.readouterr()
assert out == ""
assert err == ""

def test_respond(self, capsys):
DefaultProtocol().respond("test")

out, err = capsys.readouterr()
assert out == "test\n"
assert err == ""
11 changes: 5 additions & 6 deletions tests/slack_cli_hooks/protocol/test_protocol_factory.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
from slack_cli_hooks.protocol import build_protocol, MessageBoundaryProtocol, Protocol
from slack_cli_hooks.protocol import MessageBoundaryProtocol, Protocol, build_protocol
from slack_cli_hooks.protocol.default_protocol import DefaultProtocol


class TestProtocolFactory:
def test_default(self):
args = []
try:
build_protocol(args)
assert False, "Expected an exception to be thrown"
except Exception as e:
assert isinstance(e, NotImplementedError)
protocol = build_protocol(args)
assert isinstance(protocol, Protocol)
assert isinstance(protocol, DefaultProtocol)

def test_message_boundaries(self):
args = [f"--protocol={MessageBoundaryProtocol.name}", "--bound=boundary"]
Expand Down

0 comments on commit 70e4726

Please sign in to comment.