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}