40
40
arch = factory.make_name('arch')
41
41
subarch = factory.make_name('subarch')
42
42
architecture = '%s/%s' % (arch, subarch)
43
resource = factory.make_boot_resource(
43
resource = factory.make_BootResource(
44
44
rtype=rtype, name=name, architecture=architecture)
45
45
return resource, (arch, subarch)
179
179
name = '%s/%s' % (os, series)
180
180
resource = factory.make_usable_boot_resource(
181
181
rtype=BOOT_RESOURCE_TYPE.SYNCED, name=name)
182
not_commissionable = factory.make_boot_resource(
182
not_commissionable = factory.make_BootResource(
183
183
rtype=BOOT_RESOURCE_TYPE.SYNCED, name=name)
184
factory.make_boot_resource_set(not_commissionable)
184
factory.make_BootResourceSet(not_commissionable)
185
185
commissionables = BootResource.objects.get_commissionable_resource(
187
187
self.assertItemsEqual([resource], commissionables)
280
280
"""Tests for the `BootResource` model."""
282
282
def make_complete_boot_resource_set(self, resource):
283
resource_set = factory.make_boot_resource_set(resource)
283
resource_set = factory.make_BootResourceSet(resource)
284
284
filename = factory.make_name('name')
285
285
filetype = factory.pick_enum(BOOT_RESOURCE_FILE_TYPE)
286
largefile = factory.make_large_file()
287
factory.make_boot_resource_file(
286
largefile = factory.make_LargeFile()
287
factory.make_BootResourceFile(
288
288
resource_set, largefile, filename=filename, filetype=filetype)
289
289
return resource_set
291
291
def test_validation_raises_error_on_missing_subarch(self):
292
292
arch = factory.make_name('arch')
293
293
self.assertRaises(
294
ValidationError, factory.make_boot_resource, architecture=arch)
294
ValidationError, factory.make_BootResource, architecture=arch)
296
296
def test_validation_raises_error_on_invalid_name_for_synced(self):
297
297
name = factory.make_name('name')
326
326
factory.make_name('os'), factory.make_name('series'))
327
327
arch = '%s/%s' % (
328
328
factory.make_name('arch'), factory.make_name('subarch'))
329
factory.make_boot_resource(
329
factory.make_BootResource(
330
330
rtype=BOOT_RESOURCE_TYPE.SYNCED,
331
331
name=name, architecture=arch)
332
332
self.assertRaises(
334
factory.make_boot_resource,
334
factory.make_BootResource,
335
335
rtype=BOOT_RESOURCE_TYPE.GENERATED, name=name, architecture=arch)
337
337
def test_display_rtype(self):
343
343
arch = factory.make_name('arch')
344
344
subarch = factory.make_name('subarch')
345
345
architecture = '%s/%s' % (arch, subarch)
346
resource = factory.make_boot_resource(architecture=architecture)
346
resource = factory.make_BootResource(architecture=architecture)
347
347
self.assertEqual([arch, subarch], resource.split_arch())
349
349
def test_get_latest_set(self):
350
resource = factory.make_boot_resource()
351
factory.make_boot_resource_set(resource)
352
latest_two = factory.make_boot_resource_set(resource)
350
resource = factory.make_BootResource()
351
factory.make_BootResourceSet(resource)
352
latest_two = factory.make_BootResourceSet(resource)
353
353
self.assertEqual(latest_two, resource.get_latest_set())
355
355
def test_get_latest_complete_set(self):
356
resource = factory.make_boot_resource()
357
factory.make_boot_resource_set(resource)
356
resource = factory.make_BootResource()
357
factory.make_BootResourceSet(resource)
358
358
self.make_complete_boot_resource_set(resource)
359
359
latest_complete = self.make_complete_boot_resource_set(resource)
360
factory.make_boot_resource_set(resource)
360
factory.make_BootResourceSet(resource)
361
361
self.assertEqual(latest_complete, resource.get_latest_complete_set())
363
363
def configure_now(self):
368
368
def test_get_next_version_name_returns_current_date(self):
369
369
expected_version = self.configure_now()
370
resource = factory.make_boot_resource()
370
resource = factory.make_BootResource()
371
371
self.assertEqual(expected_version, resource.get_next_version_name())
373
373
def test_get_next_version_name_returns_first_revision(self):
374
374
expected_version = '%s.1' % self.configure_now()
375
resource = factory.make_boot_resource()
376
factory.make_boot_resource_set(
375
resource = factory.make_BootResource()
376
factory.make_BootResourceSet(
377
377
resource, version=resource.get_next_version_name())
378
378
self.assertEqual(expected_version, resource.get_next_version_name())
380
380
def test_get_next_version_name_returns_later_revision(self):
381
381
expected_version = self.configure_now()
382
382
set_count = random.randint(2, 4)
383
resource = factory.make_boot_resource()
383
resource = factory.make_BootResource()
384
384
for _ in range(set_count):
385
factory.make_boot_resource_set(
385
factory.make_BootResourceSet(
386
386
resource, version=resource.get_next_version_name())
387
387
self.assertEqual(
388
388
'%s.%d' % (expected_version, set_count),
392
392
arch = factory.make_name('arch')
393
393
subarch = factory.make_name('subarch')
394
394
architecture = '%s/%s' % (arch, subarch)
395
resource = factory.make_boot_resource(architecture=architecture)
395
resource = factory.make_BootResource(architecture=architecture)
396
396
self.assertTrue(resource.supports_subarch(subarch))
398
398
def test_supports_subarch_returns_False_if_subarches_is_missing(self):
399
resource = factory.make_boot_resource()
399
resource = factory.make_BootResource()
400
400
self.assertFalse(
401
401
resource.supports_subarch(factory.make_name('subarch')))
403
403
def test_supports_subarch_returns_True_if_subarch_in_subarches(self):
404
404
subarches = [factory.make_name('subarch') for _ in range(3)]
405
405
subarch = random.choice(subarches)
406
resource = factory.make_boot_resource(
406
resource = factory.make_BootResource(
407
407
extra={'subarches': ','.join(subarches)})
408
408
self.assertTrue(resource.supports_subarch(subarch))
410
410
def test_supports_subarch_returns_False_if_subarch_not_in_subarches(self):
411
411
subarches = [factory.make_name('subarch') for _ in range(3)]
412
resource = factory.make_boot_resource(
412
resource = factory.make_BootResource(
413
413
extra={'subarches': ','.join(subarches)})
414
414
self.assertFalse(
415
415
resource.supports_subarch(factory.make_name('subarch')))