Coverage for fastagency/api/openapi/security_schema_visitor.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.8.0, created at 2025-04-19 12:16 +0000

1from pathlib import Path 1agefbcd

2 

3from fastapi_code_generator.parser import OpenAPIParser 1agefbcd

4from fastapi_code_generator.visitor import Visitor 1agefbcd

5 

6from fastagency.api.openapi.security import BaseSecurity 1agefbcd

7 

8 

9def custom_visitor(parser: OpenAPIParser, model_path: Path) -> dict[str, object]: 1agefbcd

10 if "securitySchemes" not in parser.raw_obj["components"]: 1agefbcd

11 return {} 1agbcd

12 security_schemes = parser.raw_obj["components"]["securitySchemes"] 1aefbcd

13 server_url = parser.raw_obj["servers"][0]["url"] 1aefbcd

14 

15 security_classes = [] 1aefbcd

16 security_parameters = {} 1aefbcd

17 for k, v in security_schemes.items(): 1aefbcd

18 v["server_url"] = server_url 1aefbcd

19 security_class = BaseSecurity.get_security_class( 1aefbcd

20 type=v["type"], schema_parameters=v 

21 ) 

22 

23 security_classes.append(security_class.__name__) 1aefbcd

24 

25 security_parameters[k] = security_class.get_security_parameters( 1aefbcd

26 schema_parameters=v 

27 ) 

28 

29 return { 1aefbcd

30 "security_schemes": security_schemes, 

31 "security_classes": security_classes, 

32 "security_parameters": security_parameters, 

33 } 

34 

35 

36visit: Visitor = custom_visitor 1agefbcd