Skip to content
This repository was archived by the owner on Sep 12, 2018. It is now read-only.

Commit 9d0ece4

Browse files
committed
Merge pull request #462 from Aigeruth/enhancement/coverage
Improve coverage of docker_registry.lib.layers module.
2 parents 9b5fdd4 + 53257d0 commit 9d0ece4

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

tests/test_layers.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*- coding: utf-8 -*-
22

33
import backports.lzma as lzma
4+
import mock
45
import os
56
import random
67
import string
@@ -53,6 +54,58 @@ def _get_xzfile(filenames):
5354
return lzma_fobj
5455

5556

57+
class TestHelpers(base.TestCase):
58+
59+
@mock.patch.object(layers.cache, 'redis_conn')
60+
@mock.patch.object(layers.diff_queue, 'push')
61+
@mock.patch.object(layers.logger, 'warning')
62+
def test_enqueue_diff(self, logger, diff_queue, redis):
63+
redis.return_value = False
64+
self.assertEqual(logger.call_count, 0)
65+
diff_queue.return_value = mock.MagicMock()
66+
redis.return_value = True
67+
image_id = 'abcd'
68+
layers.enqueue_diff(image_id)
69+
diff_queue.assert_called_once_with(image_id)
70+
self.assertEqual(logger.call_count, 0)
71+
diff_queue.side_effect = layers.cache.redis.exceptions.ConnectionError
72+
layers.enqueue_diff(image_id)
73+
self.assertEqual(logger.call_count, 1)
74+
75+
76+
class TestArchive(base.TestCase):
77+
78+
def setUp(self):
79+
self.archive = layers.Archive(_get_tarfile(list(comp(5, rndstr))))
80+
81+
def test_properties(self):
82+
self.assertEqual(self.archive.seekable(), True)
83+
self.assertEqual(self.archive.readable(), True)
84+
self.assertEqual(self.archive._check_can_seek(), True)
85+
86+
87+
class TestTarFilesInfo(base.TestCase):
88+
89+
def setUp(self):
90+
self.tar_files_info = layers.TarFilesInfo()
91+
92+
def test__init__(self):
93+
self.assertEqual(type(self.tar_files_info.infos), list)
94+
95+
@mock.patch('docker_registry.lib.layers.serialize_tar_info')
96+
def test_append(self, serialize_tar_info):
97+
tar_info = ('test', True)
98+
serialize_tar_info.return_value = tar_info
99+
self.assertEqual(len(self.tar_files_info.infos), 0)
100+
self.assertEqual(self.tar_files_info.append('test'), None)
101+
self.assertNotEqual(len(self.tar_files_info.infos), 0)
102+
self.assertTrue(tar_info in self.tar_files_info.infos)
103+
104+
def test_json(self):
105+
self.assertEqual(type(self.tar_files_info.json()), str)
106+
self.assertEqual(self.tar_files_info.json(), '[]')
107+
108+
56109
class TestLayers(base.TestCase):
57110

58111
def setUp(self):
@@ -86,6 +139,22 @@ def test_info_serialization(self):
86139
assert sinfo[0] in self.filenames
87140
assert sinfo[1:] == ('f', False, 512, 0, 420, 0, 0)
88141

142+
tar_info = mock.MagicMock()
143+
expectations = [(".", "/"), ("./", "/"), ("./ab", "/ab")]
144+
for name_in, name_out in expectations:
145+
tar_info.name = name_in
146+
out = layers.serialize_tar_info(tar_info)
147+
self.assertEqual(out[0], name_out)
148+
self.assertEqual(out[2], False)
149+
tar_info.name = "./.wh..wh."
150+
self.assertEqual(layers.serialize_tar_info(tar_info), None)
151+
expectations = [("./.wh.", "/"), ("/.wh.", "/")]
152+
for name_in, name_out in expectations:
153+
tar_info.name = name_in
154+
out = layers.serialize_tar_info(tar_info)
155+
self.assertEqual(out[0], name_out)
156+
self.assertEqual(out[2], True)
157+
89158
def test_tar_serialization(self):
90159
tfobj = _get_tarfile(self.filenames)
91160
archive = layers.Archive(tfobj)
@@ -177,3 +246,9 @@ def test_image_diff_json(self):
177246
for type in ("deleted", "changed", "created"):
178247
assert type in diff
179248
assert type in diff[type]
249+
250+
@mock.patch('docker_registry.lib.layers.get_image_diff_cache')
251+
def test_get_image_diff_json(self, get_image_diff_cache):
252+
diff_json = 'test'
253+
get_image_diff_cache.return_value = diff_json
254+
self.assertEqual(layers.get_image_diff_json(1), diff_json)

0 commit comments

Comments
 (0)