@@ -144,3 +144,61 @@ def test_claims_with_uuid_field(self):
144
144
encoded_text = jwt .encode ({"alg" : "HS256" }, claims , key , encoder_cls = UUIDEncoder )
145
145
token = jwt .decode (encoded_text , key )
146
146
self .assertEqual (token .claims , {"uuid" : str (value )})
147
+
148
+ def test_validate_list_inclusion (self ):
149
+ # Case 1: use option value
150
+ claims_requests = jwt .JWTClaimsRegistry (custom_claim = {"essential" : True , "value" : "a" })
151
+ self .assertRaises (MissingClaimError , claims_requests .validate , {"iss" : "a" })
152
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : "b" })
153
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : ["b" ]})
154
+ claims_requests .validate ({"custom_claim" : "a" })
155
+ claims_requests .validate ({"custom_claim" : ["a" ]})
156
+
157
+ # Case 2: use option values
158
+ claims_requests = jwt .JWTClaimsRegistry (custom_claim = {"essential" : True , "values" : ["a" , "b" ]})
159
+ self .assertRaises (MissingClaimError , claims_requests .validate , {"iss" : "a" })
160
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : "c" })
161
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : ["c" ]})
162
+ claims_requests .validate ({"custom_claim" : "a" })
163
+ claims_requests .validate ({"custom_claim" : "b" })
164
+ claims_requests .validate ({"custom_claim" : ["a" ]})
165
+ claims_requests .validate ({"custom_claim" : ["b" ]})
166
+ claims_requests .validate ({"custom_claim" : ["a" , "b" ]})
167
+ claims_requests .validate ({"custom_claim" : ["c" , "a" ]})
168
+
169
+ # Case 3: do not validate
170
+ claims_requests = jwt .JWTClaimsRegistry ()
171
+ claims_requests .validate ({"custom_claim" : "a" })
172
+
173
+ # Case 4: essential claim without value(s)
174
+ claims_requests = jwt .JWTClaimsRegistry (custom_claim = {"essential" : True })
175
+ claims_requests .validate ({"custom_claim" : "a" })
176
+
177
+ def test_validate_allow_blank (self ):
178
+ # Case 1: allow blank value
179
+ claims_requests = jwt .JWTClaimsRegistry (custom_claim = {"essential" : True , "allow_blank" : True })
180
+ self .assertRaises (MissingClaimError , claims_requests .validate , {"custom_claim" : None })
181
+ claims_requests .validate ({"custom_claim" : "" })
182
+ claims_requests .validate ({"custom_claim" : []})
183
+ claims_requests .validate ({"custom_claim" : {}})
184
+
185
+ # Case 2: allow blank value without essential
186
+ claims_requests = jwt .JWTClaimsRegistry (custom_claim = {"allow_blank" : True })
187
+ claims_requests .validate ({"custom_claim" : None })
188
+ claims_requests .validate ({"custom_claim" : "" })
189
+ claims_requests .validate ({"custom_claim" : []})
190
+ claims_requests .validate ({"custom_claim" : {}})
191
+
192
+ # Case 3: do not allow blank value
193
+ claims_requests = jwt .JWTClaimsRegistry (custom_claim = {"essential" : True , "allow_blank" : False })
194
+ self .assertRaises (MissingClaimError , claims_requests .validate , {"custom_claim" : None })
195
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : "" })
196
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : []})
197
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : {}})
198
+
199
+ # Case 4: do not allow blank value without essential
200
+ claims_requests = jwt .JWTClaimsRegistry (custom_claim = {"allow_blank" : False })
201
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : None })
202
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : "" })
203
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : []})
204
+ self .assertRaises (InvalidClaimError , claims_requests .validate , {"custom_claim" : {}})
0 commit comments