Updated binary flag to include `contains_binary_content`.
This commit is contained in:
Родитель
0eb70810da
Коммит
42d3dec04c
|
@ -165,9 +165,10 @@ def flag_binary(ids, **kw):
|
|||
try:
|
||||
log.info('Validating addon with id: %s' % addon.pk)
|
||||
file = File.objects.filter(version__addon=addon).latest('created')
|
||||
result = run_validator(file.file_path)
|
||||
binary = (json.loads(result)['metadata']
|
||||
.get('contains_binary_extension', False))
|
||||
result = json.loads(run_validator(file.file_path))
|
||||
metadata = result['metadata']
|
||||
binary = (metadata.get('contains_binary_extension', False) or
|
||||
metadata.get('contains_binary_content', False))
|
||||
log.info('Setting binary for addon with id: %s to %s'
|
||||
% (addon.pk, binary))
|
||||
file.update(binary=binary)
|
||||
|
|
|
@ -131,13 +131,19 @@ class TestFlagBinary(amo.tests.TestCase):
|
|||
|
||||
@mock.patch('devhub.tasks.run_validator')
|
||||
def test_flag_binary(self, _mock):
|
||||
_mock.return_value = '{"metadata":{"contains_binary_extension": 1}}'
|
||||
_mock.return_value = ('{"metadata":{"contains_binary_extension": 1, '
|
||||
'"contains_binary_content": 0}}')
|
||||
tasks.flag_binary([self.addon.pk])
|
||||
eq_(Addon.objects.get(pk=self.addon.pk).binary, True)
|
||||
_mock.return_value = ('{"metadata":{"contains_binary_extension": 0, '
|
||||
'"contains_binary_content": 1}}')
|
||||
tasks.flag_binary([self.addon.pk])
|
||||
eq_(Addon.objects.get(pk=self.addon.pk).binary, True)
|
||||
|
||||
@mock.patch('devhub.tasks.run_validator')
|
||||
def test_flag_not_binary(self, _mock):
|
||||
_mock.return_value = '{"metadata":{"contains_binary_extension": 0}}'
|
||||
_mock.return_value = ('{"metadata":{"contains_binary_extension": 0, '
|
||||
'"contains_binary_content": 0}}')
|
||||
tasks.flag_binary([self.addon.pk])
|
||||
eq_(Addon.objects.get(pk=self.addon.pk).binary, False)
|
||||
|
||||
|
|
|
@ -251,7 +251,7 @@ class TestValidateFile(BaseUploadTest):
|
|||
'ValueError: catastrophic failure in amo-validator')
|
||||
|
||||
@mock.patch('devhub.tasks.run_validator')
|
||||
def test_validator_sets_binary_flag(self, v):
|
||||
def test_validator_sets_binary_flag_for_extensions(self, v):
|
||||
v.return_value = json.dumps({
|
||||
"errors": 0,
|
||||
"success": True,
|
||||
|
@ -276,6 +276,32 @@ class TestValidateFile(BaseUploadTest):
|
|||
addon = Addon.objects.get(pk=self.addon.id)
|
||||
eq_(addon.binary, True)
|
||||
|
||||
@mock.patch('devhub.tasks.run_validator')
|
||||
def test_validator_sets_binary_flag_for_content(self, v):
|
||||
v.return_value = json.dumps({
|
||||
"errors": 0,
|
||||
"success": True,
|
||||
"warnings": 0,
|
||||
"notices": 0,
|
||||
"message_tree": {},
|
||||
"messages": [],
|
||||
"metadata": {
|
||||
"contains_binary_content": True,
|
||||
"version": "1.0",
|
||||
"name": "gK0Bes Bot",
|
||||
"id": "gkobes@gkobes"
|
||||
}
|
||||
})
|
||||
eq_(self.addon.binary, False)
|
||||
r = self.client.post(reverse('devhub.json_file_validation',
|
||||
args=[self.addon.slug, self.file.id]),
|
||||
follow=True)
|
||||
eq_(r.status_code, 200)
|
||||
data = json.loads(r.content)
|
||||
assert_no_validation_errors(data)
|
||||
addon = Addon.objects.get(pk=self.addon.id)
|
||||
eq_(addon.binary, True)
|
||||
|
||||
@mock.patch('devhub.tasks.run_validator')
|
||||
def test_linkify_validation_messages(self, v):
|
||||
v.return_value = json.dumps({
|
||||
|
|
|
@ -633,8 +633,9 @@ class FileValidation(amo.models.ModelBase):
|
|||
new = cls(file=file, validation=validation, errors=js['errors'],
|
||||
warnings=js['warnings'], notices=js['notices'])
|
||||
new.valid = new.errors == 0
|
||||
if ('metadata' in js and
|
||||
js['metadata'].get('contains_binary_extension', False)):
|
||||
if ('metadata' in js and (
|
||||
js['metadata'].get('contains_binary_extension', False) or
|
||||
js['metadata'].get('contains_binary_content', False))):
|
||||
file.update(binary=True)
|
||||
new.save()
|
||||
return new
|
||||
|
|
|
@ -520,7 +520,7 @@ class TestFileUpload(UploadTest):
|
|||
fu = FileUpload.from_post('', u'\u05d0\u05d5\u05e1\u05e3.xpi', 0)
|
||||
assert 'xpi' in fu.name
|
||||
|
||||
def test_validator_sets_require_chrome(self):
|
||||
def test_validator_sets_binary_via_extensions(self):
|
||||
validation = json.dumps({
|
||||
"errors": 0,
|
||||
"success": True,
|
||||
|
@ -533,6 +533,47 @@ class TestFileUpload(UploadTest):
|
|||
"version": "1.0",
|
||||
"name": "gK0Bes Bot",
|
||||
"id": "gkobes@gkobes",
|
||||
}
|
||||
})
|
||||
upload = self.get_upload(filename='extension.xpi', validation=validation)
|
||||
version = Version.objects.filter(addon__pk=3615)[0]
|
||||
plat = Platform.objects.get(pk=amo.PLATFORM_LINUX.id)
|
||||
file_ = File.from_upload(upload, version, plat)
|
||||
eq_(file_.binary, True)
|
||||
|
||||
def test_validator_sets_binary_via_content(self):
|
||||
validation = json.dumps({
|
||||
"errors": 0,
|
||||
"success": True,
|
||||
"warnings": 0,
|
||||
"notices": 0,
|
||||
"message_tree": {},
|
||||
"messages": [],
|
||||
"metadata": {
|
||||
"contains_binary_content": True,
|
||||
"version": "1.0",
|
||||
"name": "gK0Bes Bot",
|
||||
"id": "gkobes@gkobes",
|
||||
}
|
||||
})
|
||||
upload = self.get_upload(filename='extension.xpi', validation=validation)
|
||||
version = Version.objects.filter(addon__pk=3615)[0]
|
||||
plat = Platform.objects.get(pk=amo.PLATFORM_LINUX.id)
|
||||
file_ = File.from_upload(upload, version, plat)
|
||||
eq_(file_.binary, True)
|
||||
|
||||
def test_validator_sets_require_chrome(self):
|
||||
validation = json.dumps({
|
||||
"errors": 0,
|
||||
"success": True,
|
||||
"warnings": 0,
|
||||
"notices": 0,
|
||||
"message_tree": {},
|
||||
"messages": [],
|
||||
"metadata": {
|
||||
"version": "1.0",
|
||||
"name": "gK0Bes Bot",
|
||||
"id": "gkobes@gkobes",
|
||||
"requires_chrome": True
|
||||
}
|
||||
})
|
||||
|
@ -541,7 +582,6 @@ class TestFileUpload(UploadTest):
|
|||
plat = Platform.objects.get(pk=amo.PLATFORM_LINUX.id)
|
||||
file_ = File.from_upload(upload, version, plat)
|
||||
eq_(file_.requires_chrome, True)
|
||||
eq_(file_.binary, True)
|
||||
|
||||
|
||||
class TestFileFromUpload(UploadTest):
|
||||
|
|
Загрузка…
Ссылка в новой задаче