podman/test/dockerpy/images.py

132 lines
4.0 KiB
Python

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):
def setUp(self):
super().setUp()
client.pull(constant.ALPINE)
def tearDown(self):
allImages = client.images()
for image in allImages:
client.remove_image(image,force=True)
return super().tearDown()
# 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)
client.pull(constant.NGINX)
allImages = client.images()
self.assertEqual(len(allImages) , 3)
# 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(True, msg="Image found")
self.assertFalse(False,msg="Image not found")
# 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(True,msg="Image History validated")
self.assertFalse(False,msg="Unable to get image history")
# Prune Image (No docker-py support yet)
# Export Image
def test_export_image(self):
file = "/tmp/alpine-latest.tar"
# Check for error with wrong image name
with self.assertRaises(requests.HTTPError):
client.get_image("dummy")
response = client.get_image(constant.ALPINE)
image_tar = open(file,mode="wb")
image_tar.write(response.data)
image_tar.close()
os.stat(file)
# Import|Load Image
if __name__ == '__main__':
# Setup temporary space
unittest.main()