Beispiel #1
0
 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)
Beispiel #2
0
    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)
Beispiel #3
0
 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)
Beispiel #4
0
    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)
Beispiel #5
0
 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))
Beispiel #6
0
 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))
Beispiel #7
0
 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)
Beispiel #8
0
 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)
Beispiel #9
0
 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)
Beispiel #10
0
 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)
Beispiel #11
0
 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
Beispiel #12
0
 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
Beispiel #13
0
 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)
Beispiel #14
0
 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)
Beispiel #15
0
 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)
Beispiel #16
0
 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)
Beispiel #17
0
 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)
Beispiel #18
0
 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
Beispiel #19
0
 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
Beispiel #20
0
 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
Beispiel #21
0
 def restore_object(self, attrs, instance=None):
     try:
         return LangPack.from_upload(attrs['upload'], instance=instance)
     except serializers.ValidationError, e:
         raise ParseError(e.messages)