zun/zun/tests/unit/container/docker/test_utils.py
Feng Shengqin f19ebea9e6 RepoTag is null in manifest.json
Change-Id: I981c7d7aebe7522f8bfc106ceea6b7e352b4c00e
Closes-Bug: #1752522
2018-03-02 13:14:19 +08:00

77 lines
3.1 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import mock
from oslo_serialization import jsonutils
from zun.container.docker import utils as docker_utils
from zun.tests.unit.container import base
class TestDockerHTTPClient(base.DriverTestCase):
def setUp(self):
super(TestDockerHTTPClient, self).setUp()
self.client = docker_utils.DockerHTTPClient()
@mock.patch('tarfile.open')
def test_read_tar_image(self, mock_open):
fake_image = {'path': 'fake-path'}
mock_context_manager = mock.MagicMock()
mock_open.return_value = mock_context_manager
mock_file = mock.MagicMock()
mock_context_manager.__enter__.return_value = mock_file
mock_data = [{"Config": "fake_config",
"RepoTags": ["cirros:latest"],
"Layers": ["fake_layer", "fake_layer2"]}]
mock_file.extractfile.return_value.read.return_value = \
jsonutils.dumps(mock_data, separators=(',', ':'))
self.client.read_tar_image(fake_image)
self.assertEqual('cirros', fake_image['repo'])
self.assertEqual('latest', fake_image['tag'])
@mock.patch('tarfile.open')
def test_read_tar_image_multi_tags(self, mock_open):
fake_image = {'path': 'fake-path'}
mock_context_manager = mock.MagicMock()
mock_open.return_value = mock_context_manager
mock_file = mock.MagicMock()
mock_context_manager.__enter__.return_value = mock_file
mock_data = [{"Config": "fake_config",
"RepoTags": ["cirros:latest", "cirros:0.3.4"],
"Layers": ["fake_layer", "fake_layer2"]}]
mock_file.extractfile.return_value.read.return_value = \
jsonutils.dumps(mock_data, separators=(',', ':'))
self.client.read_tar_image(fake_image)
self.assertEqual('cirros', fake_image['repo'])
self.assertEqual('latest', fake_image['tag'])
@mock.patch('tarfile.open')
def test_read_tar_image_no_repotag(self, mock_open):
fake_image = {'path': 'fake-path'}
mock_context_manager = mock.MagicMock()
mock_open.return_value = mock_context_manager
mock_file = mock.MagicMock()
mock_context_manager.__enter__.return_value = mock_file
mock_data = [{"Config": "fake_config",
"RepoTags": "",
"Layers": ["fake_layer", "fake_layer2"]}]
mock_file.extractfile.return_value.read.return_value = \
jsonutils.dumps(mock_data, separators=(',', ':'))
self.client.read_tar_image(fake_image)
self.assertEqual('fake_config', fake_image['repo'])
self.assertEqual('', fake_image['tag'])