Exemple #1
0
 def test_bump_version_in_model(self, mock_sign_file):
     # We want to make sure each file has been signed.
     self.file2 = amo.tests.file_factory(version=self.version)
     self.file2.update(filename='jetpack-b.xpi')
     backup_file2_path = u'{0}.backup_signature'.format(
         self.file2.file_path)
     try:
         with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                                  self.file_.file_path):
             with amo.tests.copy_file(
                     'apps/files/fixtures/files/jetpack.xpi',
                     self.file2.file_path):
                 file_hash = self.file_.generate_hash()
                 file2_hash = self.file2.generate_hash()
                 assert self.version.version == '1.3'
                 assert self.version.version_int == version_int('1.3')
                 tasks.sign_addons([self.addon.pk])
                 assert mock_sign_file.call_count == 2
                 self.version.reload()
                 assert self.version.version == '1.3.1-signed'
                 assert self.version.version_int == version_int(
                     '1.3.1-signed')
                 assert file_hash != self.file_.generate_hash()
                 assert file2_hash != self.file2.generate_hash()
                 self.assert_backup()
                 assert os.path.exists(backup_file2_path)
     finally:
         if os.path.exists(backup_file2_path):
             os.unlink(backup_file2_path)
Exemple #2
0
 def test_bump_version_in_model(self, mock_sign_file):
     # We want to make sure each file has been signed.
     self.file2 = amo.tests.file_factory(version=self.version)
     self.file2.update(filename='jetpack-b.xpi')
     backup_file2_path = u'{0}.backup_signature'.format(
         self.file2.file_path)
     try:
         with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                                  self.file_.file_path):
             with amo.tests.copy_file(
                     'apps/files/fixtures/files/jetpack.xpi',
                     self.file2.file_path):
                 file_hash = self.file_.generate_hash()
                 file2_hash = self.file2.generate_hash()
                 assert self.version.version == '1.3'
                 assert self.version.version_int == version_int('1.3')
                 tasks.sign_addons([self.addon.pk])
                 assert mock_sign_file.call_count == 2
                 self.version.reload()
                 assert self.version.version == '1.3.1-signed'
                 assert self.version.version_int == version_int(
                     '1.3.1-signed')
                 assert file_hash != self.file_.generate_hash()
                 assert file2_hash != self.file2.generate_hash()
                 self.assert_backup()
                 assert os.path.exists(backup_file2_path)
     finally:
         if os.path.exists(backup_file2_path):
             os.unlink(backup_file2_path)
Exemple #3
0
 def test_sign_full(self, mock_sign_file):
     """Use the full signing server if files are fully reviewed."""
     self.file_.update(status=amo.STATUS_PUBLIC)
     with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                              self.file_.file_path):
         tasks.sign_addons([self.addon.pk])
         mock_sign_file.assert_called_with(self.file_,
                                           settings.SIGNING_SERVER)
Exemple #4
0
 def test_bump_version_in_model(self, mock_sign_file):
     with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                              self.file1.file_path):
         assert self.version.version == '1.3'
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3.1'
Exemple #5
0
 def test_sign_prelim(self, mock_sign_file):
     """Use the prelim signing server if files aren't fully reviewed."""
     self.file_.update(status=amo.STATUS_LITE)
     with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                              self.file_.file_path):
         tasks.sign_addons([self.addon.pk])
         mock_sign_file.assert_called_with(
             self.file_, settings.PRELIMINARY_SIGNING_SERVER)
Exemple #6
0
 def test_resign_bump_version_in_model_if_force(self, mock_sign_file):
     with amo.tests.copy_file(
             'apps/files/fixtures/files/new-addon-signature.xpi',
             self.file1.file_path):
         assert self.version.version == '1.3'
         tasks.sign_addons([self.addon.pk], force=True)
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3.1'
Exemple #7
0
 def test_sign_full(self, mock_sign_file):
     """Use the full signing server if files are fully reviewed."""
     self.file_.update(status=amo.STATUS_PUBLIC)
     with amo.tests.copy_file(
             'apps/files/fixtures/files/jetpack.xpi',
             self.file_.file_path):
         tasks.sign_addons([self.addon.pk])
         mock_sign_file.assert_called_with(
             self.file_, settings.SIGNING_SERVER)
Exemple #8
0
 def test_sign_prelim(self, mock_sign_file):
     """Use the prelim signing server if files aren't fully reviewed."""
     self.file_.update(status=amo.STATUS_LITE)
     with amo.tests.copy_file(
             'apps/files/fixtures/files/jetpack.xpi',
             self.file_.file_path):
         tasks.sign_addons([self.addon.pk])
         mock_sign_file.assert_called_with(
             self.file_, settings.PRELIMINARY_SIGNING_SERVER)
Exemple #9
0
 def test_sign_supported_applications(self, mock_sign_file):
     """Make sure we sign for all supported applications."""
     with amo.tests.copy_file(
             'apps/files/fixtures/files/jetpack.xpi',
             self.file_.file_path):
         for app in packaged.SIGN_FOR_APPS:
             self.max_appversion.update(application=app)
             tasks.sign_addons([self.addon.pk])
             mock_sign_file.assert_called_with(
                 self.file_, settings.SIGNING_SERVER)
             mock_sign_file.reset_mock()
Exemple #10
0
 def test_dont_sign_dont_bump_version_bad_zipfile(self, mock_sign_file):
     with amo.tests.copy_file(__file__, self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         tasks.sign_addons([self.addon.pk])
         assert not mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         assert file_hash == self.file_.generate_hash()
         self.assert_no_backup()
Exemple #11
0
 def test_dont_sign_dont_bump_version_bad_zipfile(self, mock_sign_file):
     with amo.tests.copy_file(__file__, self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         tasks.sign_addons([self.addon.pk])
         assert not mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         assert file_hash == self.file_.generate_hash()
         self.assert_no_backup()
Exemple #12
0
 def test_dont_sign_dont_bump_sign_error(self, mock_sign_file):
     mock_sign_file.side_effect = IOError()
     with amo.tests.copy_file("apps/files/fixtures/files/jetpack.xpi", self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == "1.3"
         assert self.version.version_int == version_int("1.3")
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == "1.3"
         assert self.version.version_int == version_int("1.3")
         assert file_hash == self.file_.generate_hash()
         self.assert_no_backup()
Exemple #13
0
 def test_dont_bump_not_signed(self, mock_sign_file):
     mock_sign_file.return_value = None  # Pretend we didn't sign.
     with amo.tests.copy_file("apps/files/fixtures/files/jetpack.xpi", self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == "1.3"
         assert self.version.version_int == version_int("1.3")
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == "1.3"
         assert self.version.version_int == version_int("1.3")
         assert file_hash == self.file_.generate_hash()
         self.assert_no_backup()
Exemple #14
0
 def test_resign_bump_version_in_model_if_force(self, mock_sign_file):
     with amo.tests.copy_file("apps/files/fixtures/files/new-addon-signature.xpi", self.file_.file_path):
         self.file_.update(is_signed=True)
         file_hash = self.file_.generate_hash()
         assert self.version.version == "1.3"
         assert self.version.version_int == version_int("1.3")
         tasks.sign_addons([self.addon.pk], force=True)
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == "1.3.1-signed"
         assert self.version.version_int == version_int("1.3.1-signed")
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #15
0
 def test_dont_bump_not_signed(self, mock_sign_file):
     mock_sign_file.return_value = None  # Pretend we didn't sign.
     with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                              self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         assert file_hash == self.file_.generate_hash()
         self.assert_no_backup()
Exemple #16
0
 def test_dont_sign_dont_bump_sign_error(self, mock_sign_file):
     mock_sign_file.side_effect = IOError()
     with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                              self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         assert file_hash == self.file_.generate_hash()
         self.assert_no_backup()
Exemple #17
0
 def test_sign_bump_new_versions_not_default_compat(self, mock_sign_file):
     """Sign files which are recent, event if not default to compatible."""
     with amo.tests.copy_file("apps/files/fixtures/files/jetpack.xpi", self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == "1.3"
         assert self.version.version_int == version_int("1.3")
         self.file_.update(binary_components=True, strict_compatibility=True)
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == "1.3.1-signed"
         assert self.version.version_int == version_int("1.3.1-signed")
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #18
0
 def test_sign_bump_non_ascii_version(self, mock_sign_file):
     """Sign versions which have non-ascii version numbers."""
     self.version.update(version=u"é1.3")
     with amo.tests.copy_file("apps/files/fixtures/files/jetpack.xpi", self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == u"é1.3"
         assert self.version.version_int == version_int("1.3")
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == u"é1.3.1-signed"
         assert self.version.version_int == version_int(u"é1.3.1-signed")
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #19
0
 def test_sign_bump_old_versions_default_compat(self, mock_sign_file):
     """Sign files which are old, but default to compatible."""
     with amo.tests.copy_file("apps/files/fixtures/files/jetpack.xpi", self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == "1.3"
         assert self.version.version_int == version_int("1.3")
         self.set_max_appversion(settings.MIN_D2C_VERSION)
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == "1.3.1-signed"
         assert self.version.version_int == version_int("1.3.1-signed")
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #20
0
    def handle(self, *args, **options):
        if len(args) == 0:  # Sign all the addons?
            raise CommandError(
                'Please provide at least one addon id to sign. If you want to '
                'sign them all, use the "process_addons --task sign_addons" '
                'management command.')
        full_server = options.get('signing_server') or settings.SIGNING_SERVER
        prelim_server = (options.get('preliminary_signing_server') or
                         settings.PRELIMINARY_SIGNING_SERVER)

        addon_ids = [int(addon_id) for addon_id in args]
        with override_settings(
                SIGNING_SERVER=full_server,
                PRELIMINARY_SIGNING_SERVER=prelim_server):
            sign_addons(addon_ids, force=options['force'])
Exemple #21
0
 def test_sign_bump_old_versions_default_compat(self, mock_sign_file):
     """Sign files which are old, but default to compatible."""
     with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                              self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         self.set_max_appversion(settings.MIN_D2C_VERSION)
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3.1-signed'
         assert self.version.version_int == version_int('1.3.1-signed')
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #22
0
 def test_sign_bump_non_ascii_version(self, mock_sign_file):
     """Sign versions which have non-ascii version numbers."""
     self.version.update(version=u'é1.3')
     with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                              self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == u'é1.3'
         assert self.version.version_int == version_int('1.3')
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == u'é1.3.1-signed'
         assert self.version.version_int == version_int(u'é1.3.1-signed')
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #23
0
 def test_resign_bump_version_in_model_if_force(self, mock_sign_file):
     with amo.tests.copy_file(
             'apps/files/fixtures/files/new-addon-signature.xpi',
             self.file_.file_path):
         self.file_.update(is_signed=True)
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         tasks.sign_addons([self.addon.pk], force=True)
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3.1-signed'
         assert self.version.version_int == version_int('1.3.1-signed')
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #24
0
 def test_no_bump_unreviewed(self, mock_sign_file):
     """Don't bump nor sign unreviewed files."""
     for status in amo.UNREVIEWED_STATUSES + (amo.STATUS_BETA,):
         self.file_.update(status=amo.STATUS_UNREVIEWED)
         with amo.tests.copy_file("apps/files/fixtures/files/jetpack.xpi", self.file_.file_path):
             file_hash = self.file_.generate_hash()
             assert self.version.version == "1.3"
             assert self.version.version_int == version_int("1.3")
             tasks.sign_addons([self.addon.pk])
             assert not mock_sign_file.called
             self.version.reload()
             assert self.version.version == "1.3"
             assert self.version.version_int == version_int("1.3")
             assert file_hash == self.file_.generate_hash()
             self.assert_no_backup()
Exemple #25
0
 def test_dont_resign_dont_bump_version_in_model(self, mock_sign_file):
     with amo.tests.copy_file(
             'apps/files/fixtures/files/new-addon-signature.xpi',
             self.file_.file_path):
         self.file_.update(is_signed=True)
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         tasks.sign_addons([self.addon.pk])
         assert not mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         assert file_hash == self.file_.generate_hash()
         self.assert_no_backup()
Exemple #26
0
    def test_dont_sign_dont_bump_other_applications(self, mock_sign_file):
        """Don't sign files which are for applications we don't sign for."""
        with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                                 self.file_.file_path):
            file_hash = self.file_.generate_hash()
            assert self.version.version == '1.3'
            assert self.version.version_int == version_int('1.3')

            apps_without_signing = [app for app in amo.APPS_ALL.keys()
                                    if app not in packaged.SIGN_FOR_APPS]

            for app in apps_without_signing:
                self.max_appversion.update(application=app)
                tasks.sign_addons([self.addon.pk])
                self.assert_not_signed(mock_sign_file, file_hash)
Exemple #27
0
 def test_sign_bump_non_ascii_filename(self, mock_sign_file):
     """Sign files which have non-ascii filenames."""
     self.file_.update(filename=u'jétpack.xpi')
     with amo.tests.copy_file(
             'apps/files/fixtures/files/jetpack.xpi',
             self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3.1-signed'
         assert self.version.version_int == version_int('1.3.1-signed')
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #28
0
 def test_no_bump_unreviewed(self, mock_sign_file):
     """Don't bump nor sign unreviewed files."""
     for status in (amo.UNREVIEWED_STATUSES + (amo.STATUS_BETA, )):
         self.file_.update(status=amo.STATUS_UNREVIEWED)
         with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                                  self.file_.file_path):
             file_hash = self.file_.generate_hash()
             assert self.version.version == '1.3'
             assert self.version.version_int == version_int('1.3')
             tasks.sign_addons([self.addon.pk])
             assert not mock_sign_file.called
             self.version.reload()
             assert self.version.version == '1.3'
             assert self.version.version_int == version_int('1.3')
             assert file_hash == self.file_.generate_hash()
             self.assert_no_backup()
Exemple #29
0
 def test_sign_bump_new_versions_not_default_compat(self, mock_sign_file):
     """Sign files which are recent, event if not default to compatible."""
     with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                              self.file_.file_path):
         file_hash = self.file_.generate_hash()
         assert self.version.version == '1.3'
         assert self.version.version_int == version_int('1.3')
         self.file_.update(binary_components=True,
                           strict_compatibility=True)
         tasks.sign_addons([self.addon.pk])
         assert mock_sign_file.called
         self.version.reload()
         assert self.version.version == '1.3.1-signed'
         assert self.version.version_int == version_int('1.3.1-signed')
         assert file_hash != self.file_.generate_hash()
         self.assert_backup()
Exemple #30
0
    def test_dont_sign_dont_bump_old_versions(self, mock_sign_file):
        """Don't sign files which are too old, or not default to compatible."""
        def not_signed():
            assert not mock_sign_file.called
            self.version.reload()
            assert self.version.version == '1.3'
            assert self.version.version_int == version_int('1.3')
            assert file_hash == self.file_.generate_hash()
            self.assert_no_backup()

        with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                                 self.file_.file_path):
            file_hash = self.file_.generate_hash()
            assert self.version.version == '1.3'
            assert self.version.version_int == version_int('1.3')

            # Too old, don't sign.
            self.set_max_appversion('1')  # Very very old.
            tasks.sign_addons([self.addon.pk])
            not_signed()

            # MIN_D2C_VERSION, but strict compat: don't sign.
            self.set_max_appversion(settings.MIN_D2C_VERSION)
            self.file_.update(strict_compatibility=True)
            tasks.sign_addons([self.addon.pk])
            not_signed()

            # MIN_D2C_VERSION, but binary component: don't sign.
            self.file_.update(strict_compatibility=False,
                              binary_components=True)
            tasks.sign_addons([self.addon.pk])
            not_signed()
Exemple #31
0
    def test_dont_sign_dont_bump_old_versions(self, mock_sign_file):
        """Don't sign files which are too old, or not default to compatible."""
        def not_signed():
            assert not mock_sign_file.called
            self.version.reload()
            assert self.version.version == '1.3'
            assert self.version.version_int == version_int('1.3')
            assert file_hash == self.file_.generate_hash()
            self.assert_no_backup()

        with amo.tests.copy_file('apps/files/fixtures/files/jetpack.xpi',
                                 self.file_.file_path):
            file_hash = self.file_.generate_hash()
            assert self.version.version == '1.3'
            assert self.version.version_int == version_int('1.3')

            # Too old, don't sign.
            self.set_max_appversion('1')  # Very very old.
            tasks.sign_addons([self.addon.pk])
            not_signed()

            # MIN_D2C_VERSION, but strict compat: don't sign.
            self.set_max_appversion(settings.MIN_D2C_VERSION)
            self.file_.update(strict_compatibility=True)
            tasks.sign_addons([self.addon.pk])
            not_signed()

            # MIN_D2C_VERSION, but binary component: don't sign.
            self.file_.update(strict_compatibility=False,
                              binary_components=True)
            tasks.sign_addons([self.addon.pk])
            not_signed()