Coverage for fake_kubernetes_client/kubernetes_client.py: 100%

12 statements  

« prev     ^ index     » next       coverage.py v7.10.1, created at 2025-07-29 12:31 +0300

1"""FakeKubernetesClient implementation for fake Kubernetes client""" 

2 

3from typing import TYPE_CHECKING, Any, Union 

4 

5from fake_kubernetes_client.configuration import FakeConfiguration 

6from fake_kubernetes_client.resource_field import FakeResourceField 

7 

8if TYPE_CHECKING: 

9 from fake_kubernetes_client.dynamic_client import FakeDynamicClient 

10 

11 

12class FakeKubernetesClient: 

13 """Fake implementation of kubernetes.client.ApiClient""" 

14 

15 def __init__( 

16 self, 

17 configuration: Union[FakeConfiguration, None] = None, 

18 dynamic_client: Union["FakeDynamicClient", None] = None, 

19 ) -> None: 

20 self.configuration = configuration or FakeConfiguration() 

21 self.dynamic_client = dynamic_client 

22 

23 def call_api( 

24 self, 

25 resource_path: str, 

26 method: str, 

27 path_params: Union[dict[str, Any], None] = None, 

28 query_params: Union[list[tuple[str, Any]], None] = None, 

29 header_params: Union[dict[str, Any], None] = None, 

30 body: Any = None, 

31 post_params: Union[list[tuple[str, Any]], None] = None, 

32 files: Union[dict[str, Any], None] = None, 

33 response_type: Union[str, None] = None, 

34 auth_settings: Union[list[str], None] = None, 

35 async_req: Union[bool, None] = None, 

36 _return_http_data_only: Union[bool, None] = None, 

37 collection_formats: Union[dict[str, Any], None] = None, 

38 _preload_content: Union[bool, None] = None, 

39 _request_timeout: Union[int, None] = None, 

40 ) -> Any: 

41 """ 

42 Fake implementation of API calls. 

43 

44 Currently only handles GET requests to "/api/v1" for API resource listing. 

45 All other requests return None. 

46 

47 This is a minimal implementation sufficient for basic testing scenarios. 

48 """ 

49 if self.dynamic_client and method == "GET" and "/api/v1" in resource_path: 

50 # Handle API resource listing 

51 if resource_path == "/api/v1": 

52 return FakeResourceField(data={"kind": "APIResourceList", "groupVersion": "v1", "resources": []}) 

53 return None