@@ -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