@@ -201,7 +201,7 @@ def test_invalid_setitem():
201201
202202
203203class SuperHero (Extension ):
204- schemas : list [str ] = ["urn:ietf:params:scim:schemas:extension:enterprise:2.0:User " ]
204+ schemas : list [str ] = ["example:extensions:SuperHero " ]
205205
206206 superpower : Optional [str ] = None
207207 """The superhero superpower."""
@@ -217,8 +217,9 @@ def test_multiple_extensions_union():
217217 "schemas" : [
218218 "urn:ietf:params:scim:schemas:core:2.0:User" ,
219219 "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" ,
220+ "example:extensions:SuperHero" ,
220221 ],
221- "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User " : {
222+ "example:extensions:SuperHero " : {
222223 "superpower" : "flight" ,
223224 },
224225 }
@@ -268,3 +269,39 @@ def test_validate_items_without_extension():
268269 User [EnterpriseUser ].model_validate (
269270 payload , scim_ctx = Context .RESOURCE_CREATION_RESPONSE
270271 )
272+
273+
274+ def test_get_extension_model ():
275+ assert User [EnterpriseUser ].get_extension_model ("EnterpriseUser" ) == EnterpriseUser
276+ assert (
277+ User [EnterpriseUser ].get_extension_model (
278+ "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
279+ )
280+ == EnterpriseUser
281+ )
282+
283+ assert (
284+ User [Union [EnterpriseUser , SuperHero ]].get_extension_model ("EnterpriseUser" )
285+ == EnterpriseUser
286+ )
287+ assert (
288+ User [Union [EnterpriseUser , SuperHero ]].get_extension_model (
289+ "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
290+ )
291+ == EnterpriseUser
292+ )
293+
294+ assert User [SuperHero ].get_extension_model ("EnterpriseUser" ) is None
295+ assert (
296+ User [SuperHero ].get_extension_model (
297+ "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
298+ )
299+ is None
300+ )
301+ assert User .get_extension_model ("EnterpriseUser" ) is None
302+ assert (
303+ User .get_extension_model (
304+ "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
305+ )
306+ is None
307+ )
0 commit comments