Skip to content

Commit 27ced77

Browse files
feat: WebClient/AsyncWebClient expose logger property (#1671)
* feat: WebClient expose logger property * Add tests and move them to new files
1 parent 70685d3 commit 27ced77

File tree

4 files changed

+98
-0
lines changed

4 files changed

+98
-0
lines changed

slack_sdk/web/async_base_client.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,17 @@ def __init__(
8888
if env_variable is not None:
8989
self.proxy = env_variable
9090

91+
# -------------------------
92+
# accessors
93+
94+
@property
95+
def logger(self) -> logging.Logger:
96+
"""The logger this client uses."""
97+
return self._logger
98+
99+
# -------------------------
100+
# api call
101+
91102
async def api_call(
92103
self,
93104
api_method: str,

slack_sdk/web/base_client.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,17 @@ def __init__(
9292
if env_variable is not None:
9393
self.proxy = env_variable
9494

95+
# -------------------------
96+
# accessors
97+
98+
@property
99+
def logger(self) -> logging.Logger:
100+
"""The logger this client uses."""
101+
return self._logger
102+
103+
# -------------------------
104+
# api call
105+
95106
def api_call(
96107
self,
97108
api_method: str,
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import logging
2+
import unittest
3+
4+
from slack_sdk import WebClient
5+
from slack_sdk.web import base_client
6+
from tests.slack_sdk.web.mock_web_api_handler import MockHandler
7+
from tests.mock_web_api_server import setup_mock_web_api_server, cleanup_mock_web_api_server
8+
9+
10+
class TestWebClientLogger(unittest.TestCase):
11+
test_logger: logging.Logger
12+
13+
def setUp(self):
14+
self.test_logger = logging.Logger("test-logger")
15+
setup_mock_web_api_server(self, MockHandler)
16+
17+
def tearDown(self):
18+
cleanup_mock_web_api_server(self)
19+
20+
def test_logger_property_returns_default_logger(self):
21+
client = WebClient(base_url="http://localhost:8888", token="xoxb-api_test")
22+
self.assertEqual(client.logger.name, base_client.__name__)
23+
24+
def test_logger_property_returns_custom_logger(self):
25+
client = WebClient(
26+
base_url="http://localhost:8888",
27+
token="xoxb-api_test",
28+
logger=self.test_logger,
29+
)
30+
self.assertEqual(client.logger, self.test_logger)
31+
32+
def test_logger_property_has_no_setter(self):
33+
client = WebClient(
34+
base_url="http://localhost:8888",
35+
token="xoxb-api_test",
36+
)
37+
with self.assertRaises(AttributeError):
38+
client.logger = self.test_logger
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import logging
2+
import unittest
3+
4+
from slack_sdk.web.async_client import AsyncWebClient
5+
from slack_sdk.web import async_base_client
6+
from tests.slack_sdk.web.mock_web_api_handler import MockHandler
7+
from tests.mock_web_api_server import setup_mock_web_api_server_async, cleanup_mock_web_api_server_async
8+
9+
10+
class TestAsyncWebClientLogger(unittest.TestCase):
11+
test_logger: logging.Logger
12+
13+
def setUp(self):
14+
self.test_logger = logging.Logger("test-logger")
15+
setup_mock_web_api_server_async(self, MockHandler)
16+
17+
def tearDown(self):
18+
cleanup_mock_web_api_server_async(self)
19+
20+
def test_logger_property_returns_default_logger(self):
21+
client = AsyncWebClient(base_url="http://localhost:8888", token="xoxb-api_test")
22+
self.assertEqual(client.logger.name, async_base_client.__name__)
23+
24+
def test_logger_property_returns_custom_logger(self):
25+
client = AsyncWebClient(
26+
base_url="http://localhost:8888",
27+
token="xoxb-api_test",
28+
logger=self.test_logger,
29+
)
30+
self.assertEqual(client.logger, self.test_logger)
31+
32+
def test_logger_property_has_no_setter(self):
33+
client = AsyncWebClient(
34+
base_url="http://localhost:8888",
35+
token="xoxb-api_test",
36+
)
37+
with self.assertRaises(AttributeError):
38+
client.logger = self.test_logger

0 commit comments

Comments
 (0)