Repository navigation
Expand file tree
/
Copy pathtest_encoding.py
More file actions
132 lines (104 loc) · 3.31 KB
/
Copy pathtest_encoding.py
File metadata and controls
132 lines (104 loc) · 3.31 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
"""Test Encodings."""
# standard
from typing import Callable
# external
import pytest
# local
from validators import ValidationError, base16, base32, base58, base64
# ==> base16 <== #
@pytest.mark.parametrize(
"value",
[
"a3f4b2",
"01ef",
"abcdef0123456789",
"1234567890abcdef",
"1a2b3c",
"abcdef",
"000102030405060708090A0B0C0D0E0F",
],
)
def test_returns_true_on_valid_base16(value: str):
"""Test returns true on valid base16."""
assert base16(value)
@pytest.mark.parametrize(
"value",
["12345g", "hello world", "1234567890abcdeg", "GHIJKL", "12345G", "!@#$%^", "1a2h3c", "a3f4Z1"],
)
def test_returns_failed_validation_on_invalid_base16(value: str):
"""Test returns failed validation on invalid base16."""
assert isinstance(base16(value), ValidationError)
# ==> base32 <== #
@pytest.mark.parametrize(
"value",
[
"JBSWY3DPEHPK3PXP",
"MFRGGZDFMZTWQ2LK",
"MZXW6YTBOI======",
"MFZWIZLTOQ======",
"GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ",
"MFRGGZDFMZTWQ2LKNNWG23Q=",
],
)
def test_returns_true_on_valid_base32(value: str):
"""Test returns true on valid base32."""
assert base32(value)
@pytest.mark.parametrize(
"value",
[
"ThisIsNotBase32!",
"12345!",
"Any==invalid=base32=",
"MzXW6yTBOI======",
"JBSWY8DPEHPK9PXP",
"MfZW3zLT9Q======",
],
)
def test_returns_failed_validation_on_invalid_base32(value: str):
"""Test returns failed validation on invalid base32."""
assert isinstance(base32(value), ValidationError)
# ==> base58 <== #
@pytest.mark.parametrize(
"value",
[
"cUSECaVvAiV3srWbFRvVPzm5YzcXJwPSwZfE7veYPHoXmR9h6YMQ",
"18KToMF5ckjXBYt2HAj77qsG3GPeej3PZn",
"n4FFXRNNEW1aA2WPscSuzHTCjzjs4TVE2Z",
"38XzQ9dPGb1uqbZsjPtUajp7omy8aefjqj",
],
)
def test_returns_true_on_valid_base58(value: str):
"""Test returns true on valid base58."""
assert base58(value)
@pytest.mark.parametrize(
"value",
["ThisIsAReallyLongStringThatIsDefinitelyNotBase58Encoded", "abcABC!@#", "InvalidBase58!"],
)
def test_returns_failed_validation_on_invalid_base58(value: str):
"""Test returns failed validation on invalid base58."""
assert isinstance(base58(value), ValidationError)
# ==> base64 <== #
@pytest.mark.parametrize(
"value",
["SGVsbG8gV29ybGQ=", "U29tZSBkYXRhIHN0cmluZw==", "YW55IGNhcm5hbCBwbGVhcw=="],
)
def test_returns_true_on_valid_base64(value: str):
"""Test returns true on valid base64."""
assert base64(value)
@pytest.mark.parametrize(
"value",
["SGVsbG8gV29ybGQ", "U29tZSBkYXRhIHN0cmluZw", "YW55IGNhcm5hbCBwbGVhc"],
)
def test_returns_failed_validation_on_invalid_base64(value: str):
"""Test returns failed validation on invalid base64."""
assert isinstance(base64(value), ValidationError)
@pytest.mark.parametrize(
"validate, value",
[(base16, "a3f4b2"), (base32, "MFZWIZLTOQ======"), (base58, "18KToMF5"), (base64, "SGVsbG8=")],
)
@pytest.mark.parametrize("suffix", ["\n", "\r\n", " ", "\nextra"])
def test_encoding_rejects_trailing_characters(
validate: Callable[[str], object], value: str, suffix: str
):
"""Reject characters outside the encoded value."""
assert isinstance(validate(value + suffix), ValidationError)