File: test_url.py

package info (click to toggle)
wtforms 3.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,064 kB
  • sloc: python: 5,264; makefile: 27; sh: 17
file content (76 lines) | stat: -rw-r--r-- 2,115 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import pytest

from wtforms.validators import url
from wtforms.validators import ValidationError


@pytest.mark.parametrize(
    "url_val",
    [
        "http://foobar.dk",
        "http://foobar.dk/",
        "http://foo-bar.dk/",
        "http://foo--bar.dk/",
        "http://foo_bar.dk/",
        "http://foobar.dk?query=param",
        "http://foobar.dk/path?query=param",
        "http://foobar.dk/path?query=param&foo=faa",
        "http://foobar.museum/foobar",
        "http://192.168.0.1/foobar",
        "http://192.168.0.1:9000/fake",
        "http://\u0645\u062b\u0627\u0644."
        "\u0625\u062e\u062a\u0628\u0627\u0631/foo.com",  # Arabic
        "http://उदाहरण.परीक्षा/",  # Hindi
        "http://실례.테스트",  # Hangul
    ],
)
def test_valid_url_passes(url_val, dummy_form, dummy_field):
    """
    Valid url should pass without raising
    """
    validator = url()
    dummy_field.data = url_val
    validator(dummy_form, dummy_field)


@pytest.mark.parametrize(
    "url_val",
    [
        "http://localhost/foobar",
        "http://foobar",
        "http://foobar?query=param&foo=faa",
        "http://foobar:5000?query=param&foo=faa",
        "http://foobar/path?query=param&foo=faa",
        "http://foobar:1234/path?query=param&foo=faa",
    ],
)
def test_valid_url_notld_passes(url_val, dummy_form, dummy_field):
    """
    Require TLD option set to false, correct URL should pass without raising
    """
    validator = url(require_tld=False)
    dummy_field.data = url_val
    validator(dummy_form, dummy_field)


@pytest.mark.parametrize(
    "url_val",
    [
        "http://foobar",
        "http://-foobar.dk/",
        "http://foobar-.dk/",
        "foobar.dk",
        "http://127.0.0/asdf",
        "http://foobar.d",
        "http://foobar.12",
        "http://localhost:abc/a",
    ],
)
def test_bad_url_raises(url_val, dummy_form, dummy_field):
    """
    Bad url should raise ValidationError
    """
    validator = url()
    dummy_field.data = url_val
    with pytest.raises(ValidationError):
        validator(dummy_form, dummy_field)