Skip to content

Commit

Permalink
Add team.* & admin.users.session.resetBulk APIs (#1132)
Browse files Browse the repository at this point in the history
  • Loading branch information
seratch committed Nov 4, 2021
1 parent 93fd69a commit cf22599
Show file tree
Hide file tree
Showing 6 changed files with 212 additions and 2 deletions.
46 changes: 46 additions & 0 deletions integration_tests/web/test_admin_users_session.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import os
import unittest

from integration_tests.env_variable_names import (
SLACK_SDK_TEST_GRID_WORKSPACE_ADMIN_USER_TOKEN,
SLACK_SDK_TEST_GRID_ORG_ADMIN_USER_TOKEN,
)
from slack_sdk.web import WebClient


class TestWebClient(unittest.TestCase):

def setUp(self):
self.org_admin_token = os.environ[SLACK_SDK_TEST_GRID_ORG_ADMIN_USER_TOKEN]
self.client: WebClient = WebClient(token=self.org_admin_token)

if not hasattr(self, "user_ids"):
team_admin_token = os.environ[
SLACK_SDK_TEST_GRID_WORKSPACE_ADMIN_USER_TOKEN
]
client = WebClient(token=team_admin_token)
users = client.users_list(exclude_archived=True, limit=50)
self.user_ids = [
u["id"]
for u in users["members"]
if not u["is_bot"]
and not u["deleted"]
and not u["is_app_user"]
and not u["is_owner"]
and not u.get("is_stranger")
][:3]

def tearDown(self):
pass

def test_reset(self):
response = self.client.admin_users_session_reset(user_id=self.user_ids[0])
self.assertIsNone(response.get("error"))

def test_resetBulk(self):
response = self.client.admin_users_session_resetBulk(user_ids=self.user_ids)
self.assertIsNone(response.get("error"))

def test_resetBulk_str(self):
response = self.client.admin_users_session_resetBulk(user_ids=",".join(self.user_ids))
self.assertIsNone(response.get("error"))
29 changes: 29 additions & 0 deletions integration_tests/web/test_team.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import os
import unittest

from integration_tests.env_variable_names import SLACK_SDK_TEST_BOT_TOKEN
from slack_sdk.web import WebClient


class TestWebClient(unittest.TestCase):

def setUp(self):
self.bot_token = os.environ[SLACK_SDK_TEST_BOT_TOKEN]
self.client: WebClient = WebClient(token=self.bot_token)

def tearDown(self):
pass

def test_team_billing_info(self):
response = self.client.team_billing_info()
self.assertIsNone(response.get("error"))
self.assertIsNotNone(response.get("plan"))

def test_team_preferences_list(self):
response = self.client.team_preferences_list()
self.assertIsNone(response.get("error"))
self.assertIsNotNone(response.get("msg_edit_window_mins"))
self.assertIsNotNone(response.get("allow_message_deletion"))
self.assertIsNotNone(response.get("display_real_names"))
self.assertIsNotNone(response.get("disable_file_uploads"))
self.assertIsNotNone(response.get("who_can_post_general"))
41 changes: 41 additions & 0 deletions slack_sdk/web/async_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -906,6 +906,29 @@ async def admin_users_session_reset(
)
return await self.api_call("admin.users.session.reset", params=kwargs)

async def admin_users_session_resetBulk(
self,
*,
user_ids: Union[str, Sequence[str]],
mobile_only: Optional[bool] = None,
web_only: Optional[bool] = None,
**kwargs,
) -> AsyncSlackResponse:
"""Enqueues an asynchronous job to wipe all valid sessions on all devices for a given list of users
https://api.slack.com/methods/admin.users.session.resetBulk
"""
if isinstance(user_ids, (list, Tuple)):
kwargs.update({"user_ids": ",".join(user_ids)})
else:
kwargs.update({"user_ids": user_ids})
kwargs.update(
{
"mobile_only": mobile_only,
"web_only": web_only,
}
)
return await self.api_call("admin.users.session.resetBulk", params=kwargs)

async def admin_users_session_invalidate(
self,
*,
Expand Down Expand Up @@ -3799,6 +3822,15 @@ async def team_billableInfo(
kwargs.update({"team_id": team_id, "user": user})
return await self.api_call("team.billableInfo", http_verb="GET", params=kwargs)

async def team_billing_info(
self,
**kwargs,
) -> AsyncSlackResponse:
"""Reads a workspace's billing plan information.
https://api.slack.com/methods/team.billing.info
"""
return await self.api_call("team.billing.info", params=kwargs)

async def team_info(
self,
*,
Expand Down Expand Up @@ -3853,6 +3885,15 @@ async def team_profile_get(
kwargs.update({"visibility": visibility})
return await self.api_call("team.profile.get", http_verb="GET", params=kwargs)

async def team_preferences_list(
self,
**kwargs,
) -> AsyncSlackResponse:
"""Retrieve a list of a workspace's team preferences.
https://api.slack.com/methods/team.preferences.list
"""
return await self.api_call("team.preferences.list", params=kwargs)

async def usergroups_create(
self,
*,
Expand Down
41 changes: 41 additions & 0 deletions slack_sdk/web/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -867,6 +867,29 @@ def admin_users_session_reset(
)
return self.api_call("admin.users.session.reset", params=kwargs)

def admin_users_session_resetBulk(
self,
*,
user_ids: Union[str, Sequence[str]],
mobile_only: Optional[bool] = None,
web_only: Optional[bool] = None,
**kwargs,
) -> SlackResponse:
"""Enqueues an asynchronous job to wipe all valid sessions on all devices for a given list of users
https://api.slack.com/methods/admin.users.session.resetBulk
"""
if isinstance(user_ids, (list, Tuple)):
kwargs.update({"user_ids": ",".join(user_ids)})
else:
kwargs.update({"user_ids": user_ids})
kwargs.update(
{
"mobile_only": mobile_only,
"web_only": web_only,
}
)
return self.api_call("admin.users.session.resetBulk", params=kwargs)

def admin_users_session_invalidate(
self,
*,
Expand Down Expand Up @@ -3740,6 +3763,15 @@ def team_billableInfo(
kwargs.update({"team_id": team_id, "user": user})
return self.api_call("team.billableInfo", http_verb="GET", params=kwargs)

def team_billing_info(
self,
**kwargs,
) -> SlackResponse:
"""Reads a workspace's billing plan information.
https://api.slack.com/methods/team.billing.info
"""
return self.api_call("team.billing.info", params=kwargs)

def team_info(
self,
*,
Expand Down Expand Up @@ -3792,6 +3824,15 @@ def team_profile_get(
kwargs.update({"visibility": visibility})
return self.api_call("team.profile.get", http_verb="GET", params=kwargs)

def team_preferences_list(
self,
**kwargs,
) -> SlackResponse:
"""Retrieve a list of a workspace's team preferences.
https://api.slack.com/methods/team.preferences.list
"""
return self.api_call("team.preferences.list", params=kwargs)

def usergroups_create(
self,
*,
Expand Down
41 changes: 41 additions & 0 deletions slack_sdk/web/legacy_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -878,6 +878,29 @@ def admin_users_session_reset(
)
return self.api_call("admin.users.session.reset", params=kwargs)

def admin_users_session_resetBulk(
self,
*,
user_ids: Union[str, Sequence[str]],
mobile_only: Optional[bool] = None,
web_only: Optional[bool] = None,
**kwargs,
) -> Union[Future, SlackResponse]:
"""Enqueues an asynchronous job to wipe all valid sessions on all devices for a given list of users
https://api.slack.com/methods/admin.users.session.resetBulk
"""
if isinstance(user_ids, (list, Tuple)):
kwargs.update({"user_ids": ",".join(user_ids)})
else:
kwargs.update({"user_ids": user_ids})
kwargs.update(
{
"mobile_only": mobile_only,
"web_only": web_only,
}
)
return self.api_call("admin.users.session.resetBulk", params=kwargs)

def admin_users_session_invalidate(
self,
*,
Expand Down Expand Up @@ -3751,6 +3774,15 @@ def team_billableInfo(
kwargs.update({"team_id": team_id, "user": user})
return self.api_call("team.billableInfo", http_verb="GET", params=kwargs)

def team_billing_info(
self,
**kwargs,
) -> Union[Future, SlackResponse]:
"""Reads a workspace's billing plan information.
https://api.slack.com/methods/team.billing.info
"""
return self.api_call("team.billing.info", params=kwargs)

def team_info(
self,
*,
Expand Down Expand Up @@ -3803,6 +3835,15 @@ def team_profile_get(
kwargs.update({"visibility": visibility})
return self.api_call("team.profile.get", http_verb="GET", params=kwargs)

def team_preferences_list(
self,
**kwargs,
) -> Union[Future, SlackResponse]:
"""Retrieve a list of a workspace's team preferences.
https://api.slack.com/methods/team.preferences.list
"""
return self.api_call("team.preferences.list", params=kwargs)

def usergroups_create(
self,
*,
Expand Down

0 comments on commit cf22599

Please sign in to comment.