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
« 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
7from typing import override
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
18 @override
19 def get_payload(self, name: str, objects_bucket: ObjectsBucket, graphql_type: str = "") -> tuple[str, dict]:
20 """Materializes an introspection query
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)
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, {}