From daee044a4fb93c6a3cd71ef17feb265c49286140 Mon Sep 17 00:00:00 2001 From: Luna Date: Mon, 22 Apr 2019 02:41:24 -0300 Subject: [PATCH] admin_api.guilds: make get guild route raise GuildNotFound before it was returning 200 but with a `null` inside, I don't think that's reasonable API design. - test_admin_api/test_guilds: add checks for GuildNotFound error code --- docs/admin_api.md | 2 +- litecord/blueprints/admin_api/guilds.py | 10 +++++++--- tests/test_admin_api/test_guilds.py | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/docs/admin_api.md b/docs/admin_api.md index 9c4b87c..292bb9d 100644 --- a/docs/admin_api.md +++ b/docs/admin_api.md @@ -150,7 +150,7 @@ Returns empty body with 204 status code on success. ### GET `/guilds/` -Returns a partial guild object. +Returns a partial guild object. Gives a 404 when the guild is not found. ### PATCH `/guilds/` diff --git a/litecord/blueprints/admin_api/guilds.py b/litecord/blueprints/admin_api/guilds.py index 0c0f469..e27f544 100644 --- a/litecord/blueprints/admin_api/guilds.py +++ b/litecord/blueprints/admin_api/guilds.py @@ -23,6 +23,7 @@ from litecord.auth import admin_check from litecord.schemas import validate from litecord.admin_schemas import GUILD_UPDATE from litecord.blueprints.guilds import delete_guild +from litecord.errors import GuildNotFound bp = Blueprint('guilds_admin', __name__) @@ -31,9 +32,12 @@ async def get_guild(guild_id: int): """Get a basic guild payload.""" await admin_check() - return jsonify( - await app.storage.get_guild(guild_id) - ) + guild = await app.storage.get_guild(guild_id) + + if not guild: + raise GuildNotFound() + + return jsonify(guild) @bp.route('/', methods=['PATCH']) diff --git a/tests/test_admin_api/test_guilds.py b/tests/test_admin_api/test_guilds.py index 0e38602..c3b32f9 100644 --- a/tests/test_admin_api/test_guilds.py +++ b/tests/test_admin_api/test_guilds.py @@ -23,6 +23,7 @@ import pytest from tests.common import login from litecord.blueprints.guilds import delete_guild +from litecord.errors import GuildNotFound async def _create_guild(test_cli, *, token=None): token = token or await login('admin', test_cli) @@ -125,5 +126,9 @@ async def test_guild_delete(test_cli): ret_early=True) assert resp.status_code == 404 + rjson = await resp.json + assert isinstance(rjson, dict) + assert rjson['error'] + assert rjson['code'] == GuildNotFound.error_code finally: await delete_guild(int(guild_id), app_=test_cli.app)