diff options
Diffstat (limited to 'tests/test_generator.py')
| -rw-r--r-- | tests/test_generator.py | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/tests/test_generator.py b/tests/test_generator.py new file mode 100644 index 0000000..bd86eb9 --- /dev/null +++ b/tests/test_generator.py | |||
| @@ -0,0 +1,115 @@ | |||
| 1 | # -*- coding: utf-8 -*- | ||
| 2 | """Tests for otp2289.OTPGenerator""" | ||
| 3 | |||
| 4 | import otp2289 | ||
| 5 | |||
| 6 | |||
| 7 | def test_md5(): | ||
| 8 | """ | ||
| 9 | Tests the MD5 functionality of the OTPGenerator as described in the RFC | ||
| 10 | |||
| 11 | Those are the tests from 'RFC-2289 Appendix C - OTP Verification Examples' | ||
| 12 | """ | ||
| 13 | # We could run this in a loop, but I guess "Readability counts." | ||
| 14 | |||
| 15 | # pass='This is a test.', seed='TeSt' | ||
| 16 | gen = otp2289.OTPGenerator('This is a test.'.encode(), | ||
| 17 | 'TeSt', | ||
| 18 | otp2289.OTP_ALGO_MD5) | ||
| 19 | res_words = gen.generate_otp_words(0) | ||
| 20 | res_hex = gen.generate_otp_hexdigest(0) | ||
| 21 | assert isinstance(res_words, str) | ||
| 22 | assert isinstance(res_hex, str) | ||
| 23 | assert res_hex == '0x9e876134d90499dd' | ||
| 24 | assert res_words == 'INCH SEA ANNE LONG AHEM TOUR' | ||
| 25 | # step 1 | ||
| 26 | assert gen.generate_otp_hexdigest(1) == '0x7965e05436f5029f' | ||
| 27 | assert gen.generate_otp_words(1) == 'EASE OIL FUM CURE AWRY AVIS' | ||
| 28 | # step 99 | ||
| 29 | assert gen.generate_otp_hexdigest(99) == '0x50fe1962c4965880' | ||
| 30 | assert gen.generate_otp_words(99) == 'BAIL TUFT BITS GANG CHEF THY' | ||
| 31 | # iterator test | ||
| 32 | hexdigests = list(gen.hexdigest_range(105)) # testing the range itself | ||
| 33 | words = list(gen.words_range(99)) | ||
| 34 | hexdigests.reverse() | ||
| 35 | words.reverse() | ||
| 36 | assert hexdigests[0] == '0x9e876134d90499dd' | ||
| 37 | assert hexdigests[1] == '0x7965e05436f5029f' | ||
| 38 | assert hexdigests[99] == '0x50fe1962c4965880' | ||
| 39 | assert words[0] == 'INCH SEA ANNE LONG AHEM TOUR' | ||
| 40 | assert words[1] == 'EASE OIL FUM CURE AWRY AVIS' | ||
| 41 | assert words[99] == 'BAIL TUFT BITS GANG CHEF THY' | ||
| 42 | # pass='AbCdEfGhIjK', seed='alpha1' | ||
| 43 | gen = otp2289.OTPGenerator('AbCdEfGhIjK'.encode(), | ||
| 44 | 'alpha1', | ||
| 45 | otp2289.OTP_ALGO_MD5) | ||
| 46 | assert gen.generate_otp_hexdigest(0) == '0x87066dd9644bf206' | ||
| 47 | assert gen.generate_otp_words(0) == 'FULL PEW DOWN ONCE MORT ARC' | ||
| 48 | assert gen.generate_otp_hexdigest(1) == '0x7cd34c1040add14b' | ||
| 49 | assert gen.generate_otp_words(1) == 'FACT HOOF AT FIST SITE KENT' | ||
| 50 | assert gen.generate_otp_hexdigest(99) == '0x5aa37a81f212146c' | ||
| 51 | assert gen.generate_otp_words(99) == 'BODE HOP JAKE STOW JUT RAP' | ||
| 52 | # pass="OTP's are good", seed='correct' | ||
| 53 | gen = otp2289.OTPGenerator("OTP's are good".encode(), | ||
| 54 | 'correct', | ||
| 55 | otp2289.OTP_ALGO_MD5) | ||
| 56 | assert gen.generate_otp_hexdigest(0) == '0xf205753943de4cf9' | ||
| 57 | assert gen.generate_otp_words(0) == 'ULAN NEW ARMY FUSE SUIT EYED' | ||
| 58 | assert gen.generate_otp_hexdigest(1) == '0xddcdac956f234937' | ||
| 59 | assert gen.generate_otp_words(1) == 'SKIM CULT LOB SLAM POE HOWL' | ||
| 60 | assert gen.generate_otp_hexdigest(99) == '0xb203e28fa525be47' | ||
| 61 | assert gen.generate_otp_words(99) == 'LONG IVY JULY AJAR BOND LEE' | ||
| 62 | |||
| 63 | |||
| 64 | def test_sha1(): | ||
| 65 | """ | ||
| 66 | Tests the SHA-1 functionality of the OTPGenerator as described in the RFC | ||
| 67 | |||
| 68 | Those are the tests from 'RFC-2289 Appendix C - OTP Verification Examples' | ||
| 69 | """ | ||
| 70 | # pass='This is a test.', seed='TeSt' | ||
| 71 | gen = otp2289.OTPGenerator('This is a test.'.encode(), | ||
| 72 | 'TeSt', | ||
| 73 | otp2289.OTP_ALGO_SHA1) | ||
| 74 | # step=0 | ||
| 75 | res_hex = gen.generate_otp_hexdigest(0) | ||
| 76 | res_words = gen.generate_otp_words(0) | ||
| 77 | assert isinstance(res_words, str) | ||
| 78 | assert isinstance(res_hex, str) | ||
| 79 | assert res_hex == '0xbb9e6ae1979d8ff4' | ||
| 80 | assert res_words == 'MILT VARY MAST OK SEES WENT' | ||
| 81 | assert gen.generate_otp_hexdigest(1) == '0x63d936639734385b' | ||
| 82 | assert gen.generate_otp_words(1) == 'CART OTTO HIVE ODE VAT NUT' | ||
| 83 | assert gen.generate_otp_hexdigest(99) == '0x87fec7768b73ccf9' | ||
| 84 | assert gen.generate_otp_words(99) == 'GAFF WAIT SKID GIG SKY EYED' | ||
| 85 | # iterator test | ||
| 86 | hexdigests = list(gen.hexdigest_range(105)) | ||
| 87 | words = list(gen.words_range(99)) | ||
| 88 | hexdigests.reverse() | ||
| 89 | words.reverse() | ||
| 90 | assert hexdigests[0] == '0xbb9e6ae1979d8ff4' | ||
| 91 | assert hexdigests[1] == '0x63d936639734385b' | ||
| 92 | assert hexdigests[99] == '0x87fec7768b73ccf9' | ||
| 93 | assert words[0] == 'MILT VARY MAST OK SEES WENT' | ||
| 94 | assert words[1] == 'CART OTTO HIVE ODE VAT NUT' | ||
| 95 | assert words[99] == 'GAFF WAIT SKID GIG SKY EYED' | ||
| 96 | # pass='AbCdEfGhIjK', seed='alpha1' | ||
| 97 | gen = otp2289.OTPGenerator('AbCdEfGhIjK'.encode(), | ||
| 98 | 'alpha1', | ||
| 99 | otp2289.OTP_ALGO_SHA1) | ||
| 100 | assert gen.generate_otp_hexdigest(0) == '0xad85f658ebe383c9' | ||
| 101 | assert gen.generate_otp_words(0) == 'LEST OR HEEL SCOT ROB SUIT' | ||
| 102 | assert gen.generate_otp_hexdigest(1) == '0xd07ce229b5cf119b' | ||
| 103 | assert gen.generate_otp_words(1) == 'RITE TAKE GELD COST TUNE RECK' | ||
| 104 | assert gen.generate_otp_hexdigest(99) == '0x27bc71035aaf3dc6' | ||
| 105 | assert gen.generate_otp_words(99) == 'MAY STAR TIN LYON VEDA STAN' | ||
| 106 | # pass="OTP's are good", seed='correct' | ||
| 107 | gen = otp2289.OTPGenerator("OTP's are good".encode(), | ||
| 108 | 'correct', | ||
| 109 | otp2289.OTP_ALGO_SHA1) | ||
| 110 | assert gen.generate_otp_hexdigest(0) == '0xd51f3e99bf8e6f0b' | ||
| 111 | assert gen.generate_otp_words(0) == 'RUST WELT KICK FELL TAIL FRAU' | ||
| 112 | assert gen.generate_otp_hexdigest(1) == '0x82aeb52d943774e4' | ||
| 113 | assert gen.generate_otp_words(1) == 'FLIT DOSE ALSO MEW DRUM DEFY' | ||
| 114 | assert gen.generate_otp_hexdigest(99) == '0x4f296a74fe1567ec' | ||
| 115 | assert gen.generate_otp_words(99) == 'AURA ALOE HURL WING BERG WAIT' | ||
