diff --git a/app/src/web/i18n.py b/app/src/web/i18n.py index ddbee9b..918e6b8 100644 --- a/app/src/web/i18n.py +++ b/app/src/web/i18n.py @@ -1,4 +1,4 @@ -from quart import request, session, redirect +from quart import request, session, redirect, abort from quart_babel import _ from quart_babel.locale import get_locale as babel_get_locale @@ -39,4 +39,5 @@ def utility_processor(): def set_language(language=None): if language in LANGUAGES: session['language'] = language - return redirect(request.referrer) + return redirect(request.referrer) + return abort(400) diff --git a/app/tests/test_web_route.py b/app/tests/test_web_route.py index ff5e8c2..d0a3d35 100644 --- a/app/tests/test_web_route.py +++ b/app/tests/test_web_route.py @@ -124,3 +124,34 @@ async def test_data_fetch2(create_inverter_client): response = await client.get('/data-fetch') assert response.status_code == 200 + +@pytest.fixture +def client(): + app.secret_key = 'super secret key' + return app.test_client() + +@pytest.mark.asyncio +async def test_language_en(client): + """Test the language/en route.""" + response = await client.get('/language/en') + assert response.status_code == 302 + assert response.mimetype == 'text/html' + + client.set_cookie('test', key='language', value='de') + response = await client.get('/page') + assert response.status_code == 200 + assert response.mimetype == 'text/html' + +@pytest.mark.asyncio +async def test_language_de(client): + """Test the language/en route.""" + response = await client.get('/language/de') + assert response.status_code == 302 + assert response.mimetype == 'text/html' + +@pytest.mark.asyncio +async def test_language_unknown(client): + """Test the language/en route.""" + response = await client.get('/language/unknonw') + assert response.status_code == 400 + assert response.mimetype == 'text/html'