Skip to content

Commit a06fcb5

Browse files
committed
Add url, team, user to AuthorizeResult properties
1 parent fea0c99 commit a06fcb5

File tree

7 files changed

+190
-2
lines changed

7 files changed

+190
-2
lines changed

slack_bolt/authorization/authorize_result.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@ class AuthorizeResult(dict):
88

99
enterprise_id: Optional[str]
1010
team_id: Optional[str]
11+
team: Optional[str] # since v1.18
12+
url: Optional[str] # since v1.18
13+
1114
bot_id: Optional[str]
1215
bot_user_id: Optional[str]
1316
bot_token: Optional[str]
1417
bot_scopes: Optional[List[str]] # since v1.17
18+
1519
user_id: Optional[str]
20+
user: Optional[str] # since v1.18
1621
user_token: Optional[str]
1722
user_scopes: Optional[List[str]] # since v1.17
1823

@@ -21,30 +26,38 @@ def __init__(
2126
*,
2227
enterprise_id: Optional[str],
2328
team_id: Optional[str],
29+
team: Optional[str] = None,
30+
url: Optional[str] = None,
2431
# bot
2532
bot_user_id: Optional[str] = None,
2633
bot_id: Optional[str] = None,
2734
bot_token: Optional[str] = None,
2835
bot_scopes: Optional[Union[List[str], str]] = None,
2936
# user
3037
user_id: Optional[str] = None,
38+
user: Optional[str] = None,
3139
user_token: Optional[str] = None,
3240
user_scopes: Optional[Union[List[str], str]] = None,
3341
):
3442
"""
3543
Args:
3644
enterprise_id: Organization ID (Enterprise Grid) starting with `E`
3745
team_id: Workspace ID starting with `T`
46+
team: Workspace name
47+
url: Workspace slack.com URL
3848
bot_user_id: Bot user's User ID starting with either `U` or `W`
3949
bot_id: Bot ID starting with `B`
4050
bot_token: Bot user access token starting with `xoxb-`
4151
bot_scopes: The scopes associated with the bot token
4252
user_id: The request user ID
53+
user: The request user's name
4354
user_token: User access token starting with `xoxp-`
4455
user_scopes: The scopes associated wth the user token
4556
"""
4657
self["enterprise_id"] = self.enterprise_id = enterprise_id
4758
self["team_id"] = self.team_id = team_id
59+
self["team"] = self.team = team
60+
self["url"] = self.url = url
4861
# bot
4962
self["bot_user_id"] = self.bot_user_id = bot_user_id
5063
self["bot_id"] = self.bot_id = bot_id
@@ -54,6 +67,7 @@ def __init__(
5467
self["bot_scopes"] = self.bot_scopes = bot_scopes # type: ignore
5568
# user
5669
self["user_id"] = self.user_id = user_id
70+
self["user"] = self.user = user
5771
self["user_token"] = self.user_token = user_token
5872
if user_scopes is not None and isinstance(user_scopes, str):
5973
user_scopes = [scope.strip() for scope in user_scopes.split(",")]
@@ -76,17 +90,21 @@ def from_auth_test_response(
7690
user_id: Optional[str] = ( # type:ignore
7791
auth_test_response.get("user_id") if auth_test_response.get("bot_id") is None else None
7892
)
79-
# Since v1.28, user_id can be set when user_token w/ its auth.test response exists
93+
user_name = auth_test_response.get("user")
8094
if user_id is None and user_auth_test_response is not None:
8195
user_id: Optional[str] = user_auth_test_response.get("user_id") # type:ignore
96+
user_name: Optional[str] = user_auth_test_response.get("user") # type:ignore
8297

8398
return AuthorizeResult(
8499
enterprise_id=auth_test_response.get("enterprise_id"),
85100
team_id=auth_test_response.get("team_id"),
101+
team=auth_test_response.get("team"),
102+
url=auth_test_response.get("url"),
86103
bot_id=auth_test_response.get("bot_id"),
87104
bot_user_id=bot_user_id,
88105
bot_scopes=bot_scopes,
89106
user_id=user_id,
107+
user=user_name,
90108
bot_token=bot_token,
91109
user_token=user_token,
92110
user_scopes=user_scopes,

tests/scenario_tests/test_app_actor_user_token.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,9 @@ def handle_events(context: BoltContext, say: Say):
169169
assert context.authorize_result.user_id == "W99999"
170170
assert context.authorize_result.user_token == "xoxp-valid-actor-based"
171171
assert context.authorize_result.user_scopes == ["search:read", "chat:write"]
172+
assert context.authorize_result.team_id == "T0G9PQBBK"
173+
assert context.authorize_result.team == "Subarachnoid Workspace"
174+
assert context.authorize_result.url == "https://subarachnoid.slack.com/"
172175
say("What's up?")
173176

174177
response = app.dispatch(self.build_request())
@@ -196,14 +199,17 @@ def handle_events(context: BoltContext, say: Say):
196199
assert context.actor_enterprise_id == "E013Y3SHLAY"
197200
assert context.actor_team_id == "T111111"
198201
assert context.actor_user_id == "W013QGS7BPF"
199-
200202
assert context.authorize_result.bot_id == "BZYBOTHED"
201203
assert context.authorize_result.bot_user_id == "W23456789"
202204
assert context.authorize_result.bot_token == "xoxb-valid-2"
203205
assert context.authorize_result.bot_scopes == ["commands", "chat:write"]
206+
assert context.authorize_result.user == "bot"
204207
assert context.authorize_result.user_id is None
205208
assert context.authorize_result.user_token is None
206209
assert context.authorize_result.user_scopes is None
210+
assert context.authorize_result.team_id == "T0G9PQBBK"
211+
assert context.authorize_result.team == "Subarachnoid Workspace"
212+
assert context.authorize_result.url == "https://subarachnoid.slack.com/"
207213
say("What's up?")
208214

209215
response = app.dispatch(self.build_request(team_id="T111111"))

tests/scenario_tests/test_app_installation_store.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@ def handle_app_mention(context: BoltContext, say: Say):
146146
assert context.authorize_result.user_id == "W99999"
147147
assert context.authorize_result.user_token == "xoxp-valid"
148148
assert context.authorize_result.user_scopes == ["search:read"]
149+
assert context.authorize_result.team_id == "T0G9PQBBK"
150+
assert context.authorize_result.team == "Subarachnoid Workspace"
151+
assert context.authorize_result.url == "https://subarachnoid.slack.com/"
149152
say("What's up?")
150153

151154
response = app.dispatch(self.build_app_mention_request())

tests/scenario_tests_async/test_app_actor_user_token.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@ async def handle_events(context: AsyncBoltContext, say: AsyncSay):
120120
assert context.authorize_result.user_id == "W99999"
121121
assert context.authorize_result.user_token == "xoxp-valid-actor-based"
122122
assert context.authorize_result.user_scopes == ["search:read", "chat:write"]
123+
assert context.authorize_result.team_id == "T0G9PQBBK"
124+
assert context.authorize_result.team == "Subarachnoid Workspace"
125+
assert context.authorize_result.url == "https://subarachnoid.slack.com/"
123126
await say("What's up?")
124127

125128
request = self.build_request()

tests/scenario_tests_async/test_app_installation_store.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ async def handle_app_mention(context: AsyncBoltContext, say: AsyncSay):
8686
assert context.authorize_result.user_id == "W99999"
8787
assert context.authorize_result.user_token == "xoxp-valid"
8888
assert context.authorize_result.user_scopes == ["search:read"]
89+
assert context.authorize_result.team_id == "T0G9PQBBK"
90+
assert context.authorize_result.team == "Subarachnoid Workspace"
91+
assert context.authorize_result.url == "https://subarachnoid.slack.com/"
8992
await say("What's up?")
9093

9194
request = self.build_valid_app_mention_request()

tests/slack_bolt/authorization/test_authorize.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,22 @@ def test_installation_store_legacy(self):
4848
assert result.bot_id == "BZYBOTHED"
4949
assert result.bot_user_id == "W23456789"
5050
assert result.user_token is None
51+
assert result.user_id is None
52+
assert result.user == "bot"
53+
assert result.team_id == "T0G9PQBBK"
54+
assert result.team == "Subarachnoid Workspace"
55+
assert result.url == "https://subarachnoid.slack.com/"
5156
assert_auth_test_count(self, 1)
5257

5358
result = authorize(context=context, enterprise_id="E111", team_id="T0G9PQBBK", user_id="W11111")
5459
assert result.bot_id == "BZYBOTHED"
5560
assert result.bot_user_id == "W23456789"
5661
assert result.user_token is None
62+
assert result.user_id is None
63+
assert result.user == "bot"
64+
assert result.team_id == "T0G9PQBBK"
65+
assert result.team == "Subarachnoid Workspace"
66+
assert result.url == "https://subarachnoid.slack.com/"
5767
assert_auth_test_count(self, 2)
5868

5969
def test_installation_store_cached_legacy(self):
@@ -71,12 +81,22 @@ def test_installation_store_cached_legacy(self):
7181
assert result.bot_id == "BZYBOTHED"
7282
assert result.bot_user_id == "W23456789"
7383
assert result.user_token is None
84+
assert result.user_id is None
85+
assert result.user == "bot"
86+
assert result.team_id == "T0G9PQBBK"
87+
assert result.team == "Subarachnoid Workspace"
88+
assert result.url == "https://subarachnoid.slack.com/"
7489
assert_auth_test_count(self, 1)
7590

7691
result = authorize(context=context, enterprise_id="E111", team_id="T0G9PQBBK", user_id="W11111")
7792
assert result.bot_id == "BZYBOTHED"
7893
assert result.bot_user_id == "W23456789"
7994
assert result.user_token is None
95+
assert result.user_id is None
96+
assert result.user == "bot"
97+
assert result.team_id == "T0G9PQBBK"
98+
assert result.team == "Subarachnoid Workspace"
99+
assert result.url == "https://subarachnoid.slack.com/"
80100
assert_auth_test_count(self, 1) # cached
81101

82102
def test_installation_store_bot_only(self):
@@ -95,12 +115,22 @@ def test_installation_store_bot_only(self):
95115
assert result.bot_id == "BZYBOTHED"
96116
assert result.bot_user_id == "W23456789"
97117
assert result.user_token is None
118+
assert result.user_id is None
119+
assert result.user == "bot"
120+
assert result.team_id == "T0G9PQBBK"
121+
assert result.team == "Subarachnoid Workspace"
122+
assert result.url == "https://subarachnoid.slack.com/"
98123
assert_auth_test_count(self, 1)
99124

100125
result = authorize(context=context, enterprise_id="E111", team_id="T0G9PQBBK", user_id="W11111")
101126
assert result.bot_id == "BZYBOTHED"
102127
assert result.bot_user_id == "W23456789"
103128
assert result.user_token is None
129+
assert result.user_id is None
130+
assert result.user == "bot"
131+
assert result.team_id == "T0G9PQBBK"
132+
assert result.team == "Subarachnoid Workspace"
133+
assert result.url == "https://subarachnoid.slack.com/"
104134
assert_auth_test_count(self, 2)
105135

106136
def test_installation_store_cached_bot_only(self):
@@ -120,12 +150,22 @@ def test_installation_store_cached_bot_only(self):
120150
assert result.bot_id == "BZYBOTHED"
121151
assert result.bot_user_id == "W23456789"
122152
assert result.user_token is None
153+
assert result.user_id is None
154+
assert result.user == "bot"
155+
assert result.team_id == "T0G9PQBBK"
156+
assert result.team == "Subarachnoid Workspace"
157+
assert result.url == "https://subarachnoid.slack.com/"
123158
assert_auth_test_count(self, 1)
124159

125160
result = authorize(context=context, enterprise_id="E111", team_id="T0G9PQBBK", user_id="W11111")
126161
assert result.bot_id == "BZYBOTHED"
127162
assert result.bot_user_id == "W23456789"
128163
assert result.user_token is None
164+
assert result.user_id is None
165+
assert result.user == "bot"
166+
assert result.team_id == "T0G9PQBBK"
167+
assert result.team == "Subarachnoid Workspace"
168+
assert result.url == "https://subarachnoid.slack.com/"
129169
assert_auth_test_count(self, 1) # cached
130170

131171
def test_installation_store(self):
@@ -138,12 +178,22 @@ def test_installation_store(self):
138178
assert result.bot_id == "BZYBOTHED"
139179
assert result.bot_user_id == "W23456789"
140180
assert result.user_token == "xoxp-valid"
181+
assert result.user_id == "W99999"
182+
assert result.user == "some-user"
183+
assert result.team_id == "T0G9PQBBK"
184+
assert result.team == "Subarachnoid Workspace"
185+
assert result.url == "https://subarachnoid.slack.com/"
141186
assert_auth_test_count(self, 1)
142187

143188
result = authorize(context=context, enterprise_id="E111", team_id="T0G9PQBBK", user_id="W11111")
144189
assert result.bot_id == "BZYBOTHED"
145190
assert result.bot_user_id == "W23456789"
146191
assert result.user_token == "xoxp-valid"
192+
assert result.user_id == "W99999"
193+
assert result.user == "some-user"
194+
assert result.team_id == "T0G9PQBBK"
195+
assert result.team == "Subarachnoid Workspace"
196+
assert result.url == "https://subarachnoid.slack.com/"
147197
assert_auth_test_count(self, 2)
148198

149199
def test_installation_store_cached(self):
@@ -160,12 +210,22 @@ def test_installation_store_cached(self):
160210
assert result.bot_id == "BZYBOTHED"
161211
assert result.bot_user_id == "W23456789"
162212
assert result.user_token == "xoxp-valid"
213+
assert result.user_id == "W99999"
214+
assert result.user == "some-user"
215+
assert result.team_id == "T0G9PQBBK"
216+
assert result.team == "Subarachnoid Workspace"
217+
assert result.url == "https://subarachnoid.slack.com/"
163218
assert_auth_test_count(self, 1)
164219

165220
result = authorize(context=context, enterprise_id="E111", team_id="T0G9PQBBK", user_id="W11111")
166221
assert result.bot_id == "BZYBOTHED"
167222
assert result.bot_user_id == "W23456789"
168223
assert result.user_token == "xoxp-valid"
224+
assert result.user_id == "W99999"
225+
assert result.user == "some-user"
226+
assert result.team_id == "T0G9PQBBK"
227+
assert result.team == "Subarachnoid Workspace"
228+
assert result.url == "https://subarachnoid.slack.com/"
169229
assert_auth_test_count(self, 1) # cached
170230

171231
def test_fetch_different_user_token(self):
@@ -178,6 +238,11 @@ def test_fetch_different_user_token(self):
178238
assert result.bot_user_id == "W23456789"
179239
assert result.bot_token == "xoxb-valid"
180240
assert result.user_token == "xoxp-valid"
241+
assert result.user_id == "W99999"
242+
assert result.user == "some-user"
243+
assert result.team_id == "T0G9PQBBK"
244+
assert result.team == "Subarachnoid Workspace"
245+
assert result.url == "https://subarachnoid.slack.com/"
181246
assert_auth_test_count(self, 1)
182247

183248
def test_fetch_different_user_token_with_rotation(self):
@@ -209,6 +274,11 @@ def test_fetch_different_user_token_with_rotation(self):
209274
assert result.bot_user_id == "W23456789"
210275
assert result.bot_token == "xoxb-valid-refreshed"
211276
assert result.user_token == "xoxp-valid-refreshed"
277+
assert result.user_id == "W99999"
278+
assert result.user == "some-user"
279+
assert result.team_id == "T0G9PQBBK"
280+
assert result.team == "Subarachnoid Workspace"
281+
assert result.url == "https://subarachnoid.slack.com/"
212282
assert_auth_test_count(self, 1)
213283

214284
def test_remove_latest_user_token_if_it_is_not_relevant(self):
@@ -221,6 +291,11 @@ def test_remove_latest_user_token_if_it_is_not_relevant(self):
221291
assert result.bot_user_id == "W23456789"
222292
assert result.bot_token == "xoxb-valid"
223293
assert result.user_token is None
294+
assert result.user_id is None
295+
assert result.user == "bot"
296+
assert result.team_id == "T0G9PQBBK"
297+
assert result.team == "Subarachnoid Workspace"
298+
assert result.url == "https://subarachnoid.slack.com/"
224299
assert_auth_test_count(self, 1)
225300

226301
def test_rotate_only_bot_token(self):
@@ -252,6 +327,11 @@ def test_rotate_only_bot_token(self):
252327
assert result.bot_user_id == "W23456789"
253328
assert result.bot_token == "xoxb-valid-refreshed"
254329
assert result.user_token is None
330+
assert result.user_id is None
331+
assert result.user == "bot"
332+
assert result.team_id == "T0G9PQBBK"
333+
assert result.team == "Subarachnoid Workspace"
334+
assert result.url == "https://subarachnoid.slack.com/"
255335
assert_auth_test_count(self, 1)
256336

257337

0 commit comments

Comments
 (0)