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