Add unit tests, both new an...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 1) # SPDX-FileCopyrightText: 2024 Marco Ricci <m@the13thletter.info>
tests/test_passphrase_generating.py 2) #
tests/test_passphrase_generating.py 3) # SPDX-License-Identifier: MIT
tests/test_passphrase_generating.py 4)
tests/test_passphrase_generating.py 5) """Test passphrase generation via derivepassphrase.Vault."""
tests/test_passphrase_generating.py 6)
|
Expose some functionality f...
Marco Ricci authored 2 months ago
|
tests/test_passphrase_generating.py 7) from __future__ import annotations
tests/test_passphrase_generating.py 8)
tests/test_passphrase_generating.py 9) import math
|
Add unit tests, both new an...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 10)
tests/test_passphrase_generating.py 11) import derivepassphrase
tests/test_passphrase_generating.py 12) import sequin
|
Expose some functionality f...
Marco Ricci authored 2 months ago
|
tests/test_passphrase_generating.py 13) import pytest
|
Add unit tests, both new an...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 14)
tests/test_passphrase_generating.py 15) Vault = derivepassphrase.Vault
tests/test_passphrase_generating.py 16) phrase = b'She cells C shells bye the sea shoars'
|
Expose some functionality f...
Marco Ricci authored 2 months ago
|
tests/test_passphrase_generating.py 17) google_phrase = rb': 4TVH#5:aZl8LueOT\{'
tests/test_passphrase_generating.py 18) twitter_phrase = rb"[ (HN_N:lI&<ro=)3'g9"
|
Add unit tests, both new an...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 19)
|
Expose some functionality f...
Marco Ricci authored 2 months ago
|
tests/test_passphrase_generating.py 20) @pytest.mark.parametrize(['service', 'expected'], [
tests/test_passphrase_generating.py 21) (b'google', google_phrase),
tests/test_passphrase_generating.py 22) ('twitter', twitter_phrase),
|
Add unit tests, both new an...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 23) ])
tests/test_passphrase_generating.py 24) def test_200_basic_configuration(service, expected):
tests/test_passphrase_generating.py 25) assert Vault(phrase=phrase).generate(service) == expected
tests/test_passphrase_generating.py 26)
tests/test_passphrase_generating.py 27) def test_201_phrase_dependence():
tests/test_passphrase_generating.py 28) assert (
tests/test_passphrase_generating.py 29) Vault(phrase=(phrase + b'X')).generate('google') ==
tests/test_passphrase_generating.py 30) b'n+oIz6sL>K*lTEWYRO%7'
tests/test_passphrase_generating.py 31) )
tests/test_passphrase_generating.py 32)
tests/test_passphrase_generating.py 33) def test_202_reproducibility_and_bytes_service_name():
tests/test_passphrase_generating.py 34) assert (
tests/test_passphrase_generating.py 35) Vault(phrase=phrase).generate(b'google') ==
tests/test_passphrase_generating.py 36) Vault(phrase=phrase).generate('google')
tests/test_passphrase_generating.py 37) )
tests/test_passphrase_generating.py 38)
|
Add test for service name b...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 39) def test_203_reproducibility_and_bytearray_service_name():
tests/test_passphrase_generating.py 40) assert (
tests/test_passphrase_generating.py 41) Vault(phrase=phrase).generate(b'google') ==
tests/test_passphrase_generating.py 42) Vault(phrase=phrase).generate(bytearray(b'google'))
tests/test_passphrase_generating.py 43) )
tests/test_passphrase_generating.py 44)
|
Add unit tests, both new an...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 45) def test_210_nonstandard_length():
tests/test_passphrase_generating.py 46) assert Vault(phrase=phrase, length=4).generate('google') == b'xDFu'
tests/test_passphrase_generating.py 47)
tests/test_passphrase_generating.py 48) def test_211_repetition_limit():
tests/test_passphrase_generating.py 49) assert (
tests/test_passphrase_generating.py 50) Vault(phrase=b'', length=24, symbol=0, number=0,
tests/test_passphrase_generating.py 51) repeat=1).generate('asd') ==
tests/test_passphrase_generating.py 52) b'IVTDzACftqopUXqDHPkuCIhV'
tests/test_passphrase_generating.py 53) )
tests/test_passphrase_generating.py 54)
tests/test_passphrase_generating.py 55) def test_212_without_symbols():
tests/test_passphrase_generating.py 56) assert (
tests/test_passphrase_generating.py 57) Vault(phrase=phrase, symbol=0).generate('google') ==
tests/test_passphrase_generating.py 58) b'XZ4wRe0bZCazbljCaMqR'
tests/test_passphrase_generating.py 59) )
tests/test_passphrase_generating.py 60)
tests/test_passphrase_generating.py 61) def test_213_too_many_symbols():
tests/test_passphrase_generating.py 62) with pytest.raises(ValueError,
tests/test_passphrase_generating.py 63) match='requested passphrase length too short'):
tests/test_passphrase_generating.py 64) Vault(phrase=phrase, symbol=100)
tests/test_passphrase_generating.py 65)
tests/test_passphrase_generating.py 66) def test_214_no_numbers():
tests/test_passphrase_generating.py 67) assert (
tests/test_passphrase_generating.py 68) Vault(phrase=phrase, number=0).generate('google') ==
tests/test_passphrase_generating.py 69) b'_*$TVH.%^aZl(LUeOT?>'
tests/test_passphrase_generating.py 70) )
tests/test_passphrase_generating.py 71)
tests/test_passphrase_generating.py 72) def test_214_no_lowercase_letters():
tests/test_passphrase_generating.py 73) assert (
tests/test_passphrase_generating.py 74) Vault(phrase=phrase, lower=0).generate('google') ==
tests/test_passphrase_generating.py 75) b':{?)+7~@OA:L]!0E$)(+'
tests/test_passphrase_generating.py 76) )
tests/test_passphrase_generating.py 77)
tests/test_passphrase_generating.py 78) def test_215_at_least_5_digits():
tests/test_passphrase_generating.py 79) assert (
tests/test_passphrase_generating.py 80) Vault(phrase=phrase, length=8, number=5).generate('songkick') ==
tests/test_passphrase_generating.py 81) b'i0908.7['
tests/test_passphrase_generating.py 82) )
tests/test_passphrase_generating.py 83)
tests/test_passphrase_generating.py 84) def test_216_lots_of_spaces():
tests/test_passphrase_generating.py 85) assert (
tests/test_passphrase_generating.py 86) Vault(phrase=phrase, space=12).generate('songkick') ==
tests/test_passphrase_generating.py 87) b' c 6 Bq % 5fR '
tests/test_passphrase_generating.py 88) )
tests/test_passphrase_generating.py 89)
tests/test_passphrase_generating.py 90) def test_217_no_viable_characters():
tests/test_passphrase_generating.py 91) with pytest.raises(ValueError,
tests/test_passphrase_generating.py 92) match='no allowed characters left'):
tests/test_passphrase_generating.py 93) Vault(phrase=phrase, lower=0, upper=0, number=0,
tests/test_passphrase_generating.py 94) space=0, dash=0, symbol=0)
tests/test_passphrase_generating.py 95)
tests/test_passphrase_generating.py 96) def test_218_all_character_classes():
tests/test_passphrase_generating.py 97) assert (
tests/test_passphrase_generating.py 98) Vault(phrase=phrase, lower=2, upper=2, number=1,
tests/test_passphrase_generating.py 99) space=3, dash=2, symbol=1).generate('google') ==
tests/test_passphrase_generating.py 100) b': : fv_wqt>a-4w1S R'
tests/test_passphrase_generating.py 101) )
|
Fix repeated character dete...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 102)
tests/test_passphrase_generating.py 103) def test_219_only_numbers_and_very_high_repetition_limit():
tests/test_passphrase_generating.py 104) generated = Vault(phrase=b'', length=40, lower=0, upper=0, space=0,
tests/test_passphrase_generating.py 105) dash=0, symbol=0, repeat=4).generate('abcdef')
tests/test_passphrase_generating.py 106) assert b'0000' not in generated
tests/test_passphrase_generating.py 107) assert b'1111' not in generated
tests/test_passphrase_generating.py 108) assert b'2222' not in generated
tests/test_passphrase_generating.py 109) assert b'3333' not in generated
tests/test_passphrase_generating.py 110) assert b'4444' not in generated
tests/test_passphrase_generating.py 111) assert b'5555' not in generated
tests/test_passphrase_generating.py 112) assert b'6666' not in generated
tests/test_passphrase_generating.py 113) assert b'7777' not in generated
tests/test_passphrase_generating.py 114) assert b'8888' not in generated
tests/test_passphrase_generating.py 115) assert b'9999' not in generated
tests/test_passphrase_generating.py 116)
tests/test_passphrase_generating.py 117) def test_220_very_limited_character_set():
tests/test_passphrase_generating.py 118) generated = Vault(phrase=b'', length=24, lower=0, upper=0,
tests/test_passphrase_generating.py 119) space=0, symbol=0).generate('testing')
tests/test_passphrase_generating.py 120) assert b'763252593304946694588866' == generated
|
Fix character set subtracti...
Marco Ricci authored 3 months ago
|
tests/test_passphrase_generating.py 121)
tests/test_passphrase_generating.py 122) def test_300_character_set_subtraction():
tests/test_passphrase_generating.py 123) assert Vault._subtract(b'be', b'abcdef') == bytearray(b'acdf')
tests/test_passphrase_generating.py 124)
tests/test_passphrase_generating.py 125) def test_301_character_set_subtraction_duplicate():
tests/test_passphrase_generating.py 126) with pytest.raises(ValueError, match='duplicate characters'):
tests/test_passphrase_generating.py 127) Vault._subtract(b'abcdef', b'aabbccddeeff')
tests/test_passphrase_generating.py 128) with pytest.raises(ValueError, match='duplicate characters'):
tests/test_passphrase_generating.py 129) Vault._subtract(b'aabbccddeeff', b'abcdef')
|