Add unit tests, both new an...
Marco Ricci authored 3 months ago
|
1) # SPDX-FileCopyrightText: 2024 Marco Ricci <m@the13thletter.info>
2) #
3) # SPDX-License-Identifier: MIT
4)
5) """Test passphrase generation via derivepassphrase.Vault."""
6)
7) import pytest
8)
9) import derivepassphrase
10) import sequin
11)
12) Vault = derivepassphrase.Vault
13) phrase = b'She cells C shells bye the sea shoars'
14)
15) @pytest.mark.parametrize('service,expected', [
16) (b'google', rb': 4TVH#5:aZl8LueOT\{'),
17) ('twitter', rb"[ (HN_N:lI&<ro=)3'g9"),
18) ])
19) def test_200_basic_configuration(service, expected):
20) assert Vault(phrase=phrase).generate(service) == expected
21)
22) def test_201_phrase_dependence():
23) assert (
24) Vault(phrase=(phrase + b'X')).generate('google') ==
25) b'n+oIz6sL>K*lTEWYRO%7'
26) )
27)
28) def test_202_reproducibility_and_bytes_service_name():
29) assert (
30) Vault(phrase=phrase).generate(b'google') ==
31) Vault(phrase=phrase).generate('google')
32) )
33)
|
Add unit tests, both new an...
Marco Ricci authored 3 months ago
|
40) def test_210_nonstandard_length():
41) assert Vault(phrase=phrase, length=4).generate('google') == b'xDFu'
42)
43) def test_211_repetition_limit():
44) assert (
45) Vault(phrase=b'', length=24, symbol=0, number=0,
46) repeat=1).generate('asd') ==
47) b'IVTDzACftqopUXqDHPkuCIhV'
48) )
49)
50) def test_212_without_symbols():
51) assert (
52) Vault(phrase=phrase, symbol=0).generate('google') ==
53) b'XZ4wRe0bZCazbljCaMqR'
54) )
55)
56) def test_213_too_many_symbols():
57) with pytest.raises(ValueError,
58) match='requested passphrase length too short'):
59) Vault(phrase=phrase, symbol=100)
60)
61) def test_214_no_numbers():
62) assert (
63) Vault(phrase=phrase, number=0).generate('google') ==
64) b'_*$TVH.%^aZl(LUeOT?>'
65) )
66)
67) def test_214_no_lowercase_letters():
68) assert (
69) Vault(phrase=phrase, lower=0).generate('google') ==
70) b':{?)+7~@OA:L]!0E$)(+'
71) )
72)
73) def test_215_at_least_5_digits():
74) assert (
75) Vault(phrase=phrase, length=8, number=5).generate('songkick') ==
76) b'i0908.7['
77) )
78)
79) def test_216_lots_of_spaces():
80) assert (
81) Vault(phrase=phrase, space=12).generate('songkick') ==
82) b' c 6 Bq % 5fR '
83) )
84)
85) def test_217_no_viable_characters():
86) with pytest.raises(ValueError,
87) match='no allowed characters left'):
88) Vault(phrase=phrase, lower=0, upper=0, number=0,
89) space=0, dash=0, symbol=0)
90)
91) def test_218_all_character_classes():
92) assert (
93) Vault(phrase=phrase, lower=2, upper=2, number=1,
94) space=3, dash=2, symbol=1).generate('google') ==
95) b': : fv_wqt>a-4w1S R'
96) )
|