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()