def test_policy_attributes(self):
     # Some attributes are expected to exist but vary between policies.
     insecure_policy = findPolicyByName("insecure")
     buildd_policy = findPolicyByName("buildd")
     self.assertFalse(insecure_policy.unsigned_changes_ok)
     self.assertTrue(buildd_policy.unsigned_changes_ok)
     self.assertFalse(insecure_policy.unsigned_dsc_ok)
     self.assertTrue(buildd_policy.unsigned_dsc_ok)
Exemple #2
0
 def test_policy_attributes(self):
     # Some attributes are expected to exist but vary between policies.
     insecure_policy = findPolicyByName("insecure")
     buildd_policy = findPolicyByName("buildd")
     self.assertFalse(insecure_policy.unsigned_changes_ok)
     self.assertTrue(buildd_policy.unsigned_changes_ok)
     self.assertFalse(insecure_policy.unsigned_dsc_ok)
     self.assertTrue(buildd_policy.unsigned_dsc_ok)
 def test_insecure_does_not_approve_proposed_post_release(self):
     # Uploads to the PROPOSED pocket are not auto-approved after
     # release.
     self.setHoaryStatus(SeriesStatus.CURRENT)
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary-proposed"))
     self.assertFalse(insecure_policy.autoApprove(make_fake_upload()))
 def test_insecure_does_not_approve_proposed_post_release(self):
     # Uploads to the PROPOSED pocket are not auto-approved after
     # release.
     self.setHoaryStatus(SeriesStatus.CURRENT)
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary-proposed"))
     self.assertFalse(insecure_policy.autoApprove(make_fake_upload()))
 def test_insecure_approves_proposed(self):
     # Uploads to the PROPOSED pocket of non-FROZEN distroseries are
     # approved by the insecure policy.
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary-proposed"))
     self.assertEqual(
         SeriesStatus.DEVELOPMENT, insecure_policy.distroseries.status)
     self.assertTrue(insecure_policy.autoApprove(make_fake_upload()))
 def test_insecure_approves_proposed(self):
     # Uploads to the PROPOSED pocket of non-FROZEN distroseries are
     # approved by the insecure policy.
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary-proposed"))
     self.assertEqual(SeriesStatus.DEVELOPMENT,
                      insecure_policy.distroseries.status)
     self.assertTrue(insecure_policy.autoApprove(make_fake_upload()))
 def test_buildd_approves_uefi_ppa(self):
     # Uploads to PPAs containing UEFI custom files are auto-approved.
     buildd_policy = findPolicyByName("buildd")
     uploadfile = CustomUploadFile("uefi.tar.gz", None, 0, "main/raw-uefi",
                                   "extra", buildd_policy, None)
     upload = make_fake_upload(binaryful=True, is_ppa=True)
     upload.changes = FakeChangesFile(custom_files=[uploadfile])
     self.assertTrue(buildd_policy.autoApprove(upload))
 def test_buildd_approves_uefi_ppa(self):
     # Uploads to PPAs containing UEFI custom files are auto-approved.
     buildd_policy = findPolicyByName("buildd")
     uploadfile = CustomUploadFile(
         "uefi.tar.gz", None, 0, "main/raw-uefi", "extra", buildd_policy,
         None)
     upload = make_fake_upload(binaryful=True, is_ppa=True)
     upload.changes = FakeChangesFile(custom_files=[uploadfile])
     self.assertTrue(buildd_policy.autoApprove(upload))
 def test_insecure_does_not_approve_frozen(self):
     # When the distroseries is FROZEN, uploads to the primary archive
     # wait in the UNAPPROVED queue, but PPA uploads are still approved.
     self.setHoaryStatus(SeriesStatus.FROZEN)
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary-proposed"))
     self.assertFalse(insecure_policy.autoApprove(make_fake_upload()))
     self.assertTrue(
         insecure_policy.autoApprove(make_fake_upload(is_ppa=True)))
 def test_insecure_does_not_approve_frozen(self):
     # When the distroseries is FROZEN, uploads to the primary archive
     # wait in the UNAPPROVED queue, but PPA uploads are still approved.
     self.setHoaryStatus(SeriesStatus.FROZEN)
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary-proposed"))
     self.assertFalse(insecure_policy.autoApprove(make_fake_upload()))
     self.assertTrue(insecure_policy.autoApprove(
         make_fake_upload(is_ppa=True)))
 def test_buildd_does_not_approve_uefi(self):
     # Uploads to the primary archive containing UEFI custom files are
     # not approved.
     buildd_policy = findPolicyByName("buildd")
     uploadfile = CustomUploadFile("uefi.tar.gz", None, 0, "main/raw-uefi",
                                   "extra", buildd_policy, None)
     upload = make_fake_upload(binaryful=True)
     upload.changes = FakeChangesFile(custom_files=[uploadfile])
     self.assertFalse(buildd_policy.autoApprove(upload))
 def getPolicy(distro, build):
     self.options.distro = distro.name
     policy = findPolicyByName(self.options.context)
     policy.setOptions(self.options)
     if self.options.builds:
         assert build, "--builds specified but no build"
         policy.distroseries = build.distro_series
         policy.pocket = build.pocket
         policy.archive = build.archive
     return policy
 def test_buildd_does_not_approve_uefi(self):
     # Uploads to the primary archive containing UEFI custom files are
     # not approved.
     buildd_policy = findPolicyByName("buildd")
     uploadfile = CustomUploadFile(
         "uefi.tar.gz", None, 0, "main/raw-uefi", "extra", buildd_policy,
         None)
     upload = make_fake_upload(binaryful=True)
     upload.changes = FakeChangesFile(custom_files=[uploadfile])
     self.assertFalse(buildd_policy.autoApprove(upload))
Exemple #14
0
 def getPolicy(distro, build):
     self.options.distro = distro.name
     policy = findPolicyByName(self.options.context)
     policy.setOptions(self.options)
     if self.options.builds:
         assert build, "--builds specified but no build"
         policy.distroseries = build.distro_series
         policy.pocket = build.pocket
         policy.archive = build.archive
     return policy
 def test_insecure_does_not_approve_updates(self):
     # Uploads to the UPDATES pocket are not auto-approved by the
     # insecure policy.  Despite not being allowed yet (see
     # UploadPolicy.checkUpload), PPA uploads to post-release pockets
     # would still be auto-approved.
     self.setHoaryStatus(SeriesStatus.CURRENT)
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary-updates"))
     self.assertFalse(insecure_policy.autoApprove(make_fake_upload()))
     self.assertTrue(
         insecure_policy.autoApprove(make_fake_upload(is_ppa=True)))
 def test_insecure_does_not_approve_updates(self):
     # Uploads to the UPDATES pocket are not auto-approved by the
     # insecure policy.  Despite not being allowed yet (see
     # UploadPolicy.checkUpload), PPA uploads to post-release pockets
     # would still be auto-approved.
     self.setHoaryStatus(SeriesStatus.CURRENT)
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary-updates"))
     self.assertFalse(insecure_policy.autoApprove(make_fake_upload()))
     self.assertTrue(insecure_policy.autoApprove(
         make_fake_upload(is_ppa=True)))
 def test_redirect_release_uploads_ppa(self):
     # The Distribution.redirect_release_uploads flag does not affect PPA
     # uploads.
     ubuntu = getUtility(IDistributionSet)["ubuntu"]
     with celebrity_logged_in("admin"):
         ubuntu.redirect_release_uploads = True
     flush_database_updates()
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.archive = self.factory.makeArchive()
     insecure_policy.setOptions(FakeOptions(distroseries="hoary"))
     self.assertEqual("hoary", insecure_policy.distroseries.name)
     self.assertEqual(PackagePublishingPocket.RELEASE,
                      insecure_policy.pocket)
 def test_redirect_release_uploads_ppa(self):
     # The Distribution.redirect_release_uploads flag does not affect PPA
     # uploads.
     ubuntu = getUtility(IDistributionSet)["ubuntu"]
     with celebrity_logged_in("admin"):
         ubuntu.redirect_release_uploads = True
     flush_database_updates()
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.archive = self.factory.makeArchive()
     insecure_policy.setOptions(FakeOptions(distroseries="hoary"))
     self.assertEqual("hoary", insecure_policy.distroseries.name)
     self.assertEqual(
         PackagePublishingPocket.RELEASE, insecure_policy.pocket)
 def test_redirect_release_uploads_primary(self):
     # With the insecure policy, the
     # Distribution.redirect_release_uploads flag causes uploads to the
     # RELEASE pocket to be automatically redirected to PROPOSED.
     ubuntu = getUtility(IDistributionSet)["ubuntu"]
     with celebrity_logged_in("admin"):
         ubuntu.redirect_release_uploads = True
     flush_database_updates()
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary"))
     self.assertEqual("hoary", insecure_policy.distroseries.name)
     self.assertEqual(
         PackagePublishingPocket.PROPOSED, insecure_policy.pocket)
 def test_redirect_release_uploads_primary(self):
     # With the insecure policy, the
     # Distribution.redirect_release_uploads flag causes uploads to the
     # RELEASE pocket to be automatically redirected to PROPOSED.
     ubuntu = getUtility(IDistributionSet)["ubuntu"]
     with celebrity_logged_in("admin"):
         ubuntu.redirect_release_uploads = True
     flush_database_updates()
     insecure_policy = findPolicyByName("insecure")
     insecure_policy.setOptions(FakeOptions(distroseries="hoary"))
     self.assertEqual("hoary", insecure_policy.distroseries.name)
     self.assertEqual(PackagePublishingPocket.PROPOSED,
                      insecure_policy.pocket)
    def uploadSourceVersion(self,
                            version,
                            policy='insecure',
                            archive=None,
                            distribution_name='ubuntu',
                            suite=None,
                            logger=None,
                            notify=False,
                            auto_accept=True):
        """Upload and publish a source package from the sandbox directory.

        See `_doUpload`.

        If 'auto_accept' is true, accept the upload if necessary and return
        the corresponding `ISourcePackagePublishingHistory` record. Otherwise
        return the corresponding `NascentUpload` object.
        """
        policy = findPolicyByName(policy)

        if logger is None:
            logger = BufferLogger()

        upload = self._doUpload('source', version, policy, archive,
                                distribution_name, suite, logger, notify)

        if not auto_accept:
            return upload

        if not upload.is_rejected:
            upload.do_accept(notify=notify)

        assert not upload.is_rejected, ("Upload was rejected: %s" %
                                        upload.rejection_message)

        queue_record = upload.queue_root
        needs_acceptance_statuses = (
            PackageUploadStatus.NEW,
            PackageUploadStatus.UNAPPROVED,
        )
        changesfile_path = self._getChangefilePathForVersion(version, 'source')
        if queue_record.status in needs_acceptance_statuses:
            queue_record.acceptFromUploader(changesfile_path, logger)

        return queue_record.archive.getPublishedSources(
            name=self.name, version=version, exact_match=True).first()
    def uploadSourceVersion(self, version, policy='insecure', archive=None,
                            distribution_name='ubuntu', suite=None,
                            logger=None, notify=False, auto_accept=True):
        """Upload and publish a source package from the sandbox directory.

        See `_doUpload`.

        If 'auto_accept' is true, accept the upload if necessary and return
        the corresponding `ISourcePackagePublishingHistory` record. Otherwise
        return the corresponding `NascentUpload` object.
        """
        policy = findPolicyByName(policy)

        if logger is None:
            logger = BufferLogger()

        upload = self._doUpload(
            'source', version, policy, archive, distribution_name, suite,
            logger, notify)

        if not auto_accept:
            return upload

        if not upload.is_rejected:
            upload.do_accept(notify=notify)

        assert not upload.is_rejected, (
            "Upload was rejected: %s" % upload.rejection_message)

        queue_record = upload.queue_root
        needs_acceptance_statuses = (
            PackageUploadStatus.NEW,
            PackageUploadStatus.UNAPPROVED,
            )
        changesfile_path = self._getChangefilePathForVersion(
            version, 'source')
        if queue_record.status in needs_acceptance_statuses:
            queue_record.acceptFromUploader(changesfile_path, logger)

        return queue_record.archive.getPublishedSources(
            name=self.name, version=version, exact_match=True).first()
 def test_findPolicyByName_returns_instance(self):
     # There is a helper function that returns an instance of the policy
     # with the given name.  It is preferred over using getUtility()
     # directly.
     insecure_policy = findPolicyByName("insecure")
     self.assertIsInstance(insecure_policy, InsecureUploadPolicy)
 def test_setOptions_distroseries_name(self):
     # If a distroseries name is set, the policy picks it up from option.
     buildd_policy = findPolicyByName("buildd")
     buildd_policy.setOptions(FakeOptions(distroseries="hoary"))
     self.assertEqual("hoary", buildd_policy.distroseries.name)
 def test_setOptions_distro_name(self):
     # Policies pick up the distribution name from options.
     for policy_name in "insecure", "buildd":
         policy = findPolicyByName(policy_name)
         policy.setOptions(FakeOptions())
         self.assertEqual("ubuntu", policy.distro.name)
 def test_policy_names(self):
     self.assertEqual("insecure", findPolicyByName("insecure").name)
     self.assertEqual("buildd", findPolicyByName("buildd").name)
Exemple #27
0
def getPolicy(name='anything', distro='ubuntu', distroseries=None):
    """Build and return an Upload Policy for the given context."""
    policy = findPolicyByName(name)
    options = MockUploadOptions(distro, distroseries)
    policy.setOptions(options)
    return policy
def getPolicy(name='anything', distro='ubuntu', distroseries=None):
    """Build and return an Upload Policy for the given context."""
    policy = findPolicyByName(name)
    options = MockUploadOptions(distro, distroseries)
    policy.setOptions(options)
    return policy
 def test_findPolicyByName_returns_instance(self):
     # There is a helper function that returns an instance of the policy
     # with the given name.  It is preferred over using getUtility()
     # directly.
     insecure_policy = findPolicyByName("insecure")
     self.assertIsInstance(insecure_policy, InsecureUploadPolicy)
 def test_policy_names(self):
     self.assertEqual("insecure", findPolicyByName("insecure").name)
     self.assertEqual("buildd", findPolicyByName("buildd").name)
 def test_setOptions_distro_name(self):
     # Policies pick up the distribution name from options.
     for policy_name in "insecure", "buildd":
         policy = findPolicyByName(policy_name)
         policy.setOptions(FakeOptions())
         self.assertEqual("ubuntu", policy.distro.name)
 def test_setOptions_distroseries_name(self):
     # If a distroseries name is set, the policy picks it up from option.
     buildd_policy = findPolicyByName("buildd")
     buildd_policy.setOptions(FakeOptions(distroseries="hoary"))
     self.assertEqual("hoary", buildd_policy.distroseries.name)