File: test_httpkit.py

package info (click to toggle)
django-allauth 65.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 9,672 kB
  • sloc: python: 34,411; javascript: 3,070; xml: 849; makefile: 235; sh: 8
file content (46 lines) | stat: -rw-r--r-- 1,394 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import json

from django.http import HttpRequest

import pytest

from allauth.core.internal import httpkit


@pytest.mark.parametrize(
    "url,params,expected_url",
    [
        ("/", {"foo": "bar", "v": 1}, "/?foo=bar&v=1"),
        (
            "https://fqdn/?replace=this",
            {"replace": "that"},
            "https://fqdn/?replace=that",
        ),
    ],
)
def test_add_query_params(url, params, expected_url):
    assert httpkit.add_query_params(url, params) == expected_url


@pytest.mark.parametrize(
    "url_template,kwargs,expected_url",
    [
        ("/foo", {}, "http://testserver/foo"),
        ("/foo?key={key}", {"key": " "}, "http://testserver/foo?key=+"),
        ("/foo/{key}", {"key": " "}, "http://testserver/foo/%20"),
        ("https://abs.org/foo?key={key}", {"key": " "}, "https://abs.org/foo?key=+"),
    ],
)
def test_render_url(url_template, kwargs, expected_url, rf):
    request = rf.get("/")
    assert httpkit.render_url(request, url_template, **kwargs) == expected_url


def test_deserialize_request(rf):
    request = rf.get("/")
    assert not request.is_secure()
    serialized = httpkit.serialize_request(request)
    assert not httpkit.deserialize_request(serialized, HttpRequest()).is_secure()
    data = json.loads(serialized)
    data["scheme"] = "https"
    assert httpkit.deserialize_request(json.dumps(data), HttpRequest()).is_secure()