Skip to content

Commit 556397a

Browse files
committed
Refactor TestImageCreate with FakeImage class
Change-Id: I0044df36bb4d761c7998dfc8aa9a86d21d81da83 Implements: blueprint improve-image-unittest-framework
1 parent 50e52f3 commit 556397a

2 files changed

Lines changed: 64 additions & 53 deletions

File tree

openstackclient/tests/image/v2/fakes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ def create_one_image(attrs={}):
195195
'owner': 'image-owner' + uuid.uuid4().hex,
196196
'protected': bool(random.choice([0, 1])),
197197
'visibility': random.choice(['public', 'private']),
198-
'tags': [uuid.uuid4().hex for r in range(random.randint(1, 5))],
198+
'tags': [uuid.uuid4().hex for r in range(2)],
199199
}
200200

201201
# Overwrite default attributes if there are some attributes set

openstackclient/tests/image/v2/test_image.py

Lines changed: 63 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,12 @@ class TestImageCreate(TestImage):
5555
def setUp(self):
5656
super(TestImageCreate, self).setUp()
5757

58-
self.images_mock.create.return_value = fakes.FakeResource(
59-
None,
60-
copy.deepcopy(image_fakes.IMAGE),
61-
loaded=True,
62-
)
58+
self.new_image = image_fakes.FakeImage.create_one_image()
59+
self.images_mock.create.return_value = self.new_image
6360
# This is the return value for utils.find_resource()
64-
self.images_mock.get.return_value = copy.deepcopy(image_fakes.IMAGE)
65-
self.images_mock.update.return_value = fakes.FakeResource(
66-
None,
67-
copy.deepcopy(image_fakes.IMAGE),
68-
loaded=True,
69-
)
61+
self.images_mock.get.return_value = copy.deepcopy(
62+
image_fakes.FakeImage.get_image_info(self.new_image))
63+
self.images_mock.update.return_value = self.new_image
7064

7165
# Get the command object to test
7266
self.cmd = image.CreateImage(self.app, None)
@@ -77,12 +71,12 @@ def test_image_reserve_no_options(self):
7771
}
7872
self.images_mock.configure_mock(**mock_exception)
7973
arglist = [
80-
image_fakes.image_name,
74+
self.new_image.name
8175
]
8276
verifylist = [
8377
('container_format', image.DEFAULT_CONTAINER_FORMAT),
8478
('disk_format', image.DEFAULT_DISK_FORMAT),
85-
('name', image_fakes.image_name),
79+
('name', self.new_image.name),
8680
]
8781
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
8882

@@ -91,7 +85,7 @@ def test_image_reserve_no_options(self):
9185

9286
# ImageManager.create(name=, **)
9387
self.images_mock.create.assert_called_with(
94-
name=image_fakes.image_name,
88+
name=self.new_image.name,
9589
container_format=image.DEFAULT_CONTAINER_FORMAT,
9690
disk_format=image.DEFAULT_DISK_FORMAT,
9791
)
@@ -103,8 +97,12 @@ def test_image_reserve_no_options(self):
10397
mock.ANY, mock.ANY,
10498
)
10599

106-
self.assertEqual(image_fakes.IMAGE_columns, columns)
107-
self.assertEqual(image_fakes.IMAGE_SHOW_data, data)
100+
self.assertEqual(
101+
image_fakes.FakeImage.get_image_columns(self.new_image),
102+
columns)
103+
self.assertEqual(
104+
image_fakes.FakeImage.get_image_data(self.new_image),
105+
data)
108106

109107
@mock.patch('glanceclient.common.utils.get_data_file', name='Open')
110108
def test_image_reserve_options(self, mock_open):
@@ -120,22 +118,24 @@ def test_image_reserve_options(self, mock_open):
120118
'--disk-format', 'fs',
121119
'--min-disk', '10',
122120
'--min-ram', '4',
123-
'--owner', '123456',
124-
'--protected',
125-
'--private',
126-
image_fakes.image_name,
121+
'--owner', self.new_image.owner,
122+
('--protected'
123+
if self.new_image.protected else '--unprotected'),
124+
('--private'
125+
if self.new_image.visibility == 'private' else '--public'),
126+
self.new_image.name,
127127
]
128128
verifylist = [
129129
('container_format', 'ovf'),
130130
('disk_format', 'fs'),
131131
('min_disk', 10),
132132
('min_ram', 4),
133-
('owner', '123456'),
134-
('protected', True),
135-
('unprotected', False),
136-
('public', False),
137-
('private', True),
138-
('name', image_fakes.image_name),
133+
('owner', self.new_image.owner),
134+
('protected', self.new_image.protected),
135+
('unprotected', not self.new_image.protected),
136+
('public', self.new_image.visibility == 'public'),
137+
('private', self.new_image.visibility == 'private'),
138+
('name', self.new_image.name),
139139
]
140140
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
141141

@@ -144,14 +144,14 @@ def test_image_reserve_options(self, mock_open):
144144

145145
# ImageManager.create(name=, **)
146146
self.images_mock.create.assert_called_with(
147-
name=image_fakes.image_name,
147+
name=self.new_image.name,
148148
container_format='ovf',
149149
disk_format='fs',
150150
min_disk=10,
151151
min_ram=4,
152-
owner='123456',
153-
protected=True,
154-
visibility='private',
152+
owner=self.new_image.owner,
153+
protected=self.new_image.protected,
154+
visibility=self.new_image.visibility,
155155
)
156156

157157
# Verify update() was not called, if it was show the args
@@ -161,38 +161,45 @@ def test_image_reserve_options(self, mock_open):
161161
mock.ANY, mock.ANY,
162162
)
163163

164-
self.assertEqual(image_fakes.IMAGE_columns, columns)
165-
self.assertEqual(image_fakes.IMAGE_SHOW_data, data)
164+
self.assertEqual(
165+
image_fakes.FakeImage.get_image_columns(self.new_image),
166+
columns)
167+
self.assertEqual(
168+
image_fakes.FakeImage.get_image_data(self.new_image),
169+
data)
166170

167171
@mock.patch('glanceclient.common.utils.get_data_file', name='Open')
168172
def test_image_create_file(self, mock_open):
169173
mock_file = mock.MagicMock(name='File')
170174
mock_open.return_value = mock_file
171-
mock_open.read.return_value = image_fakes.IMAGE_data
175+
mock_open.read.return_value = (
176+
image_fakes.FakeImage.get_image_data(self.new_image))
172177
mock_exception = {
173178
'find.side_effect': exceptions.CommandError('x'),
174179
}
175180
self.images_mock.configure_mock(**mock_exception)
176181

177182
arglist = [
178183
'--file', 'filer',
179-
'--unprotected',
180-
'--public',
184+
('--unprotected'
185+
if not self.new_image.protected else '--protected'),
186+
('--public'
187+
if self.new_image.visibility == 'public' else '--private'),
181188
'--property', 'Alpha=1',
182189
'--property', 'Beta=2',
183-
'--tag', 'awesome',
184-
'--tag', 'better',
185-
image_fakes.image_name,
190+
'--tag', self.new_image.tags[0],
191+
'--tag', self.new_image.tags[1],
192+
self.new_image.name,
186193
]
187194
verifylist = [
188195
('file', 'filer'),
189-
('protected', False),
190-
('unprotected', True),
191-
('public', True),
192-
('private', False),
196+
('protected', self.new_image.protected),
197+
('unprotected', not self.new_image.protected),
198+
('public', self.new_image.visibility == 'public'),
199+
('private', self.new_image.visibility == 'private'),
193200
('properties', {'Alpha': '1', 'Beta': '2'}),
194-
('tags', ['awesome', 'better']),
195-
('name', image_fakes.image_name),
201+
('tags', self.new_image.tags),
202+
('name', self.new_image.name),
196203
]
197204
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
198205

@@ -201,14 +208,14 @@ def test_image_create_file(self, mock_open):
201208

202209
# ImageManager.create(name=, **)
203210
self.images_mock.create.assert_called_with(
204-
name=image_fakes.image_name,
211+
name=self.new_image.name,
205212
container_format=image.DEFAULT_CONTAINER_FORMAT,
206213
disk_format=image.DEFAULT_DISK_FORMAT,
207-
protected=False,
208-
visibility='public',
214+
protected=self.new_image.protected,
215+
visibility=self.new_image.visibility,
209216
Alpha='1',
210217
Beta='2',
211-
tags=['awesome', 'better'],
218+
tags=self.new_image.tags,
212219
)
213220

214221
# Verify update() was not called, if it was show the args
@@ -218,17 +225,21 @@ def test_image_create_file(self, mock_open):
218225
mock.ANY, mock.ANY,
219226
)
220227

221-
self.assertEqual(image_fakes.IMAGE_columns, columns)
222-
self.assertEqual(image_fakes.IMAGE_SHOW_data, data)
228+
self.assertEqual(
229+
image_fakes.FakeImage.get_image_columns(self.new_image),
230+
columns)
231+
self.assertEqual(
232+
image_fakes.FakeImage.get_image_data(self.new_image),
233+
data)
223234

224235
def test_image_create_dead_options(self):
225236

226237
arglist = [
227238
'--store', 'somewhere',
228-
image_fakes.image_name,
239+
self.new_image.name,
229240
]
230241
verifylist = [
231-
('name', image_fakes.image_name),
242+
('name', self.new_image.name),
232243
]
233244
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
234245

0 commit comments

Comments
 (0)