371
371
def makeUploadWithPackageCopyJob(self, sourcepackagename=None):
372
372
"""Create a `PackageUpload` plus attached `PlainPackageCopyJob`."""
373
job_factory_args = {}
374
if sourcepackagename is not None:
375
job_factory_args['package_name'] = sourcepackagename.name
376
job_factory_args['package_version'] = '1.0'
377
job = self.factory.makePlainPackageCopyJob(**job_factory_args)
378
naked_job = removeSecurityProxy(job).context
379
upload = self.factory.makePackageUpload(package_copy_job=naked_job)
373
from lp.soyuz.model.packagecopyjob import IPackageCopyJobSource
374
upload = self.factory.makeCopyJobPackageUpload(
375
sourcepackagename=sourcepackagename)
376
return upload, getUtility(IPackageCopyJobSource).wrap(
377
upload.package_copy_job)
382
379
def test_package_copy_job_property(self):
383
380
# Test that we can set and get package_copy_job.
395
392
def test_overrideSource_with_copy_job(self):
396
393
# The overrides should be stored in the job's metadata.
397
394
pu, pcj = self.makeUploadWithPackageCopyJob()
395
old_component = getUtility(IComponentSet)[pcj.component_name]
398
396
component = getUtility(IComponentSet)['restricted']
399
397
section = getUtility(ISectionSet)['games']
401
expected_metadata = {
399
expected_metadata = {}
400
expected_metadata.update(pcj.metadata)
401
expected_metadata.update({
402
402
'component_override': component.name,
403
403
'section_override': section.name,
405
expected_metadata.update(pcj.metadata)
407
pu.overrideSource(component, section, allowed_components=[component])
406
result = pu.overrideSource(
407
component, section, allowed_components=[component, old_component])
409
self.assertTrue(result)
409
410
self.assertEqual(expected_metadata, pcj.metadata)
412
def test_overrideSource_checks_permission_for_old_component(self):
413
pu = self.factory.makeCopyJobPackageUpload()
414
only_allowed_component = self.factory.makeComponent()
415
section = self.factory.makeSection()
417
QueueInconsistentStateError,
419
only_allowed_component, section, [only_allowed_component])
421
def test_overrideSource_checks_permission_for_new_component(self):
422
pu, pcj = self.makeUploadWithPackageCopyJob()
423
current_component = getUtility(IComponentSet)[pcj.component_name]
424
disallowed_component = self.factory.makeComponent()
425
section = self.factory.makeSection()
427
QueueInconsistentStateError,
429
disallowed_component, section, [current_component])
411
431
def test_acceptFromQueue_with_copy_job(self):
412
432
# acceptFromQueue should accept the upload and resume the copy
414
434
pu, pcj = self.makeUploadWithPackageCopyJob()
435
pu.pocket = PackagePublishingPocket.RELEASE
415
436
self.assertEqual(PackageUploadStatus.NEW, pu.status)
418
438
pu.acceptFromQueue()
451
470
# An upload with a copy job takes its component and section
452
471
# names from the job.
453
472
spn = self.factory.makeSourcePackageName()
454
upload, job = self.makeUploadWithPackageCopyJob(sourcepackagename=spn)
473
upload, pcj = self.makeUploadWithPackageCopyJob(sourcepackagename=spn)
455
474
component = self.factory.makeComponent()
456
475
section = self.factory.makeSection()
457
job.addSourceOverride(SourceOverride(
458
source_package_name=spn, component=component, section=section))
476
pcj.addSourceOverride(SourceOverride(spn, component, section))
459
477
self.assertEqual(component.name, upload.component_name)
461
479
def test_displayname_is_package_name(self):