mirror of https://gitlab.com/litecord/litecord.git
119 lines
3.7 KiB
Python
119 lines
3.7 KiB
Python
"""
|
|
|
|
Litecord
|
|
Copyright (C) 2018-2019 Luna Mendes
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, version 3 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
"""
|
|
|
|
import pytest
|
|
|
|
pytestmark = pytest.mark.asyncio
|
|
|
|
|
|
async def test_message_listing(test_cli_user):
|
|
guild = await test_cli_user.create_guild()
|
|
channel = await test_cli_user.create_guild_channel(guild_id=guild.id)
|
|
messages = []
|
|
for _ in range(10):
|
|
messages.append(
|
|
await test_cli_user.create_message(guild_id=guild.id, channel_id=channel.id)
|
|
)
|
|
|
|
# assert all messages we just created can be refetched if we give the
|
|
# middle message to the 'around' parameter
|
|
middle_message_id = messages[5].id
|
|
|
|
resp = await test_cli_user.get(
|
|
f"/api/v6/channels/{channel.id}/messages",
|
|
query_string={"around": middle_message_id},
|
|
)
|
|
assert resp.status_code == 200
|
|
rjson = await resp.json
|
|
|
|
fetched_ids = [m["id"] for m in rjson]
|
|
for message in messages:
|
|
assert str(message.id) in fetched_ids
|
|
|
|
# assert all messages are below given id if its on 'before' param
|
|
|
|
resp = await test_cli_user.get(
|
|
f"/api/v6/channels/{channel.id}/messages",
|
|
query_string={"before": middle_message_id},
|
|
)
|
|
assert resp.status_code == 200
|
|
rjson = await resp.json
|
|
|
|
for message_json in rjson:
|
|
assert int(message_json["id"]) <= middle_message_id
|
|
|
|
# assert all message are above given id if its on 'after' param
|
|
resp = await test_cli_user.get(
|
|
f"/api/v6/channels/{channel.id}/messages",
|
|
query_string={"after": middle_message_id},
|
|
)
|
|
assert resp.status_code == 200
|
|
rjson = await resp.json
|
|
|
|
for message_json in rjson:
|
|
assert int(message_json["id"]) >= middle_message_id
|
|
|
|
|
|
async def test_message_update(test_cli_user):
|
|
guild = await test_cli_user.create_guild()
|
|
channel = await test_cli_user.create_guild_channel(guild_id=guild.id)
|
|
message = await test_cli_user.create_message(
|
|
guild_id=guild.id, channel_id=channel.id
|
|
)
|
|
|
|
resp = await test_cli_user.patch(
|
|
f"/api/v6/channels/{channel.id}/messages/{message.id}",
|
|
json={"content": "awooga"},
|
|
)
|
|
assert resp.status_code == 200
|
|
rjson = await resp.json
|
|
|
|
assert rjson["id"] == str(message.id)
|
|
assert rjson["content"] == "awooga"
|
|
|
|
refetched = await message.refetch()
|
|
assert refetched.content == "awooga"
|
|
|
|
|
|
async def test_message_pinning(test_cli_user):
|
|
guild = await test_cli_user.create_guild()
|
|
channel = await test_cli_user.create_guild_channel(guild_id=guild.id)
|
|
message = await test_cli_user.create_message(
|
|
guild_id=guild.id, channel_id=channel.id
|
|
)
|
|
|
|
resp = await test_cli_user.put(f"/api/v6/channels/{channel.id}/pins/{message.id}")
|
|
assert resp.status_code == 204
|
|
|
|
resp = await test_cli_user.get(f"/api/v6/channels/{channel.id}/pins")
|
|
assert resp.status_code == 200
|
|
rjson = await resp.json
|
|
assert len(rjson) == 1
|
|
assert rjson[0]["id"] == str(message.id)
|
|
|
|
resp = await test_cli_user.delete(
|
|
f"/api/v6/channels/{channel.id}/pins/{message.id}"
|
|
)
|
|
assert resp.status_code == 204
|
|
|
|
resp = await test_cli_user.get(f"/api/v6/channels/{channel.id}/pins")
|
|
assert resp.status_code == 200
|
|
rjson = await resp.json
|
|
assert len(rjson) == 0
|