Coverage for graphqler / fuzzer / engine / detectors / introspection / introspection_materializer.py: 100%

18 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-20 10:09 -0400

1from graphqler.fuzzer.engine.materializers.materializer import Materializer 

2from graphqler.fuzzer.engine.materializers.getter import Getter 

3from graphqler.fuzzer.engine.materializers.utils.materialization_utils import prettify_graphql_payload 

4from graphqler.utils.api import API 

5from graphqler.utils.objects_bucket import ObjectsBucket 

6 

7from typing import override 

8 

9 

10class IntrospectionMaterializer(Materializer): 

11 def __init__(self, api: API, fail_on_hard_dependency_not_met: bool = False, max_depth: int = 20, injection_getter: Getter = Getter()): 

12 super().__init__(api, fail_on_hard_dependency_not_met, max_depth, injection_getter) 

13 self.max_depth = max_depth 

14 self.getter = injection_getter 

15 self.api = api 

16 self.fail_on_hard_dependency_not_met = fail_on_hard_dependency_not_met 

17 

18 @override 

19 def get_payload(self, name: str, objects_bucket: ObjectsBucket, graphql_type: str = "") -> tuple[str, dict]: 

20 """Materializes an introspection query 

21 

22 Args: 

23 name (str): The payload name of the Query or Mutation 

24 objects_bucket (dict): The bucket of objects that have already been created 

25 graphql_type (str): The type of the graphql operation (Query or Mutation) 

26 

27 Returns: 

28 tuple[str, dict]: The string of the payload, and the used objects list 

29 """ 

30 introspection_query = """ 

31 query { 

32 __schema { 

33 queryType { name } 

34 mutationType { name } 

35 subscriptionType { name } 

36 } 

37 } 

38 """ 

39 pretty_payload = prettify_graphql_payload(introspection_query) 

40 return pretty_payload, {}