mirror of https://github.com/containers/podman.git
132 lines
4.0 KiB
Python
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()
|