Skip to content

Commit a5c7269

Browse files
authored
[CHAT-2479] added shadow_ban / remove_shadow_ban methods (#82)
1 parent bcc6592 commit a5c7269

File tree

5 files changed

+85
-0
lines changed

5 files changed

+85
-0
lines changed

stream_chat/async_chat/client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,12 @@ async def ban_user(self, target_id, **options):
125125
data = {"target_user_id": target_id, **options}
126126
return await self.post("moderation/ban", data=data)
127127

128+
async def shadow_ban(self, target_id, **options):
129+
return await self.ban_user(target_id, shadow=True, **options)
130+
131+
async def remove_shadow_ban(self, target_id, **options):
132+
return await self.unban_user(target_id, shadow=True, **options)
133+
128134
async def unban_user(self, target_id, **options):
129135
params = {"target_user_id": target_id, **options}
130136
return await self.delete("moderation/ban", params)

stream_chat/base/client.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@ def export_user(self, user_id, **options):
124124
def ban_user(self, target_id, **options):
125125
pass
126126

127+
@abc.abstractmethod
128+
def shadow_ban(self, target_id, **options):
129+
pass
130+
131+
@abc.abstractmethod
132+
def remove_shadow_ban(self, target_id, **options):
133+
pass
134+
127135
@abc.abstractmethod
128136
def unban_user(self, target_id, **options):
129137
pass

stream_chat/client.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ def ban_user(self, target_id, **options):
121121
data = {"target_user_id": target_id, **options}
122122
return self.post("moderation/ban", data=data)
123123

124+
def shadow_ban(self, target_id, **options):
125+
return self.ban_user(target_id, shadow=True, **options)
126+
127+
def remove_shadow_ban(self, target_id, **options):
128+
return self.unban_user(target_id, shadow=True, **options)
129+
124130
def unban_user(self, target_id, **options):
125131
params = {"target_user_id": target_id, **options}
126132
return self.delete("moderation/ban", params)

stream_chat/tests/async_chat/test_client.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,40 @@ async def test_export_user(self, event_loop, client, fellowship_of_the_ring):
193193
async def test_ban_user(self, event_loop, client, random_user, server_user):
194194
await client.ban_user(random_user["id"], user_id=server_user["id"])
195195

196+
@pytest.mark.asyncio
197+
async def test_shadow_ban(
198+
self, event_loop, client, random_user, server_user, channel
199+
):
200+
msg_id = str(uuid.uuid4())
201+
response = await channel.send_message(
202+
{"id": msg_id, "text": "hello world"}, random_user["id"]
203+
)
204+
205+
response = await client.get_message(msg_id)
206+
assert response["message"]["shadowed"] == False
207+
208+
response = await client.shadow_ban(random_user["id"], user_id=server_user["id"])
209+
210+
msg_id = str(uuid.uuid4())
211+
response = await channel.send_message(
212+
{"id": msg_id, "text": "hello world"}, random_user["id"]
213+
)
214+
215+
response = await client.get_message(msg_id)
216+
assert response["message"]["shadowed"] == True
217+
218+
response = await client.remove_shadow_ban(
219+
random_user["id"], user_id=server_user["id"]
220+
)
221+
222+
msg_id = str(uuid.uuid4())
223+
response = await channel.send_message(
224+
{"id": msg_id, "text": "hello world"}, random_user["id"]
225+
)
226+
227+
response = await client.get_message(msg_id)
228+
assert response["message"]["shadowed"] == False
229+
196230
@pytest.mark.asyncio
197231
async def test_unban_user(self, event_loop, client, random_user, server_user):
198232
await client.ban_user(random_user["id"], user_id=server_user["id"])

stream_chat/tests/test_client.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,37 @@ def test_export_user(self, client, fellowship_of_the_ring):
164164
assert "user" in response
165165
assert response["user"]["name"] == "Gandalf the Grey"
166166

167+
def test_shadow_ban(self, client, random_user, server_user, channel):
168+
msg_id = str(uuid.uuid4())
169+
response = channel.send_message(
170+
{"id": msg_id, "text": "hello world"}, random_user["id"]
171+
)
172+
173+
response = client.get_message(msg_id)
174+
assert response["message"]["shadowed"] == False
175+
176+
response = client.shadow_ban(random_user["id"], user_id=server_user["id"])
177+
178+
msg_id = str(uuid.uuid4())
179+
response = channel.send_message(
180+
{"id": msg_id, "text": "hello world"}, random_user["id"]
181+
)
182+
183+
response = client.get_message(msg_id)
184+
assert response["message"]["shadowed"] == True
185+
186+
response = client.remove_shadow_ban(
187+
random_user["id"], user_id=server_user["id"]
188+
)
189+
190+
msg_id = str(uuid.uuid4())
191+
response = channel.send_message(
192+
{"id": msg_id, "text": "hello world"}, random_user["id"]
193+
)
194+
195+
response = client.get_message(msg_id)
196+
assert response["message"]["shadowed"] == False
197+
167198
def test_ban_user(self, client, random_user, server_user):
168199
client.ban_user(random_user["id"], user_id=server_user["id"])
169200

0 commit comments

Comments
 (0)