From c37824785d08e014196eb35accc990f9db46ca79 Mon Sep 17 00:00:00 2001 From: Michael Weimann Date: Mon, 12 Jul 2021 20:18:45 +0200 Subject: [PATCH] fix svg icon header --- ki/routes.py | 11 +++++---- ki/test/test_languages_endpoint.py | 38 ++++++++++++++++++++++++++++++ ki/test/test_skills_endpoint.py | 12 ++++++++++ 3 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 ki/test/test_languages_endpoint.py diff --git a/ki/routes.py b/ki/routes.py index 57909cb..e8ad4a3 100644 --- a/ki/routes.py +++ b/ki/routes.py @@ -12,6 +12,9 @@ from ki.handlers import update_profile as update_profile_handler from ki.models import ContactType, Language, Skill, Token, User from app import app +content_type_svg = "image/svg+xml" +content_type_png = "image/png" + def token_auth(func): @wraps(func) @@ -71,22 +74,22 @@ def handle_icon_request(model, id, path): icon_svg_path = icon_base_path + ".svg" if os.path.exists(icon_svg_path): - return send_file(icon_svg_path, mimetype="image/svg") + return send_file(icon_svg_path, mimetype=content_type_svg) icon_png_path = icon_base_path + ".png" if os.path.exists(icon_png_path): - return send_file(icon_png_path, mimetype="image/png") + return send_file(icon_png_path, mimetype=content_type_png) unknown_svg_path = path + "unknown.svg" if os.path.exists(unknown_svg_path): - return send_file(unknown_svg_path, mimetype="image/svg") + return send_file(unknown_svg_path, mimetype=content_type_svg) unknown_png_path = path + "unknown.png" if os.path.exists(unknown_png_path): - return send_file(unknown_png_path, mimetype="image/png") + return send_file(unknown_png_path, mimetype=content_type_png) return make_response({"error": "icon not found"}, 404) diff --git a/ki/test/test_languages_endpoint.py b/ki/test/test_languages_endpoint.py new file mode 100644 index 0000000..299dfe2 --- /dev/null +++ b/ki/test/test_languages_endpoint.py @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: WTF Kooperative eG +# +# SPDX-License-Identifier: AGPL-3.0-or-later + +import unittest + +from ki.test.ApiTest import ApiTest + + +class TestLanguagesEndpoint(ApiTest): + def test_skills_options(self): + response = self.client.options("/languages") + self.assertEqual(response.status_code, 200) + self.assertIn("Access-Control-Allow-Origin", response.headers) + self.assertEqual(response.headers["Access-Control-Allow-Origin"], "*") + + def test_search_languages_fr(self): + token = self.login("peter", "geheim")["token"] + + response = self.client.get("/languages?search=fr", headers={"Authorization": "Bearer " + token}) + self.assertEqual(response.status_code, 200) + self.assertEqual({"languages": [{ + "id": "fr", + "name": "Französisch", + "icon_url": "/languages/fr/icon" + }]}, response.json) + self.assertIn("Access-Control-Allow-Origin", response.headers) + self.assertEqual(response.headers["Access-Control-Allow-Origin"], "*") + + def test_get_fr_icon(self): + response = self.client.get("/languages/fr/icon") + self.assertEqual(response.status_code, 200) + self.assertIn("Content-Type", response.headers) + self.assertEqual(response.headers["Content-Type"], "image/png") + + +if __name__ == "main": + unittest.main() diff --git a/ki/test/test_skills_endpoint.py b/ki/test/test_skills_endpoint.py index fa497fd..5526111 100644 --- a/ki/test/test_skills_endpoint.py +++ b/ki/test/test_skills_endpoint.py @@ -38,6 +38,18 @@ class TestSkillsEndpoint(ApiTest): self.assertIn("Access-Control-Allow-Origin", response.headers) self.assertEqual(response.headers["Access-Control-Allow-Origin"], "*") + def test_get_php_skill_icon(self): + response = self.client.get("/skills/1/icon") + self.assertEqual(response.status_code, 200) + self.assertIn("Content-Type", response.headers) + self.assertEqual(response.headers["Content-Type"], "image/svg+xml; charset=utf-8") + + def test_get_fallback_skill_icon(self): + response = self.client.get("/skills/2/icon") + self.assertEqual(response.status_code, 200) + self.assertIn("Content-Type", response.headers) + self.assertEqual(response.headers["Content-Type"], "image/svg+xml; charset=utf-8") + if __name__ == "main": unittest.main()