1 from openid import kvform
2 from openid import oidutil
3 import unittest
4
7 return '%s test for %r' % (self.__class__.__name__, self.kvform)
8
9 - def log(self, message, unused_priority=None):
11
13 self.failUnlessEqual(num_warnings, len(self.warnings), repr(self.warnings))
14
21
24
27 unittest.TestCase.__init__(self)
28 self.kvform = kv
29 self.dict = dct
30 self.expected_warnings = warnings
31
47
49 - def __init__(self, seq, kv, expected_warnings):
50 unittest.TestCase.__init__(self)
51 self.kvform = kv
52 self.seq = seq
53 self.expected_warnings = expected_warnings
54
56 """Create a new sequence by stripping whitespace from start
57 and end of each value of each pair"""
58 clean = []
59 for k, v in self.seq:
60 if type(k) is str:
61 k = k.decode('utf8')
62 if type(v) is str:
63 v = v.decode('utf8')
64 clean.append((k.strip(), v.strip()))
65 return clean
66
68
69 actual = kvform.seqToKV(self.seq)
70 self.failUnlessEqual(self.kvform, actual)
71 self.failUnless(type(actual) is str)
72
73
74
75
76 seq = kvform.kvToSeq(actual)
77 clean_seq = self.cleanSeq(seq)
78
79 self.failUnlessEqual(seq, clean_seq)
80 self.checkWarnings(self.expected_warnings)
81
82 kvdict_cases = [
83
84 ('', {}, 0),
85 ('college:harvey mudd\n', {'college':'harvey mudd'}, 0),
86 ('city:claremont\nstate:CA\n',
87 {'city':'claremont', 'state':'CA'}, 0),
88 ('is_valid:true\ninvalidate_handle:{HMAC-SHA1:2398410938412093}\n',
89 {'is_valid':'true',
90 'invalidate_handle':'{HMAC-SHA1:2398410938412093}'}, 0),
91
92
93 ('x\n', {}, 1),
94 ('x\nx\n', {}, 2),
95 ('East is least\n', {}, 1),
96
97
98 ('x\n\n', {}, 1),
99
100
101 (':\n', {'':''}, 1),
102 (':missing key\n', {'':'missing key'}, 1),
103
104
105 (' street:foothill blvd\n', {'street':'foothill blvd'}, 1),
106 ('major: computer science\n', {'major':'computer science'}, 1),
107 (' dorm : east \n', {'dorm':'east'}, 2),
108
109
110 ('e^(i*pi)+1:0', {'e^(i*pi)+1':'0'}, 1),
111 ('east:west\nnorth:south', {'east':'west', 'north':'south'}, 1),
112 ]
113
114 kvseq_cases = [
115 ([], '', 0),
116
117
118 ([(u'\u03bbx', u'x')], '\xce\xbbx:x\n', 0),
119
120
121
122 ([('\xce\xbbx', 'x')], '\xce\xbbx:x\n', 0),
123
124 ([('openid', 'useful'), ('a', 'b')], 'openid:useful\na:b\n', 0),
125
126
127 ([(' openid', 'useful'), ('a', 'b')], ' openid:useful\na:b\n', 2),
128
129
130 ([(' openid ', ' useful '),
131 (' a ', ' b ')], ' openid : useful \n a : b \n', 8),
132
133
134
135 ([(' open id ', ' use ful '),
136 (' a ', ' b ')], ' open id : use ful \n a : b \n', 8),
137
138 ([(u'foo', 'bar')], 'foo:bar\n', 0),
139 ]
140
141 kvexc_cases = [
142 [('openid', 'use\nful')],
143 [('open\nid', 'useful')],
144 [('open\nid', 'use\nful')],
145 [('open:id', 'useful')],
146 [('foo', 'bar'), ('ba\n d', 'seed')],
147 [('foo', 'bar'), ('bad:', 'seed')],
148 ]
149
152 unittest.TestCase.__init__(self)
153 self.seq = seq
154
156 return 'KVExcTest for %r' % (self.seq,)
157
160
168
175