1 # Copyright (c) 2017 Cable Television Laboratories, Inc. ("CableLabs")
2 # and others. All rights reserved.
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at:
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
17 from snaps.config.image import ImageConfigError, ImageConfig
20 class ImageConfigUnitTests(unittest.TestCase):
22 Tests the construction of the ImageConfig class
25 def test_no_params(self):
26 with self.assertRaises(ImageConfigError):
29 def test_empty_config(self):
30 with self.assertRaises(ImageConfigError):
33 def test_name_only(self):
34 with self.assertRaises(ImageConfigError):
35 ImageConfig(name='foo')
37 def test_config_with_name_only(self):
38 with self.assertRaises(ImageConfigError):
39 ImageConfig(**{'name': 'foo'})
41 def test_name_user_only(self):
42 with self.assertRaises(ImageConfigError):
43 ImageConfig(name='foo', image_user='bar')
45 def test_config_with_name_user_only(self):
46 with self.assertRaises(ImageConfigError):
47 ImageConfig(**{'name': 'foo', 'image_user': 'bar'})
49 def test_name_user_format_only(self):
50 with self.assertRaises(ImageConfigError):
51 ImageConfig(name='foo', image_user='bar', img_format='qcow2')
53 def test_config_with_name_user_format_only(self):
54 with self.assertRaises(ImageConfigError):
56 **{'name': 'foo', 'image_user': 'bar', 'format': 'qcow2'})
58 def test_name_user_format_url_only(self):
59 settings = ImageConfig(name='foo', image_user='bar',
60 img_format='qcow2', url='http://foo.com')
61 self.assertEqual('foo', settings.name)
62 self.assertEqual('bar', settings.image_user)
63 self.assertEqual('qcow2', settings.format)
64 self.assertEqual('http://foo.com', settings.url)
65 self.assertIsNone(settings.image_file)
66 self.assertFalse(settings.exists)
67 self.assertFalse(settings.public)
68 self.assertIsNone(settings.nic_config_pb_loc)
70 def test_name_user_format_url_only_properties(self):
71 properties = {'hw_video_model': 'vga'}
72 settings = ImageConfig(name='foo', image_user='bar',
73 img_format='qcow2', url='http://foo.com',
74 extra_properties=properties)
75 self.assertEqual('foo', settings.name)
76 self.assertEqual('bar', settings.image_user)
77 self.assertEqual('qcow2', settings.format)
78 self.assertEqual('http://foo.com', settings.url)
79 self.assertEqual(properties, settings.extra_properties)
80 self.assertIsNone(settings.image_file)
81 self.assertFalse(settings.exists)
82 self.assertFalse(settings.public)
83 self.assertIsNone(settings.nic_config_pb_loc)
85 def test_config_with_name_user_format_url_only(self):
86 settings = ImageConfig(
87 **{'name': 'foo', 'image_user': 'bar', 'format': 'qcow2',
88 'download_url': 'http://foo.com'})
89 self.assertEqual('foo', settings.name)
90 self.assertEqual('bar', settings.image_user)
91 self.assertEqual('qcow2', settings.format)
92 self.assertEqual('http://foo.com', settings.url)
93 self.assertIsNone(settings.image_file)
94 self.assertFalse(settings.exists)
95 self.assertFalse(settings.public)
96 self.assertIsNone(settings.nic_config_pb_loc)
98 def test_name_user_format_file_only(self):
99 settings = ImageConfig(name='foo', image_user='bar',
101 image_file='/foo/bar.qcow')
102 self.assertEqual('foo', settings.name)
103 self.assertEqual('bar', settings.image_user)
104 self.assertEqual('qcow2', settings.format)
105 self.assertIsNone(settings.url)
106 self.assertEqual('/foo/bar.qcow', settings.image_file)
107 self.assertFalse(settings.exists)
108 self.assertFalse(settings.public)
109 self.assertIsNone(settings.nic_config_pb_loc)
111 def test_config_with_name_user_format_file_only(self):
112 settings = ImageConfig(
113 **{'name': 'foo', 'image_user': 'bar', 'format': 'qcow2',
114 'image_file': '/foo/bar.qcow'})
115 self.assertEqual('foo', settings.name)
116 self.assertEqual('bar', settings.image_user)
117 self.assertEqual('qcow2', settings.format)
118 self.assertIsNone(settings.url)
119 self.assertEqual('/foo/bar.qcow', settings.image_file)
120 self.assertFalse(settings.exists)
121 self.assertFalse(settings.public)
122 self.assertIsNone(settings.nic_config_pb_loc)
124 def test_all_url(self):
125 properties = {'hw_video_model': 'vga'}
126 kernel_settings = ImageConfig(name='kernel', url='http://kernel.com',
127 image_user='bar', img_format='qcow2')
128 ramdisk_settings = ImageConfig(name='ramdisk',
129 url='http://ramdisk.com',
130 image_user='bar', img_format='qcow2')
131 settings = ImageConfig(name='foo', image_user='bar',
132 img_format='qcow2', url='http://foo.com',
133 extra_properties=properties,
134 nic_config_pb_loc='/foo/bar',
135 kernel_image_settings=kernel_settings,
136 ramdisk_image_settings=ramdisk_settings,
137 exists=True, public=True)
138 self.assertEqual('foo', settings.name)
139 self.assertEqual('bar', settings.image_user)
140 self.assertEqual('qcow2', settings.format)
141 self.assertEqual('http://foo.com', settings.url)
142 self.assertEqual(properties, settings.extra_properties)
143 self.assertIsNone(settings.image_file)
144 self.assertEqual('/foo/bar', settings.nic_config_pb_loc)
145 self.assertEqual('kernel', settings.kernel_image_settings.name)
146 self.assertEqual('http://kernel.com',
147 settings.kernel_image_settings.url)
148 self.assertEqual('bar', settings.kernel_image_settings.image_user)
149 self.assertEqual('qcow2', settings.kernel_image_settings.format)
150 self.assertEqual('ramdisk', settings.ramdisk_image_settings.name)
151 self.assertEqual('http://ramdisk.com',
152 settings.ramdisk_image_settings.url)
153 self.assertEqual('bar', settings.ramdisk_image_settings.image_user)
154 self.assertEqual('qcow2', settings.ramdisk_image_settings.format)
155 self.assertTrue(settings.exists)
156 self.assertTrue(settings.public)
158 def test_config_all_url(self):
159 settings = ImageConfig(
160 **{'name': 'foo', 'image_user': 'bar', 'format': 'qcow2',
161 'download_url': 'http://foo.com',
162 'extra_properties': '{\'hw_video_model\': \'vga\'}',
163 'nic_config_pb_loc': '/foo/bar',
164 'kernel_image_settings': {
166 'download_url': 'http://kernel.com',
169 'ramdisk_image_settings': {
171 'download_url': 'http://ramdisk.com',
174 'exists': True, 'public': True})
175 self.assertEqual('foo', settings.name)
176 self.assertEqual('bar', settings.image_user)
177 self.assertEqual('qcow2', settings.format)
178 self.assertEqual('http://foo.com', settings.url)
179 self.assertEqual('{\'hw_video_model\': \'vga\'}',
180 settings.extra_properties)
181 self.assertIsNone(settings.image_file)
182 self.assertEqual('/foo/bar', settings.nic_config_pb_loc)
183 self.assertEqual('kernel', settings.kernel_image_settings.name)
184 self.assertEqual('http://kernel.com',
185 settings.kernel_image_settings.url)
186 self.assertEqual('ramdisk', settings.ramdisk_image_settings.name)
187 self.assertEqual('http://ramdisk.com',
188 settings.ramdisk_image_settings.url)
189 self.assertTrue(settings.exists)
190 self.assertTrue(settings.public)
192 def test_all_file(self):
193 properties = {'hw_video_model': 'vga'}
194 settings = ImageConfig(name='foo', image_user='bar',
196 image_file='/foo/bar.qcow',
197 extra_properties=properties,
198 nic_config_pb_loc='/foo/bar', exists=True,
200 self.assertEqual('foo', settings.name)
201 self.assertEqual('bar', settings.image_user)
202 self.assertEqual('qcow2', settings.format)
203 self.assertIsNone(settings.url)
204 self.assertEqual('/foo/bar.qcow', settings.image_file)
205 self.assertEqual(properties, settings.extra_properties)
206 self.assertEqual('/foo/bar', settings.nic_config_pb_loc)
207 self.assertTrue(settings.exists)
208 self.assertTrue(settings.public)
210 def test_config_all_file(self):
211 settings = ImageConfig(
212 **{'name': 'foo', 'image_user': 'bar', 'format': 'qcow2',
213 'image_file': '/foo/bar.qcow',
214 'extra_properties': '{\'hw_video_model\' : \'vga\'}',
215 'nic_config_pb_loc': '/foo/bar', 'exists': True,
217 self.assertEqual('foo', settings.name)
218 self.assertEqual('bar', settings.image_user)
219 self.assertEqual('qcow2', settings.format)
220 self.assertIsNone(settings.url)
221 self.assertEqual('/foo/bar.qcow', settings.image_file)
222 self.assertEqual('{\'hw_video_model\' : \'vga\'}',
223 settings.extra_properties)
224 self.assertEqual('/foo/bar', settings.nic_config_pb_loc)
225 self.assertTrue(settings.exists)
226 self.assertTrue(settings.public)