Skip to content

Commit 4cdd0cc

Browse files
authored
Parametrise utility tests (#49)
1 parent 5d1b7b8 commit 4cdd0cc

1 file changed

Lines changed: 56 additions & 37 deletions

File tree

tests/test_utils.py

Lines changed: 56 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,59 @@
33
from uwhoisd import utils
44

55

6-
def test_is_well_formed_fqdn():
7-
assert utils.is_well_formed_fqdn("stereochro.me")
8-
assert utils.is_well_formed_fqdn("bbc.co.uk")
9-
assert utils.is_well_formed_fqdn("x" * 63 + ".com")
10-
11-
12-
def test_malformed_domains():
13-
assert not utils.is_well_formed_fqdn("stereochrome"), "Must have more than one label"
14-
assert not utils.is_well_formed_fqdn("stereochr.me."), "No trailing dot allowed"
15-
assert not utils.is_well_formed_fqdn(".stereochr.me"), "No leading dot allowed"
16-
assert not utils.is_well_formed_fqdn("stereochrome."), "Sigh..."
17-
assert not utils.is_well_formed_fqdn("invalid domain.com"), "No spaces allowed"
18-
assert not utils.is_well_formed_fqdn(""), "Must not be an empty string"
19-
assert not utils.is_well_formed_fqdn("."), "Must have at least one label"
20-
assert not utils.is_well_formed_fqdn("x" * 64 + ".foo"), "Labels should not exceed 63 characters (1)"
21-
assert not utils.is_well_formed_fqdn("foo." + "x" * 64), "Labels should not exceed 63 characters (2)"
22-
23-
24-
def test_split_fqdn():
25-
assert utils.split_fqdn("stereochro.me") == ["stereochro", "me"]
26-
assert utils.split_fqdn("stereochro.me.") == ["stereochro", "me"]
27-
assert utils.split_fqdn("stereochrome") == ["stereochrome"]
28-
assert utils.split_fqdn("bbc.co.uk") == ["bbc", "co.uk"]
29-
assert utils.split_fqdn("") == []
30-
31-
32-
def test_decode_value():
33-
assert utils.decode_value("foo") == "foo"
34-
assert utils.decode_value('"foo"') == "foo"
35-
assert utils.decode_value('"foo\nbar"') == "foo\nbar"
36-
assert utils.decode_value("foo\nbar") == "foo\nbar"
37-
assert utils.decode_value('""') == ""
38-
assert utils.decode_value("''") == ""
39-
40-
for bad_value in ['"foo', "'foo", "\"foo'"]:
41-
with pytest.raises(ValueError, match=r"The trailing quote be present and match the leading quote\."):
42-
utils.decode_value(bad_value)
6+
@pytest.mark.parametrize("fqdn", ["stereochro.me", "bbc.co.uk", "x" * 63 + ".com"])
7+
def test_is_well_formed_fqdn(fqdn):
8+
assert utils.is_well_formed_fqdn(fqdn)
9+
10+
11+
@pytest.mark.parametrize(
12+
"fqdn",
13+
[
14+
"stereochrome",
15+
"stereochr.me.",
16+
".stereochr.me",
17+
"stereochrome.",
18+
"invalid domain.com",
19+
".",
20+
"",
21+
"x" * 64 + ".foo",
22+
"foo." + "x" * 64,
23+
],
24+
)
25+
def test_malformed_domains(fqdn):
26+
assert not utils.is_well_formed_fqdn(fqdn)
27+
28+
29+
@pytest.mark.parametrize(
30+
"to_split,expected",
31+
[
32+
("stereochro.me", ["stereochro", "me"]),
33+
("stereochro.me.", ["stereochro", "me"]),
34+
("stereochrome", ["stereochrome"]),
35+
("bbc.co.uk", ["bbc", "co.uk"]),
36+
("", []),
37+
],
38+
)
39+
def test_split_fqdn(to_split, expected):
40+
assert utils.split_fqdn(to_split) == expected
41+
42+
43+
@pytest.mark.parametrize(
44+
"to_decode,expected",
45+
[
46+
("foo", "foo"),
47+
('"foo"', "foo"),
48+
('"foo\nbar"', "foo\nbar"),
49+
("foo\nbar", "foo\nbar"),
50+
('""', ""),
51+
("''", ""),
52+
],
53+
)
54+
def test_decode_value(to_decode, expected):
55+
assert utils.decode_value(to_decode) == expected
56+
57+
58+
@pytest.mark.parametrize("bad", ['"foo', "'foo", "\"foo'"])
59+
def test_undecodable(bad):
60+
with pytest.raises(ValueError, match=r"The trailing quote be present and match the leading quote\."):
61+
utils.decode_value(bad)

0 commit comments

Comments
 (0)