summaryrefslogtreecommitdiff
path: root/tests/test_generator.py
diff options
context:
space:
mode:
authorSimeon Simeonov2020-03-25 15:31:57 +0100
committerSimeon Simeonov2020-03-25 15:31:57 +0100
commit23b4ede93f8cb202ff0e85cef45921928ff6a94f (patch)
treeec34064e1fd82404f75ee2a10e219f041fd37f6d /tests/test_generator.py
Initial commit with working generator and corresponding tests
Diffstat (limited to 'tests/test_generator.py')
-rw-r--r--tests/test_generator.py115
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
4import otp2289
5
6
7def 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
64def 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'