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
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
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
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