From 1f173beb46e89b0fe080ebc78aab834b2c7b4aec Mon Sep 17 00:00:00 2001 From: Ramiro Alvaro Date: Thu, 8 Oct 2020 21:14:09 -0300 Subject: [PATCH] Implemented redirects from redirector app shoud include all query string data on redirect close #3066 --- .../tests/test_redirect_by_query_string.py | 25 +++++++++++++++++++ pythonpro/redirector/views.py | 1 + 2 files changed, 26 insertions(+) create mode 100644 pythonpro/redirector/tests/test_redirect_by_query_string.py diff --git a/pythonpro/redirector/tests/test_redirect_by_query_string.py b/pythonpro/redirector/tests/test_redirect_by_query_string.py new file mode 100644 index 00000000..a3e163f4 --- /dev/null +++ b/pythonpro/redirector/tests/test_redirect_by_query_string.py @@ -0,0 +1,25 @@ +import pytest +from django.urls import reverse +from model_bakery import baker + +from pythonpro.redirector.models import Redirect, RedirectLink + + +@pytest.fixture +def redirect(db): + redirect = baker.make(Redirect, url='https://google.com', slug='renzo', use_javascript=False) + baker.make(RedirectLink, redirect=redirect, url='http://python.pro.br') + return redirect + + +@pytest.fixture +def resp(client, redirect): + return client.get(reverse('redirector:redirect', kwargs={'slug': redirect.slug}), {'utm_source': 'facebook'}) + + +def test_status_code_should_return_302(resp): + assert resp.status_code == 302 + + +def test_redirect_url_with_query_string(resp, redirect): + assert resp.url == f'{redirect.links.first().url}?utm_source=facebook' diff --git a/pythonpro/redirector/views.py b/pythonpro/redirector/views.py index e4260c3e..795a842d 100644 --- a/pythonpro/redirector/views.py +++ b/pythonpro/redirector/views.py @@ -9,6 +9,7 @@ def redirect(request, slug: str): url = get_redirect_url(redirect) if redirect.use_javascript is False: + url = f'{url}?{request.GET.urlencode()}' return redirect_url(url) ctx = {'url': url}