Ejemplo n.º 1
0
    def test_run(self):
        # Pretend we went through the admin.
        self.rule.update(state=SCHEDULED)

        # Similar to test_run_on_chunk() except it needs to find the versions
        # by itself.
        other_addon = addon_factory(
            file_kw={'is_webextension': True},
            version_kw={'created': self.days_ago(1)},
        )
        other_addon_previous_current_version = other_addon.current_version
        included_versions = [
            # Only listed webextension version on this add-on.
            self.version,
            # Unlisted webextension version of this add-on.
            addon_factory(
                disabled_by_user=True,  # Doesn't matter.
                file_kw={'is_webextension': True},
                version_kw={'channel': amo.RELEASE_CHANNEL_UNLISTED},
            ).versions.get(),
            # Unlisted webextension version of an add-on that has multiple
            # versions.
            version_factory(
                addon=other_addon,
                created=self.days_ago(42),
                channel=amo.RELEASE_CHANNEL_UNLISTED,
                file_kw={'is_webextension': True},
            ),
            # Listed webextension versions of an add-on that has multiple
            # versions.
            other_addon_previous_current_version,
            version_factory(
                addon=other_addon, file_kw={'is_webextension': True}
            ),
        ]
        # Ignored versions:
        # Listed Webextension version belonging to mozilla disabled add-on.
        addon_factory(
            file_kw={'is_webextension': True}, status=amo.STATUS_DISABLED
        ).current_version
        # Non-Webextension
        addon_factory(file_kw={'is_webextension': False}).current_version

        for version in Version.unfiltered.all():
            self.xpi_copy_over(version.all_files[0], 'webextension.xpi')

        # Run the task.
        run_yara_query_rule.delay(self.rule.pk)

        assert ScannerQueryResult.objects.count() == len(included_versions)
        assert sorted(
            ScannerQueryResult.objects.values_list('version_id', flat=True)
        ) == sorted(v.pk for v in included_versions)
        self.rule.reload()
        assert self.rule.state == COMPLETED
        assert self.rule.task_count == 1
        # We run tests in eager mode, so we can't retrieve the result for real,
        # just make sure the id was set to something.
        assert self.rule.celery_group_result_id is not None
Ejemplo n.º 2
0
    def test_run_not_new(self):
        self.rule.update(state=RUNNING)  # Not SCHEDULED.
        run_yara_query_rule.delay(self.rule.pk)

        # Nothing should have changed.
        assert ScannerQueryResult.objects.count() == 0
        self.rule.reload()
        assert self.rule.state == RUNNING
Ejemplo n.º 3
0
    def test_run_on_disabled_addons(self):
        self.version.addon.update(status=amo.STATUS_DISABLED)
        self.rule.update(run_on_disabled_addons=True, state=SCHEDULED)
        run_yara_query_rule.delay(self.rule.pk)

        assert ScannerQueryResult.objects.count() == 1
        assert ScannerQueryResult.objects.get().version == self.version
        self.rule.reload()
        assert self.rule.state == COMPLETED
Ejemplo n.º 4
0
    def test_run(self):
        # Similar to test_run_on_chunk() except it needs to find the versions
        # by itself.
        other_addon = addon_factory(file_kw={'is_webextension': True},
                                    version_kw={'created': self.days_ago(1)})
        other_addon_previous_current_version = other_addon.current_version
        included_versions = [
            # Only listed webextension version on this add-on.
            self.version,
            # Unlisted webextension version of this add-on.
            addon_factory(
                disabled_by_user=True,  # Doesn't matter.
                file_kw={
                    'is_webextension': True
                },
                version_kw={
                    'channel': amo.RELEASE_CHANNEL_UNLISTED
                }).versions.get(),
            # Unlisted webextension version of an add-on that has multiple
            # versions.
            version_factory(addon=other_addon,
                            created=self.days_ago(42),
                            channel=amo.RELEASE_CHANNEL_UNLISTED,
                            file_kw={'is_webextension': True}),
            # Listed webextension version of an add-on that has multiple
            # versions.
            version_factory(addon=other_addon,
                            file_kw={'is_webextension': True}),
        ]
        for version in included_versions:
            self.xpi_copy_over(version.all_files[0], 'webextension.xpi')

        # Ignored versions:
        # Listed Webextension version belonging to mozilla disabled add-on.
        addon_factory(file_kw={
            'is_webextension': True
        },
                      status=amo.STATUS_DISABLED).current_version
        # Non-Webextension
        addon_factory(file_kw={'is_webextension': False}).current_version

        # Listed webextension but not the latest one.
        other_addon_previous_current_version

        # Run the task.
        run_yara_query_rule.delay(self.rule.pk)

        assert ScannerQueryResult.objects.count() == len(included_versions)
        assert sorted(
            ScannerQueryResult.objects.values_list(
                'version_id',
                flat=True)) == sorted(v.pk for v in included_versions)
        self.rule.reload()
        assert self.rule.state == COMPLETED