github.com/AbhinandanKurakure/podman/v3@v3.4.10/test/apiv2/python/rest_api/test_v2_0_0_system.py (about)

     1  import json
     2  import unittest
     3  import uuid
     4  
     5  import requests
     6  from .fixtures import APITestCase
     7  
     8  
     9  class SystemTestCase(APITestCase):
    10      def test_info(self):
    11          r = requests.get(self.uri("/info"))
    12          self.assertEqual(r.status_code, 200, r.text)
    13          self.assertIsNotNone(r.content)
    14          _ = r.json()
    15  
    16          r = requests.get(self.podman_url + "/v1.40/info")
    17          self.assertEqual(r.status_code, 200, r.text)
    18          self.assertIsNotNone(r.content)
    19          _ = r.json()
    20  
    21      def test_events(self):
    22          r = requests.get(self.uri("/events?stream=false"))
    23          self.assertEqual(r.status_code, 200, r.text)
    24          self.assertIsNotNone(r.content)
    25  
    26          report = r.text.splitlines()
    27          self.assertGreater(len(report), 0, "No events found!")
    28          for line in report:
    29              obj = json.loads(line)
    30              # Actor.ID is uppercase for compatibility
    31              self.assertIn("ID", obj["Actor"])
    32              # Verify 1.22+ deprecated variants are present if current originals are
    33              if obj["Actor"]["ID"]:
    34                  self.assertEqual(obj["Actor"]["ID"], obj["id"])
    35              if obj["Action"]:
    36                  self.assertEqual(obj["Action"], obj["status"])
    37              if obj["Actor"].get("Attributes") and obj["Actor"]["Attributes"].get("image"):
    38                  self.assertEqual(obj["Actor"]["Attributes"]["image"], obj["from"])
    39  
    40      def test_ping(self):
    41          required_headers = (
    42              "API-Version",
    43              "Builder-Version",
    44              "Docker-Experimental",
    45              "Cache-Control",
    46              "Pragma",
    47              "Pragma",
    48          )
    49  
    50          def check_headers(req):
    51              for k in required_headers:
    52                  self.assertIn(k, req.headers)
    53  
    54          r = requests.get(self.podman_url + "/_ping")
    55          self.assertEqual(r.status_code, 200, r.text)
    56          self.assertEqual(r.text, "OK")
    57          check_headers(r)
    58  
    59          r = requests.head(self.podman_url + "/_ping")
    60          self.assertEqual(r.status_code, 200, r.text)
    61          self.assertEqual(r.text, "")
    62          check_headers(r)
    63  
    64          r = requests.get(self.uri("/_ping"))
    65          self.assertEqual(r.status_code, 200, r.text)
    66          self.assertEqual(r.text, "OK")
    67          check_headers(r)
    68  
    69          r = requests.head(self.uri("/_ping"))
    70          self.assertEqual(r.status_code, 200, r.text)
    71          self.assertEqual(r.text, "")
    72          check_headers(r)
    73  
    74      def test_version(self):
    75          r = requests.get(self.podman_url + "/v1.40/version")
    76          self.assertEqual(r.status_code, 200, r.text)
    77  
    78          r = requests.get(self.uri("/version"))
    79          self.assertEqual(r.status_code, 200, r.text)
    80  
    81          body = r.json()
    82          names = [d.get("Name", "") for d in body["Components"]]
    83  
    84          self.assertIn("Conmon", names)
    85          for n in names:
    86              if n.startswith("OCI Runtime"):
    87                  oci_name = n
    88          self.assertIsNotNone(oci_name, "OCI Runtime not found in version components.")
    89  
    90      def test_df(self):
    91          r = requests.get(self.podman_url + "/v1.40/system/df")
    92          self.assertEqual(r.status_code, 200, r.text)
    93  
    94          obj = r.json()
    95          self.assertIn("Images", obj)
    96          self.assertIn("Containers", obj)
    97          self.assertIn("Volumes", obj)
    98          self.assertIn("BuildCache", obj)
    99  
   100          r = requests.get(self.uri("/system/df"))
   101          self.assertEqual(r.status_code, 200, r.text)
   102  
   103      def test_reference_id(self):
   104          rid = str(uuid.uuid4())
   105          r = requests.get(self.uri("/info"), headers={"X-Reference-Id": rid})
   106          self.assertEqual(r.status_code, 200, r.text)
   107  
   108          self.assertIn("X-Reference-Id", r.headers)
   109          self.assertEqual(r.headers["X-Reference-Id"], rid)
   110  
   111          r = requests.get(self.uri("/info"))
   112          self.assertIn("X-Reference-Id", r.headers)
   113          self.assertNotEqual(r.headers["X-Reference-Id"], rid)
   114  
   115  
   116  if __name__ == "__main__":
   117      unittest.main()