Skip to content

Commit d57034e

Browse files
committed
pyjwt 2.00 changed return type of jwt.encode from byte to str
Need to change tests to only do b2s conversion if using version before 2.0.0. Note 2.0.0 drops support for python 2. Also it is not installed for the python 3.4 ci test by pip install.
1 parent ba128f8 commit d57034e

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

test/rest_common.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ class TestCase():
6868
url_pfx = 'http://tracker.example/cgi-bin/roundup.cgi/bugs/rest/data/'
6969

7070
def setUp(self):
71+
from packaging import version
72+
7173
self.dirname = '_test_rest'
7274
# set up and open a tracker
7375
# Set optimize=True as code under test (Client.main()::determine_user)
@@ -162,50 +164,58 @@ def setUp(self):
162164
'iat': now_ts,
163165
'exp': plus1min_ts,
164166
}
167+
168+
# in version 2.0.0 and newer jwt.encode returns string
169+
# not bytestring. So we have to skip b2s conversion
165170

171+
if version.parse(jwt.__version__) >= version.parse('2.0.0'):
172+
tostr = lambda x: x
173+
else:
174+
tostr = b2s
175+
166176
self.jwt = {}
167177
self.claim = {}
168178
# generate invalid claim with expired timestamp
169179
self.claim['expired'] = copy(claim)
170180
self.claim['expired']['exp'] = expired_ts
171-
self.jwt['expired'] = b2s(jwt.encode(self.claim['expired'], secret,
181+
self.jwt['expired'] = tostr(jwt.encode(self.claim['expired'], secret,
172182
algorithm='HS256'))
173183

174184
# generate valid claim with user role
175185
self.claim['user'] = copy(claim)
176186
self.claim['user']['exp'] = plus1min_ts
177-
self.jwt['user'] = b2s(jwt.encode(self.claim['user'], secret,
187+
self.jwt['user'] = tostr(jwt.encode(self.claim['user'], secret,
178188
algorithm='HS256'))
179189
# generate invalid claim bad issuer
180190
self.claim['badiss'] = copy(claim)
181191
self.claim['badiss']['iss'] = "http://someissuer/bugs"
182-
self.jwt['badiss'] = b2s(jwt.encode(self.claim['badiss'], secret,
192+
self.jwt['badiss'] = tostr(jwt.encode(self.claim['badiss'], secret,
183193
algorithm='HS256'))
184194
# generate invalid claim bad aud(ience)
185195
self.claim['badaud'] = copy(claim)
186196
self.claim['badaud']['aud'] = "http://someaudience/bugs"
187-
self.jwt['badaud'] = b2s(jwt.encode(self.claim['badaud'], secret,
197+
self.jwt['badaud'] = tostr(jwt.encode(self.claim['badaud'], secret,
188198
algorithm='HS256'))
189199
# generate invalid claim bad sub(ject)
190200
self.claim['badsub'] = copy(claim)
191201
self.claim['badsub']['sub'] = str("99")
192-
self.jwt['badsub'] = b2s(jwt.encode(self.claim['badsub'], secret,
202+
self.jwt['badsub'] = tostr(jwt.encode(self.claim['badsub'], secret,
193203
algorithm='HS256'))
194204
# generate invalid claim bad roles
195205
self.claim['badroles'] = copy(claim)
196206
self.claim['badroles']['roles'] = [ "badrole1", "badrole2" ]
197-
self.jwt['badroles'] = b2s(jwt.encode(self.claim['badroles'], secret,
207+
self.jwt['badroles'] = tostr(jwt.encode(self.claim['badroles'], secret,
198208
algorithm='HS256'))
199209
# generate valid claim with limited user:email role
200210
self.claim['user:email'] = copy(claim)
201211
self.claim['user:email']['roles'] = [ "user:email" ]
202-
self.jwt['user:email'] = b2s(jwt.encode(self.claim['user:email'], secret,
212+
self.jwt['user:email'] = tostr(jwt.encode(self.claim['user:email'], secret,
203213
algorithm='HS256'))
204214

205215
# generate valid claim with limited user:emailnorest role
206216
self.claim['user:emailnorest'] = copy(claim)
207217
self.claim['user:emailnorest']['roles'] = [ "user:emailnorest" ]
208-
self.jwt['user:emailnorest'] = b2s(jwt.encode(self.claim['user:emailnorest'], secret,
218+
self.jwt['user:emailnorest'] = tostr(jwt.encode(self.claim['user:emailnorest'], secret,
209219
algorithm='HS256'))
210220

211221
self.db.tx_Source = 'web'

0 commit comments

Comments
 (0)