From 67138c70357200857d4a6ee47f27fc2156f7e2b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomek=20W=C3=B3jcik?= Date: Tue, 9 Sep 2025 15:21:45 +0200 Subject: [PATCH] BTHLABS-0000: Use absolute URLs in `ui.meta.manifest_json` --- .../hotpocket_backend/apps/ui/views/meta.py | 16 +++++++++---- .../backend/tests/ui/views/meta/__init__.py | 0 .../tests/ui/views/meta/test_manifest_json.py | 24 +++++++++++++++++++ 3 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 services/backend/tests/ui/views/meta/__init__.py create mode 100644 services/backend/tests/ui/views/meta/test_manifest_json.py diff --git a/services/backend/hotpocket_backend/apps/ui/views/meta.py b/services/backend/hotpocket_backend/apps/ui/views/meta.py index d1342e9..216e242 100644 --- a/services/backend/hotpocket_backend/apps/ui/views/meta.py +++ b/services/backend/hotpocket_backend/apps/ui/views/meta.py @@ -12,24 +12,32 @@ def manifest_json(request: HttpRequest) -> JsonResponse: result = { 'name': settings.SITE_TITLE, 'short_name': settings.SITE_SHORT_TITLE, - 'start_url': reverse('ui.associations.browse'), + 'start_url': request.build_absolute_uri( + reverse('ui.associations.browse'), + ), 'display': 'standalone', 'background_color': '#212529', 'theme_color': '#2b3035', 'icons': [ { - 'src': static('ui/img/icon-192.png'), + 'src': request.build_absolute_uri( + static('ui/img/icon-192.png'), + ), 'sizes': '192x192', 'type': 'image/png', }, { - 'src': static('ui/img/icon-512.png'), + 'src': request.build_absolute_uri( + static('ui/img/icon-512.png'), + ), 'sizes': '512x512', 'type': 'image/png', }, ], 'share_target': { - 'action': reverse('ui.integrations.android.share_sheet'), + 'action': request.build_absolute_uri( + reverse('ui.integrations.android.share_sheet'), + ), 'method': 'POST', 'enctype': 'multipart/form-data', 'params': { diff --git a/services/backend/tests/ui/views/meta/__init__.py b/services/backend/tests/ui/views/meta/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/services/backend/tests/ui/views/meta/test_manifest_json.py b/services/backend/tests/ui/views/meta/test_manifest_json.py new file mode 100644 index 0000000..7d16839 --- /dev/null +++ b/services/backend/tests/ui/views/meta/test_manifest_json.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# type: ignore +from __future__ import annotations + +import http + +from django.test import Client +from django.urls import reverse + + +def test_ok(client: Client, settings): + # When + result = client.get(reverse('ui.meta.manifest_json')) + + # Then + assert result.status_code == http.HTTPStatus.OK + + payload = result.json() + assert payload['name'] == settings.SITE_TITLE + assert payload['short_name'] == settings.SITE_SHORT_TITLE + assert payload['start_url'] == f"http://testserver{reverse('ui.associations.browse')}" + assert payload['share_target']['action'] == ( + f"http://testserver{reverse('ui.integrations.android.share_sheet')}" + )