github.com/AbhinandanKurakure/podman/v3@v3.4.10/test/apiv2/python/rest_api/test_v2_0_0_volume.py (about) 1 import os 2 import random 3 import unittest 4 5 import requests 6 from .fixtures import APITestCase 7 8 9 class VolumeTestCase(APITestCase): 10 def test_volume(self): 11 name = f"Volume_{random.getrandbits(160):x}" 12 13 ls = requests.get(self.podman_url + "/v1.40/volumes") 14 self.assertEqual(ls.status_code, 200, ls.text) 15 16 # See https://docs.docker.com/engine/api/v1.40/#operation/VolumeList 17 required_keys = ( 18 "Volumes", 19 "Warnings", 20 ) 21 22 volumes = ls.json() 23 self.assertIsInstance(volumes, dict) 24 for key in required_keys: 25 self.assertIn(key, volumes) 26 27 create = requests.post(self.podman_url + "/v1.40/volumes/create", json={"Name": name}) 28 self.assertEqual(create.status_code, 201, create.text) 29 30 # See https://docs.docker.com/engine/api/v1.40/#operation/VolumeCreate 31 # and https://docs.docker.com/engine/api/v1.40/#operation/VolumeInspect 32 required_keys = ( 33 "Name", 34 "Driver", 35 "Mountpoint", 36 "Labels", 37 "Scope", 38 "Options", 39 ) 40 41 volume = create.json() 42 self.assertIsInstance(volume, dict) 43 for k in required_keys: 44 self.assertIn(k, volume) 45 self.assertEqual(volume["Name"], name) 46 47 inspect = requests.get(self.podman_url + f"/v1.40/volumes/{name}") 48 self.assertEqual(inspect.status_code, 200, inspect.text) 49 50 volume = inspect.json() 51 self.assertIsInstance(volume, dict) 52 for k in required_keys: 53 self.assertIn(k, volume) 54 55 rm = requests.delete(self.podman_url + f"/v1.40/volumes/{name}") 56 self.assertEqual(rm.status_code, 204, rm.text) 57 58 # recreate volume with data and then prune it 59 r = requests.post(self.podman_url + "/v1.40/volumes/create", json={"Name": name}) 60 self.assertEqual(create.status_code, 201, create.text) 61 62 create = r.json() 63 with open(os.path.join(create["Mountpoint"], "test_prune"), "w") as file: 64 file.writelines(["This is a test\n", "This is a good test\n"]) 65 66 prune = requests.post(self.podman_url + "/v1.40/volumes/prune") 67 self.assertEqual(prune.status_code, 200, prune.text) 68 69 payload = prune.json() 70 self.assertIn(name, payload["VolumesDeleted"]) 71 self.assertGreater(payload["SpaceReclaimed"], 0) 72 73 74 if __name__ == "__main__": 75 unittest.main()