diff options
Diffstat (limited to 'test/test_dockerpy/test_images.py')
-rw-r--r-- | test/test_dockerpy/test_images.py | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/test/test_dockerpy/test_images.py b/test/test_dockerpy/test_images.py new file mode 100644 index 000000000..c88353b79 --- /dev/null +++ b/test/test_dockerpy/test_images.py @@ -0,0 +1,150 @@ + +import unittest +import docker +import requests +import os +from docker import Client +from . import constant +from . import common + +client = common.get_client() + +class TestImages(unittest.TestCase): + + podman = None + def setUp(self): + super().setUp() + common.restore_image_from_cache(self) + + def tearDown(self): + common.remove_all_images() + return super().tearDown() + + @classmethod + def setUpClass(cls): + super().setUpClass() + common.enable_sock(cls) + + + @classmethod + def tearDownClass(cls): + common.terminate_connection(cls) + return super().tearDownClass() + + +# Inspect Image + + def test_inspect_image(self): + # Check for error with wrong image name + with self.assertRaises(requests.HTTPError): + client.inspect_image("dummy") + alpine_image = client.inspect_image(constant.ALPINE) + self.assertIn(constant.ALPINE, alpine_image["RepoTags"]) + +# Tag Image + + # Validates if invalid image name is given a bad response is encountered. + def test_tag_invalid_image(self): + with self.assertRaises(requests.HTTPError): + client.tag("dummy","demo") + + + + # Validates if the image is tagged successfully. + def test_tag_valid_image(self): + client.tag(constant.ALPINE,"demo",constant.ALPINE_SHORTNAME) + alpine_image = client.inspect_image(constant.ALPINE) + for x in alpine_image["RepoTags"]: + if("demo:alpine" in x): + self.assertTrue + self.assertFalse + + # Validates if name updates when the image is retagged. + @unittest.skip("dosent work now") + def test_retag_valid_image(self): + client.tag(constant.ALPINE_SHORTNAME, "demo","rename") + alpine_image = client.inspect_image(constant.ALPINE) + self.assertNotIn("demo:test", alpine_image["RepoTags"]) + +# List Image + # List All Images + def test_list_images(self): + allImages = client.images() + self.assertEqual(len(allImages), 1) + # Add more images + client.pull(constant.BB) + allImages = client.images() + self.assertEqual(len(allImages) , 2) + + + # List images with filter + filters = {'reference':'alpine'} + allImages = client.images(filters = filters) + self.assertEqual(len(allImages) , 1) + +# Search Image + def test_search_image(self): + response = client.search("alpine") + for i in response: + # Alpine found + if "docker.io/library/alpine" in i["Name"]: + self.assertTrue + self.assertFalse + +# Image Exist (No docker-py support yet) + +# Remove Image + def test_remove_image(self): + # Check for error with wrong image name + with self.assertRaises(requests.HTTPError): + client.remove_image("dummy") + allImages = client.images() + self.assertEqual(len(allImages) , 1) + alpine_image = client.inspect_image(constant.ALPINE) + client.remove_image(alpine_image) + allImages = client.images() + self.assertEqual(len(allImages) , 0) + +# Image History + def test_image_history(self): + # Check for error with wrong image name + with self.assertRaises(requests.HTTPError): + client.remove_image("dummy") + imageHistory = client.history(constant.ALPINE) + alpine_image = client.inspect_image(constant.ALPINE) + for h in imageHistory: + if h["Id"] in alpine_image["Id"]: + self.assertTrue + self.assertFalse + +# Prune Image (No docker-py support yet) + +# Export Image + + def test_export_image(self): + client.pull(constant.BB) + file = os.path.join(constant.ImageCacheDir , "busybox.tar") + if not os.path.exists(constant.ImageCacheDir): + os.makedirs(constant.ImageCacheDir) + # Check for error with wrong image name + with self.assertRaises(requests.HTTPError): + client.get_image("dummy") + response = client.get_image(constant.BB) + image_tar = open(file,mode="wb") + image_tar.write(response.data) + image_tar.close() + os.stat(file) + +# Import|Load Image + + def test_import_image(self): + allImages = client.images() + self.assertEqual(len(allImages), 1) + file = os.path.join(constant.ImageCacheDir , "busybox.tar") + client.import_image_from_file(filename=file) + allImages = client.images() + self.assertEqual(len(allImages), 2) + +if __name__ == '__main__': + # Setup temporary space + unittest.main() |