def test_upload_language_validation(self, get_json_data_mock): upload = self.upload('langpack') get_json_data_mock.return_value = { 'name': 'Portuguese Langpack', 'developer': { 'name': 'Mozilla' }, 'role': 'langpack', 'languages-provided': { 'pt-BR': {} }, 'languages-target': { 'app://*.gaiamobile.org/manifest.webapp': '2.2' }, 'version': '0.1' } langpack = LangPack.from_upload(upload) ok_(langpack.pk) eq_(langpack.language, 'pt-BR') get_json_data_mock.return_value['languages-provided'] = { 'invalid-lang': {} } expected = [u"Value 'invalid-lang' is not a valid choice."] with self.assertRaises(ValidationError) as e: LangPack.from_upload(upload) eq_(e.exception.messages, expected)
def test_upload_sign_error_existing(self, sign_app_mock): sign_app_mock.side_effect = SigningError langpack = self.create_langpack() eq_(LangPack.objects.count(), 1) original_uuid = langpack.uuid original_file_path = langpack.file_path original_file_version = langpack.file_version original_version = langpack.version # create_langpack() doesn't create a fake file, let's add one. with public_storage.open(langpack.file_path, 'w') as f: f.write('.') upload = self.upload('langpack') with self.assertRaises(SigningError): LangPack.from_upload(upload, instance=langpack) # Test that we didn't delete the upload file ok_(private_storage.exists(upload.path)) # Test that we didn't delete the existing filename or alter the # existing langpack in the database. eq_(LangPack.objects.count(), 1) langpack.reload() eq_(original_uuid, langpack.uuid) eq_(langpack.file_path, original_file_path) eq_(original_file_version, langpack.file_version) eq_(original_version, langpack.version) ok_(public_storage.exists(langpack.file_path)) # Cleanup public_storage.delete(langpack.file_path)
def test_upload_language_validation(self, get_json_data_mock): upload = self.upload('langpack') get_json_data_mock.return_value = { 'name': 'Portuguese Langpack', 'developer': { 'name': 'Mozilla' }, 'role': 'langpack', 'languages-provided': { 'pt-BR': {} }, 'languages-target': { 'app://*.gaiamobile.org/manifest.webapp': '2.2' }, 'version': '0.1' } langpack = LangPack.from_upload(upload) ok_(langpack.pk) eq_(langpack.language, 'pt-BR') get_json_data_mock.return_value['languages-provided'] = { 'invalid-lang': {} } expected = [u"Value 'invalid-lang' is not a valid choice."] with self.assertRaises(ValidationError) as e: LangPack.from_upload(upload) eq_(e.exception.messages, expected)
def test_upload_sign_error_existing(self, sign_app_mock): sign_app_mock.side_effect = SigningError langpack = self.create_langpack() eq_(LangPack.objects.count(), 1) original_uuid = langpack.uuid original_file_path = langpack.file_path original_file_version = langpack.file_version original_version = langpack.version # create_langpack() doesn't create a fake file, let's add one. with public_storage.open(langpack.file_path, 'w') as f: f.write('.') upload = self.upload('langpack') with self.assertRaises(SigningError): LangPack.from_upload(upload, instance=langpack) # Test that we didn't delete the upload file ok_(private_storage.exists(upload.path)) # Test that we didn't delete the existing filename or alter the # existing langpack in the database. eq_(LangPack.objects.count(), 1) langpack.reload() eq_(original_uuid, langpack.uuid) eq_(langpack.file_path, original_file_path) eq_(original_file_version, langpack.file_version) eq_(original_version, langpack.version) ok_(public_storage.exists(langpack.file_path)) # Cleanup public_storage.delete(langpack.file_path)
def test_upload_sign_error(self, sign_app_mock): sign_app_mock.side_effect = SigningError eq_(LangPack.objects.count(), 0) upload = self.upload('langpack') with self.assertRaises(SigningError): LangPack.from_upload(upload) # Test that we didn't delete the upload file ok_(private_storage.exists(upload.path))
def test_upload_sign_error(self, sign_app_mock): sign_app_mock.side_effect = SigningError eq_(LangPack.objects.count(), 0) upload = self.upload('langpack') with self.assertRaises(SigningError): LangPack.from_upload(upload) # Test that we didn't delete the upload file ok_(private_storage.exists(upload.path))
def test_upload_existing_same_version(self): langpack = self.create_langpack() upload = self.upload('langpack') # Works once. ok_(LangPack.from_upload(upload, instance=langpack)) # Doesn't work twice, since we are re-uploading the same version. expected = [u'Your language pack version must be different to the ' u'one you are replacing.'] with self.assertRaises(ValidationError) as e: LangPack.from_upload(upload, instance=langpack) eq_(e.exception.messages, expected)
def test_upload_existing_same_version(self): langpack = self.create_langpack() upload = self.upload('langpack') # Works once. ok_(LangPack.from_upload(upload, instance=langpack)) # Doesn't work twice, since we are re-uploading the same version. expected = [u'Your language pack version must be different to the ' u'one you are replacing.'] with self.assertRaises(ValidationError) as e: LangPack.from_upload(upload, instance=langpack) eq_(e.exception.messages, expected)
def test_upload_existing(self): langpack = self.create_langpack() original_uuid = langpack.uuid original_file_path = langpack.file_path original_file_version = langpack.file_version original_manifest = langpack.manifest with patch('mkt.webapps.utils.public_storage') as storage_mock: # mock storage size before building minifest since we haven't # created a real file for this langpack yet. storage_mock.size.return_value = 666 original_minifest = langpack.get_minifest_contents() upload = self.upload('langpack') langpack = LangPack.from_upload(upload, instance=langpack) eq_(langpack.uuid, original_uuid) eq_(langpack.version, '1.0.3') eq_(langpack.language, 'de') eq_(langpack.fxos_version, '2.2') eq_(langpack.filename, '%s-%s.zip' % (langpack.uuid, langpack.version)) eq_(langpack.get_manifest_json(), self.expected_manifest) ok_(langpack.file_path.startswith(langpack.path_prefix)) ok_(langpack.filename in langpack.file_path) ok_(langpack.file_path != original_file_path) ok_(langpack.file_version > original_file_version) ok_(public_storage.exists(langpack.file_path)) ok_(LangPack.objects.get(pk=langpack.uuid)) eq_(LangPack.objects.count(), 1) ok_(langpack.manifest != original_manifest) # We're supposed to have busted the old minifest cache. ok_(langpack.get_minifest_contents() != original_minifest)
def test_upload_existing(self): langpack = self.create_langpack() original_uuid = langpack.uuid original_file_path = langpack.file_path original_file_version = langpack.file_version original_manifest = langpack.manifest with patch('mkt.webapps.utils.public_storage') as storage_mock: # mock storage size before building minifest since we haven't # created a real file for this langpack yet. storage_mock.size.return_value = 666 original_minifest = langpack.get_minifest_contents() upload = self.upload('langpack') langpack = LangPack.from_upload(upload, instance=langpack) eq_(langpack.uuid, original_uuid) eq_(langpack.version, '1.0.3') eq_(langpack.language, 'de') eq_(langpack.fxos_version, '2.2') eq_(langpack.filename, '%s-%s.zip' % (langpack.uuid, langpack.version)) eq_(langpack.get_manifest_json(), self.expected_manifest) ok_(langpack.file_path.startswith(langpack.path_prefix)) ok_(langpack.filename in langpack.file_path) ok_(langpack.file_path != original_file_path) ok_(langpack.file_version > original_file_version) ok_(public_storage.exists(langpack.file_path)) ok_(LangPack.objects.get(pk=langpack.uuid)) eq_(LangPack.objects.count(), 1) ok_(langpack.manifest != original_manifest) # We're supposed to have busted the old minifest cache. ok_(langpack.get_minifest_contents() != original_minifest)
def validate(self, data): try: self.instance = LangPack.from_upload(data['upload'], instance=self.instance) except forms.ValidationError, e: exc = ParseError() exc.detail = {u'detail': e.messages} raise exc
def validate(self, data): try: self.instance = LangPack.from_upload(data['upload'], instance=self.instance) except forms.ValidationError, e: exc = ParseError() exc.detail = {u'detail': e.messages} raise exc
def test_upload_language_validation(self, get_json_data_mock): upload = self.upload("langpack") get_json_data_mock.return_value = { "name": "Portuguese Langpack", "developer": {"name": "Mozilla"}, "role": "langpack", "languages-provided": {"pt-BR": {}}, "languages-target": {"app://*.gaiamobile.org/manifest.webapp": "2.2"}, "version": "0.1", } langpack = LangPack.from_upload(upload) ok_(langpack.pk) eq_(langpack.language, "pt-BR") get_json_data_mock.return_value["languages-provided"] = {"invalid-lang": {}} expected = [u"Value 'invalid-lang' is not a valid choice."] with self.assertRaises(ValidationError) as e: LangPack.from_upload(upload) eq_(e.exception.messages, expected)
def test_upload_sign(self, sign_app_mock, cached_minifest_mock): eq_(LangPack.objects.count(), 0) upload = self.upload('langpack') langpack = LangPack.from_upload(upload) ok_(langpack.pk) ok_(langpack.file_version) ok_(langpack.file_path) eq_(LangPack.objects.count(), 1) expected_args = ( langpack.file_path, json.dumps({'id': langpack.pk, 'version': langpack.file_version}) ) eq_(os.path.join('/', sign_app_mock.call_args[0][0].name), upload.path) eq_(sign_app_mock.call_args[0][1:], expected_args)
def test_upload_sign(self, sign_app_mock, cached_minifest_mock): eq_(LangPack.objects.count(), 0) upload = self.upload('langpack') langpack = LangPack.from_upload(upload) ok_(langpack.pk) ok_(langpack.file_version) ok_(langpack.file_path) eq_(LangPack.objects.count(), 1) expected_args = ( langpack.file_path, json.dumps({'id': langpack.pk, 'version': langpack.file_version}) ) eq_(os.path.join('/', sign_app_mock.call_args[0][0].name), upload.path) eq_(sign_app_mock.call_args[0][1:], expected_args)
def test_upload_sign(self, sign_app_mock, cached_minifest_mock): eq_(LangPack.objects.count(), 0) upload = self.upload('langpack') langpack = LangPack.from_upload(upload) ok_(langpack.pk) ok_(langpack.file_version) ok_(langpack.file_path) eq_(LangPack.objects.count(), 1) expected_args = ( upload.path, langpack.file_path, json.dumps({'id': langpack.pk, 'version': langpack.file_version}) ) sign_app_mock.assert_called_once_with(*expected_args)
def test_upload_sign_existing(self, sign_app_mock, cached_minifest_mock): langpack = self.create_langpack() eq_(LangPack.objects.count(), 1) upload = self.upload("langpack") langpack = LangPack.from_upload(upload, instance=langpack) ok_(langpack.pk) ok_(langpack.file_version) ok_(langpack.file_path) eq_(LangPack.objects.count(), 1) expected_args = ( upload.path, langpack.file_path, json.dumps({"id": langpack.pk, "version": langpack.file_version}), ) sign_app_mock.assert_called_once_with(*expected_args)
def test_upload_new(self): eq_(LangPack.objects.count(), 0) upload = self.upload("langpack") langpack = LangPack.from_upload(upload) ok_(langpack.uuid) eq_(langpack.file_version, 1) eq_(langpack.version, "1.0.3") eq_(langpack.language, "de") eq_(langpack.fxos_version, "2.2") eq_(langpack.filename, "%s-%s.zip" % (langpack.uuid, langpack.version)) ok_(langpack.filename in langpack.file_path) ok_(langpack.file_path.startswith(langpack.path_prefix)) ok_(os.path.exists(langpack.file_path)) eq_(langpack.get_manifest_json(), self.expected_manifest) ok_(LangPack.objects.no_cache().get(pk=langpack.uuid)) eq_(LangPack.objects.count(), 1) return langpack
def test_upload_new(self): eq_(LangPack.objects.count(), 0) upload = self.upload('langpack') langpack = LangPack.from_upload(upload) ok_(langpack.uuid) eq_(langpack.file_version, 1) eq_(langpack.version, '1.0.3') eq_(langpack.language, 'de') eq_(langpack.fxos_version, '2.2') eq_(langpack.filename, '%s-%s.zip' % (langpack.uuid, langpack.version)) ok_(langpack.filename in langpack.file_path) ok_(langpack.file_path.startswith(langpack.path_prefix)) ok_(public_storage.exists(langpack.file_path)) eq_(langpack.get_manifest_json(), self.expected_manifest) ok_(LangPack.objects.get(pk=langpack.uuid)) eq_(LangPack.objects.count(), 1) return langpack
def test_upload_new(self): eq_(LangPack.objects.count(), 0) upload = self.upload('langpack') langpack = LangPack.from_upload(upload) ok_(langpack.uuid) eq_(langpack.file_version, 1) eq_(langpack.version, '1.0.3') eq_(langpack.language, 'de') eq_(langpack.fxos_version, '2.2') eq_(langpack.filename, '%s-%s.zip' % (langpack.uuid, langpack.version)) ok_(langpack.filename in langpack.file_path) ok_(langpack.file_path.startswith(langpack.path_prefix)) ok_(public_storage.exists(langpack.file_path)) eq_(langpack.get_manifest_json(), self.expected_manifest) ok_(LangPack.objects.get(pk=langpack.uuid)) eq_(LangPack.objects.count(), 1) return langpack
def restore_object(self, attrs, instance=None): try: return LangPack.from_upload(attrs['upload'], instance=instance) except serializers.ValidationError, e: raise ParseError(e.messages)