Completed
Push — master ( 8c0150...f7ea54 )
by Chris
01:29
created

test_is_hostname_valid()   B

Complexity

Conditions 5

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 5
c 3
b 0
f 0
dl 0
loc 5
rs 8.5454
1
"""Test WTForm validators."""
2
3
from collections import namedtuple
4
5
import pytest
6
7
from flask_extras.forms.validators import network
8
9
10
class FakeCls(object):
11
    pass
12
13
14
Field = namedtuple('Field', 'data')
15
16
17
def test_is_ip_valid():
18
    assert network.is_ip('192.168.1.0')
19
    assert network.is_ip('0.0.0.0')
20
    assert network.is_ip('255.255.255.255')
21
22
23
def test_is_ip_invalid():
24
    assert not network.is_ip('foo.x.y-baz.com')
25
    assert not network.is_ip('https://www.rad.com')
26
27
28
def test_is_hostname_valid():
29
    assert network.is_hostname('foo.x.y-baz.com')
30
    assert network.is_hostname('https://www.rad.com')
31
    assert network.is_hostname('https://localhost:8080')
32
    assert network.is_hostname('somehost/')
33
34
35
def test_is_hostname_invalid_ips():
36
    assert not network.is_hostname('192.168.1.0')
37
    assert not network.is_hostname('0.0.0.0')
38
    assert not network.is_hostname('255.255.255.255')
39
40
41
def test_is_hostname_invalid_ends_hyphen():
42
    assert not network.is_hostname('www.foo.com-')
43
44
45
def test_is_hostname_invalid_underscore():
46
    assert not network.is_hostname('www.bar.foo_.com')
47
48
49
def test_valid_hosts_invalid_octet():
50
    with pytest.raises(ValueError):
51
        network.valid_hosts(FakeCls(), Field(data='192.3.120.1111'))
52
53
54
def test_valid_hosts_valid_hostname_single():
55
    # Just ensuring it doesn't raise a ValueError
56
    network.valid_hosts(FakeCls(), Field(data='www.foo.com'))
57
58
59
def test_valid_hosts_valid_hostname_list():
60
    # Just ensuring it doesn't raise a ValueError
61
    network.valid_hosts(FakeCls(), Field(data='www.foo.com,bar.baz.rad'))
62
63
64
def test_valid_hosts_valid_hostname_ip_mix():
65
    # Just ensuring it doesn't raise a ValueError
66
    network.valid_hosts(FakeCls(), Field(data='0.0.0.0, www.foo.com'))
67
68
69
def test_valid_hosts_valid_single():
70
    # Just ensuring it doesn't raise a ValueError
71
    network.valid_hosts(FakeCls(), Field(data='0.0.0.0'))
72
    network.valid_hosts(FakeCls(), Field(data='192.168.0.1'))
73
74
75
def test_valid_hosts_valid_list():
76
    # Just ensuring it doesn't raise a ValueError
77
    network.valid_hosts(FakeCls(), Field(data='192.168.0.1,10.3.20.112'))
78
79
80
def test_valid_hosts_valid_range():
81
    # Just ensuring it doesn't raise a ValueError
82
    network.valid_hosts(FakeCls(), Field(data='192.168.0.1-192.168.10.0'))
83
84
85
def test_valid_hosts_valid_hyphen_no_ip():
86
    # Just ensuring it doesn't raise a ValueError
87
    network.valid_hosts(FakeCls(), Field(data='http://www.foo-bar.x.com'))
88
89
90
def test_valid_hosts_valid_range_mixed():
91
    # Just ensuring it doesn't raise a ValueError
92
    network.valid_hosts(FakeCls(), Field(
93
        data='192.168.0.1,http://www.foo.com'))
94
95
96
def test_valid_hosts_valid_hyphenated_hostname_ip_mixed():
97
    # Just ensuring it doesn't raise a ValueError
98
    network.valid_hosts(FakeCls(), Field(
99
        data='http://www.foo-bar.x.com,192.168.0.1'))
100
101
102
def test_valid_hosts_valid_hyphenated_hostname_ip_mixed_range():
103
    # Just ensuring it doesn't raise a ValueError
104
    network.valid_hosts(FakeCls(), Field(
105
        data='http://www.foo-bar.x.com,192.168.0.1-192.168.10.4'))
106