예제 #1
0
    def test_file_for_platform(self):
        """If client passes a platform, make sure we get the right file."""
        version = Version.objects.get(pk=self.version_1_2_2)
        file_one = version.files.all()[0]
        file_one.platform = amo.PLATFORM_LINUX.id
        file_one.save()

        file_two = File(
            version=version,
            filename='foo',
            hash='bar',
            platform=amo.PLATFORM_WIN.id,
            status=amo.STATUS_APPROVED,
        )
        file_two.save()
        version, file = self.get_update_instance(
            '1.2', self.version_int, self.app, amo.PLATFORM_LINUX
        )
        assert version == self.version_1_2_2
        assert file == file_one.pk

        version, file = self.get_update_instance(
            '1.2', self.version_int, self.app, amo.PLATFORM_WIN
        )
        assert version == self.version_1_2_2
        assert file == file_two.pk
예제 #2
0
    def _extra_version_and_file(self, status):
        version = Version.objects.get(id=81551)

        version_two = Version(addon=self.addon,
                              license=version.license,
                              version='1.2.3')
        version_two.save()

        file_two = File(status=status, version=version_two)
        file_two.save()
        return version_two, file_two
예제 #3
0
 def test_version_is_not_allowed_upload_full(self):
     version = Version.objects.get(pk=81551)
     version.files.all().delete()
     for platform in [
             amo.PLATFORM_LINUX.id, amo.PLATFORM_WIN.id, amo.PLATFORM_MAC.id
     ]:
         file = File(platform=platform, version=version)
         file.save()
     # The transform don't know bout my new files.
     version = Version.objects.get(pk=81551)
     assert not version.is_allowed_upload()
예제 #4
0
 def test_version_is_not_allowed_upload_full(self):
     version = Version.objects.get(pk=81551)
     version.files.all().delete()
     for platform in [amo.PLATFORM_LINUX.id,
                      amo.PLATFORM_WIN.id,
                      amo.PLATFORM_MAC.id]:
         file = File(platform=platform, version=version)
         file.save()
     # The transform don't know bout my new files.
     version = Version.objects.get(pk=81551)
     assert not version.is_allowed_upload()
예제 #5
0
    def create_file(self, **kwargs):
        addon = Addon()
        addon.save()
        ver = Version(version='0.1')
        ver.addon = addon
        ver.save()

        f = File(**kwargs)
        f.version = ver
        f.save()

        return f
예제 #6
0
    def create_file(self, **kwargs):
        addon = Addon()
        addon.save()
        ver = Version(version='0.1')
        ver.addon = addon
        ver.save()

        f = File(**kwargs)
        f.version = ver
        f.save()

        return f
예제 #7
0
 def test_version_is_not_allowed_upload_after_review(self):
     version = Version.objects.get(pk=81551)
     version.files.all().delete()
     for platform in [
             amo.PLATFORM_LINUX.id, amo.PLATFORM_WIN.id, amo.PLATFORM_BSD.id
     ]:
         file = File(platform=platform, version=version)
         file.save()
     version = Version.objects.get(pk=81551)
     assert version.is_allowed_upload()
     version.files.all()[0].update(status=amo.STATUS_PUBLIC)
     # The review has started so no more uploads now.
     version = Version.objects.get(pk=81551)
     assert not version.is_allowed_upload()
예제 #8
0
 def test_version_is_not_allowed_upload_after_review(self):
     version = Version.objects.get(pk=81551)
     version.files.all().delete()
     for platform in [amo.PLATFORM_LINUX.id,
                      amo.PLATFORM_WIN.id,
                      amo.PLATFORM_BSD.id]:
         file = File(platform=platform, version=version)
         file.save()
     version = Version.objects.get(pk=81551)
     assert version.is_allowed_upload()
     version.files.all()[0].update(status=amo.STATUS_PUBLIC)
     # The review has started so no more uploads now.
     version = Version.objects.get(pk=81551)
     assert not version.is_allowed_upload()
예제 #9
0
    def _save_file(self, version):
        data = self.cleaned_data
        xpi = data['xpi']
        hash = hashlib.sha256()

        f = File(version=version,
                 platform=amo.PLATFORM_DICT[data['platform']].id,
                 size=xpi.size)

        filename = f.generate_filename()
        path = os.path.join(user_media_path('addons'), str(version.addon.id))
        with storage.open(os.path.join(path, filename), 'wb') as destination:
            for chunk in xpi.chunks():
                hash.update(chunk)
                destination.write(chunk)

        f.hash = 'sha256:%s' % hash.hexdigest()
        f.save()
        return f
예제 #10
0
    def _save_file(self, version):
        data = self.cleaned_data
        xpi = data['xpi']
        hash = hashlib.sha256()

        f = File(version=version,
                 platform=amo.PLATFORM_DICT[data['platform']].id,
                 size=xpi.size)

        filename = f.generate_filename()
        path = os.path.join(user_media_path('addons'), str(version.addon.id))
        with storage.open(os.path.join(path, filename), 'wb') as destination:
            for chunk in xpi.chunks():
                hash.update(chunk)
                destination.write(chunk)

        f.hash = 'sha256:%s' % hash.hexdigest()
        f.save()
        return f
예제 #11
0
    def test_file_for_platform(self):
        """If client passes a platform, make sure we get the right file."""
        version = Version.objects.get(pk=self.version_1_2_2)
        file_one = version.files.all()[0]
        file_one.platform = amo.PLATFORM_LINUX.id
        file_one.save()

        file_two = File(version=version, filename='foo', hash='bar',
                        platform=amo.PLATFORM_WIN.id,
                        status=amo.STATUS_PUBLIC)
        file_two.save()
        version, file = self.get_update_instance(
            '1.2', self.version_int, self.app, amo.PLATFORM_LINUX)
        assert version == self.version_1_2_2
        assert file == file_one.pk

        version, file = self.get_update_instance(
            '1.2', self.version_int, self.app, amo.PLATFORM_WIN)
        assert version == self.version_1_2_2
        assert file == file_two.pk
예제 #12
0
    def test_file_for_platform(self):
        """If client passes a platform, make sure we get the right file."""
        version = Version.objects.get(pk=self.version_1_2_2)
        file_one = version.files.all()[0]
        file_one.platform = amo.PLATFORM_LINUX.id
        file_one.save()

        file_two = File(version=version,
                        filename='foo',
                        hash='bar',
                        platform=amo.PLATFORM_WIN.id,
                        status=amo.STATUS_PUBLIC)
        file_two.save()
        version, file = self.get('1.2', self.version_int, self.app,
                                 amo.PLATFORM_LINUX)
        eq_(version, self.version_1_2_2)
        eq_(file, file_one.pk)

        version, file = self.get('1.2', self.version_int, self.app,
                                 amo.PLATFORM_WIN)
        eq_(version, self.version_1_2_2)
        eq_(file, file_two.pk)