Exemplo n.º 1
0
 def setUp(self):
     self.request = mock.Mock()
     self.app = app_factory(
         make_public=amo.PUBLIC_IMMEDIATELY, version_kw={"version": "1.0", "created": self.days_ago(5)}
     )
     version_factory(addon=self.app, version="2.0", file_kw=dict(status=amo.STATUS_PENDING))
     self.app.reload()
Exemplo n.º 2
0
 def test_create(self):
     self.create_switch("comm-dashboard")
     version_factory(addon=self.addon, version="1.1")
     data = {"app": self.addon.app_slug, "version": "1.1", "note_type": "0", "body": "flylikebee"}
     self.addon.addonuser_set.create(user=self.user.get_profile())
     res = self.client.post(self.list_url, data=json.dumps(data))
     eq_(res.status_code, 201)
     assert self.addon.threads.count()
Exemplo n.º 3
0
 def setUp(self):
     self.request = mock.Mock()
     self.app = app_factory(publish_type=amo.PUBLISH_IMMEDIATE,
                            version_kw={'version': '1.0',
                                        'created': self.days_ago(5)})
     version_factory(addon=self.app, version='2.0',
                     file_kw=dict(status=amo.STATUS_PENDING))
     self.app.reload()
Exemplo n.º 4
0
 def setUp(self):
     self.request = mock.Mock()
     self.app = app_factory(publish_type=amo.PUBLISH_IMMEDIATE,
                            version_kw={'version': '1.0',
                                        'created': self.days_ago(5)})
     version_factory(addon=self.app, version='2.0',
                     file_kw=dict(status=amo.STATUS_PENDING))
     self.app.reload()
Exemplo n.º 5
0
 def test_publicise_version_pending(self, update_name, update_locales):
     version_factory(addon=self.app, version="2.0", file_kw=dict(status=amo.STATUS_PENDING))
     self.app.reload()
     res = self.post()
     eq_(res.status_code, 302)
     eq_(self.get_version_status(), amo.STATUS_PENDING)
     assert not update_name.called
     assert not update_locales.called
Exemplo n.º 6
0
 def setUp(self):
     self.request = mock.Mock()
     self.app = app_factory(make_public=amo.PUBLIC_IMMEDIATELY,
                            created=self.days_ago(5))
     self.app.current_version.update(created=self.app.created)
     version_factory(addon=self.app, version='2.0',
                     file_kw=dict(status=amo.STATUS_PENDING))
     self.app.reload()
Exemplo n.º 7
0
 def setUp(self):
     self.request = mock.Mock()
     self.app = app_factory(make_public=amo.PUBLIC_IMMEDIATELY,
                            created=self.days_ago(5))
     self.app.current_version.update(created=self.app.created)
     version_factory(addon=self.app,
                     version='2.0',
                     file_kw=dict(status=amo.STATUS_PENDING))
     self.app.reload()
Exemplo n.º 8
0
 def test_publicise_version_pending(self, update_name, update_locales):
     version_factory(addon=self.app, version='2.0',
                     file_kw=dict(status=amo.STATUS_PENDING))
     self.app.reload()
     res = self.post()
     eq_(res.status_code, 302)
     eq_(self.get_version_status(), amo.STATUS_PENDING)
     assert not update_name.called
     assert not update_locales.called
Exemplo n.º 9
0
 def test_publicise_version_pending(self, update_name, update_locales, update_cached_manifests, index_webapps):
     """ Test publishing a pending version """
     version_factory(addon=self.app, version="2.0", file_kw=dict(status=amo.STATUS_PENDING))
     self.app.reload()
     res = self.post()
     eq_(res.status_code, 302)
     eq_(self.get_version_status(), amo.STATUS_PENDING)
     assert not update_name.called
     assert not update_locales.called
Exemplo n.º 10
0
 def test_create_no_switch(self, waffle_mock):
     waffle_mock.return_value = False
     version_factory(addon=self.addon, version='1.1')
     data = {
         'app': self.addon.app_slug,
         'version': '1.1',
         'note_type': '0',
         'body': 'flylikebee'
     }
     self.addon.addonuser_set.create(user=self.user.get_profile())
     res = self.client.post(self.list_url, data=json.dumps(data))
     eq_(res.status_code, 403)
Exemplo n.º 11
0
 def test_create_no_switch(self, waffle_mock):
     waffle_mock.return_value = False
     version_factory(addon=self.addon, version='1.1')
     data = {
         'app': self.addon.app_slug,
         'version': '1.1',
         'note_type': '0',
         'body': 'flylikebee'
     }
     self.addon.addonuser_set.create(user=self.user.get_profile())
     res = self.client.post(self.list_url, data=json.dumps(data))
     eq_(res.status_code, 403)
Exemplo n.º 12
0
 def test_create(self):
     self.create_switch('comm-dashboard')
     version_factory(addon=self.addon, version='1.1')
     data = {
         'app': self.addon.app_slug,
         'version': '1.1',
         'note_type': '0',
         'body': 'flylikebee'
     }
     self.addon.addonuser_set.create(user=self.user.get_profile())
     res = self.client.post(self.list_url, data=json.dumps(data))
     eq_(res.status_code, 200)
     assert self.addon.threads.count()
Exemplo n.º 13
0
 def test_create(self):
     self.create_switch('comm-dashboard')
     version_factory(addon=self.addon, version='1.1')
     data = {
         'app': self.addon.app_slug,
         'version': '1.1',
         'note_type': '0',
         'body': 'flylikebee'
     }
     self.addon.addonuser_set.create(user=self.user.get_profile())
     res = self.client.post(self.list_url, data=json.dumps(data))
     eq_(res.status_code, 201)
     assert self.addon.threads.count()
Exemplo n.º 14
0
    def test_app_threads(self):
        version1 = version_factory(addon=self.addon, version='7.12')
        thread1 = CommunicationThread.objects.create(
            addon=self.addon, version=version1, read_permission_public=True)
        CommunicationThreadCC.objects.create(user=self.profile, thread=thread1)

        version2 = version_factory(addon=self.addon, version='1.16')
        thread2 = CommunicationThread.objects.create(
            addon=self.addon, version=version2, read_permission_public=True)
        CommunicationThreadCC.objects.create(user=self.profile, thread=thread2)

        res = self.client.get(self.list_url, {'app': self.addon.app_slug})
        eq_(res.json['app_threads'],
            [{"id": thread2.id, "version__version": version2.version},
             {"id": thread1.id, "version__version": version1.version}])
Exemplo n.º 15
0
    def test_app_threads(self):
        version1 = version_factory(addon=self.addon, version='7.12')
        thread1 = CommunicationThread.objects.create(
            addon=self.addon, version=version1, read_permission_public=True)
        CommunicationThreadCC.objects.create(user=self.profile, thread=thread1)

        version2 = version_factory(addon=self.addon, version='1.16')
        thread2 = CommunicationThread.objects.create(
            addon=self.addon, version=version2, read_permission_public=True)
        CommunicationThreadCC.objects.create(user=self.profile, thread=thread2)

        res = self.client.get(self.list_url, {'app': self.addon.app_slug})
        eq_(res.json['app_threads'],
            [{"id": thread2.id, "version__version": version2.version},
             {"id": thread1.id, "version__version": version1.version}])
Exemplo n.º 16
0
    def test_app_threads(self):
        version1 = version_factory(addon=self.addon, version='7.12')
        thread1 = CommunicationThread.objects.create(
            addon=self.addon, version=version1, read_permission_public=True)

        version2 = version_factory(addon=self.addon, version='1.16')
        thread2 = CommunicationThread.objects.create(
            addon=self.addon, version=version2, read_permission_public=True)

        for thread in (thread1, thread2):
            res = self.client.get(reverse('comm-thread-detail',
                                  args=[thread.pk]))
            eq_(res.status_code, 200)
            eq_(json.loads(res.content)['app_threads'],
                [{"id": thread2.id, "version__version": version2.version},
                 {"id": thread1.id, "version__version": version1.version}])
Exemplo n.º 17
0
    def test_app_threads(self):
        version1 = version_factory(addon=self.addon, version='7.12')
        thread1 = CommunicationThread.objects.create(
            addon=self.addon, version=version1, read_permission_public=True)

        version2 = version_factory(addon=self.addon, version='1.16')
        thread2 = CommunicationThread.objects.create(
            addon=self.addon, version=version2, read_permission_public=True)

        for thread in (thread1, thread2):
            res = self.client.get(reverse('comm-thread-detail',
                                  args=[thread.pk]))
            eq_(res.status_code, 200)
            eq_(json.loads(res.content)['app_threads'],
                [{"id": thread2.id, "version__version": version2.version},
                 {"id": thread1.id, "version__version": version1.version}])
Exemplo n.º 18
0
 def setUp(self):
     self.app = app_factory(status=amo.STATUS_PUBLIC, is_packaged=True)
     self.ver1 = self.app.current_version
     self.ver1.update(created=self.days_ago(1))
     self.ver2 = version_factory(addon=self.app, version='2.0',
                                 file_kw=dict(status=amo.STATUS_APPROVED))
     self.app.update(_latest_version=self.ver2)
     self.form = forms.PublishForm
Exemplo n.º 19
0
    def test_app_threads(self):
        version1 = version_factory(addon=self.addon, version='7.12')
        thread1 = CommunicationThread.objects.create(
            addon=self.addon, version=version1, read_permission_public=True)
        CommunicationThreadCC.objects.create(user=self.profile, thread=thread1)

        version2 = version_factory(addon=self.addon, version='1.16')
        thread2 = CommunicationThread.objects.create(
            addon=self.addon, version=version2, read_permission_public=True)
        CommunicationThreadCC.objects.create(user=self.profile, thread=thread2)

        self.grant_permission(self.user, 'Apps:Review')
        res = self.client.get(self.list_url, {'app': self.addon.app_slug})
        eq_(res.status_code, 200)
        eq_(res.json['app_threads'],
            [{'id': thread2.id, 'version__version': version2.version},
             {'id': thread1.id, 'version__version': version1.version}])
Exemplo n.º 20
0
 def setUp(self):
     self.app = app_factory(status=amo.STATUS_PUBLIC, is_packaged=True)
     self.ver1 = self.app.current_version
     self.ver1.update(created=self.days_ago(1))
     self.ver2 = version_factory(addon=self.app, version='2.0',
                                 file_kw=dict(status=amo.STATUS_APPROVED))
     self.app.update(_latest_version=self.ver2)
     self.form = forms.PublishForm
Exemplo n.º 21
0
    def test_app_threads(self):
        version1 = version_factory(addon=self.addon, version='7.12')
        thread1 = CommunicationThread.objects.create(
            addon=self.addon, version=version1, read_permission_public=True)
        CommunicationThreadCC.objects.create(user=self.profile, thread=thread1)

        version2 = version_factory(addon=self.addon, version='1.16')
        thread2 = CommunicationThread.objects.create(
            addon=self.addon, version=version2, read_permission_public=True)
        CommunicationThreadCC.objects.create(user=self.profile, thread=thread2)

        self.grant_permission(self.user.get_profile(), 'Apps:Review')
        res = self.client.get(self.list_url, {'app': self.addon.app_slug})
        eq_(res.status_code, 200)
        eq_(res.json['app_threads'],
            [{'id': thread2.id, 'version__version': version2.version},
             {'id': thread1.id, 'version__version': version1.version}])
Exemplo n.º 22
0
 def test_publicise_version_new_waiting(self, update_name, update_locales, update_cached_manifests):
     ver = version_factory(addon=self.app, version="2.0", file_kw=dict(status=amo.STATUS_PUBLIC_WAITING))
     eq_(self.app.latest_version, ver)
     assert self.app.current_version != ver
     res = self.post()
     eq_(res.status_code, 302)
     eq_(self.get_version_status(), amo.STATUS_PUBLIC)
     eq_(self.get_webapp().current_version, ver)
     assert update_name.called
     assert update_locales.called
Exemplo n.º 23
0
    def test_version_number(self):
        version = version_factory(addon=self.addon, version="7.12")
        thread = CommunicationThread.objects.create(addon=self.addon, version=version, read_permission_public=True)

        res = self.client.get(reverse("comm-thread-detail", args=[thread.pk]))
        eq_(json.loads(res.content)["version_number"], "7.12")
        eq_(json.loads(res.content)["version_is_obsolete"], False)

        version.delete()
        res = self.client.get(reverse("comm-thread-detail", args=[thread.pk]))
        eq_(json.loads(res.content)["version_number"], "7.12")
        eq_(json.loads(res.content)["version_is_obsolete"], True)
Exemplo n.º 24
0
 def test_get_manifest_json_multiple_versions(self):
     # Post the real app/version, but backfill an older version.
     webapp = self.post_addon()
     webapp.update(status=amo.STATUS_PUBLIC, _current_version=None)
     version = version_factory(addon=webapp, version="0.5", created=self.days_ago(1))
     version.files.update(created=self.days_ago(1))
     webapp = Webapp.objects.get(pk=webapp.pk)
     webapp.update_version()
     assert webapp.current_version
     assert webapp.current_version.has_files
     mf = self._get_manifest_json()
     eq_(webapp.get_manifest_json(), mf)
Exemplo n.º 25
0
 def test_publicise_version_new_waiting(self, update_name, update_locales,
                                        update_cached_manifests):
     ver = version_factory(addon=self.app, version='2.0',
                           file_kw=dict(status=amo.STATUS_PUBLIC_WAITING))
     eq_(self.app.latest_version, ver)
     assert self.app.current_version != ver
     res = self.post()
     eq_(res.status_code, 302)
     eq_(self.get_version_status(), amo.STATUS_PUBLIC)
     eq_(self.get_webapp().current_version, ver)
     assert update_name.called
     assert update_locales.called
Exemplo n.º 26
0
 def test_get_manifest_json_multiple_versions(self):
     # Post the real app/version, but backfill an older version.
     webapp = self.post_addon()
     webapp.update(status=amo.STATUS_PUBLIC, _current_version=None)
     version = version_factory(addon=webapp, version='0.5',
                               created=self.days_ago(1))
     version.files.update(created=self.days_ago(1))
     webapp = Webapp.objects.get(pk=webapp.pk)
     webapp.update_version()
     assert webapp.current_version
     assert webapp.current_version.has_files
     mf = self._get_manifest_json()
     eq_(webapp.get_manifest_json(), mf)
Exemplo n.º 27
0
    def test_version_number(self):
        version = version_factory(addon=self.addon, version='7.12')
        thread = CommunicationThread.objects.create(
            addon=self.addon, version=version, read_permission_public=True)

        res = self.client.get(reverse('comm-thread-detail', args=[thread.pk]))
        eq_(json.loads(res.content)['version_number'], '7.12')
        eq_(json.loads(res.content)['version_is_obsolete'], False)

        version.delete()
        res = self.client.get(reverse('comm-thread-detail', args=[thread.pk]))
        eq_(json.loads(res.content)['version_number'], '7.12')
        eq_(json.loads(res.content)['version_is_obsolete'], True)
Exemplo n.º 28
0
    def test_search_plugin(self, parse_addon):
        """Test that search plugins are handled correctly."""

        parse_addon.return_value = {'guid': None, 'version': '20140103'}

        addon = addon_factory(type=amo.ADDON_SEARCH,
                              version_kw={'version': '20140101'})

        assert addon.guid is None
        self.check_upload(None)

        self.validate_upload.reset_mock()
        self.save_file.reset_mock()

        version = version_factory(addon=addon, version='20140102')
        self.check_file(version.files.get(), None)
Exemplo n.º 29
0
    def test_search_plugin(self, parse_addon):
        """Test that search plugins are handled correctly."""

        parse_addon.return_value = {'guid': None, 'version': '20140103'}

        addon = addon_factory(type=amo.ADDON_SEARCH,
                              version_kw={'version': '20140101'})

        assert addon.guid is None
        self.check_upload(None)

        self.validate_upload.reset_mock()
        self.save_file.reset_mock()

        version = version_factory(addon=addon, version='20140102')
        self.check_file(version.files.get(), None)
Exemplo n.º 30
0
    def test_update_name_from_package_manifest_version(self):
        evil_manifest = {'name': u'Evil App Name'}
        good_manifest = {
            'name': u'Good App Name',
        }
        latest_version = version_factory(
            addon=self.webapp,
            version='2.3',
            file_kw=dict(status=amo.STATUS_DISABLED))
        current_version = self.webapp.current_version
        AppManifest.objects.create(version=current_version,
                                   manifest=json.dumps(good_manifest))
        AppManifest.objects.create(version=latest_version,
                                   manifest=json.dumps(evil_manifest))

        self.webapp.update_name_from_package_manifest()
        eq_(self.webapp.name, u'Good App Name')
Exemplo n.º 31
0
    def test_update_name_from_package_manifest_version(self):
        evil_manifest = {
            'name': u'Evil App Name'
        }
        good_manifest = {
            'name': u'Good App Name',
        }
        latest_version = version_factory(addon=self.webapp, version='2.3',
            file_kw=dict(status=amo.STATUS_DISABLED))
        current_version = self.webapp.current_version
        AppManifest.objects.create(version=current_version,
                                   manifest=json.dumps(good_manifest))
        AppManifest.objects.create(version=latest_version,
                                   manifest=json.dumps(evil_manifest))

        self.webapp.update_name_from_package_manifest()
        eq_(self.webapp.name, u'Good App Name')
Exemplo n.º 32
0
 def test_get_manifest_json_multiple_version_disabled(self):
     # Post an app, then emulate a reviewer reject and add a new, pending
     # version.
     webapp = self.post_addon()
     webapp.latest_version.files.update(status=amo.STATUS_DISABLED)
     webapp.update(status=amo.STATUS_REJECTED, _current_version=None)
     version = version_factory(addon=webapp, version='2.0',
                               file_kw=dict(status=amo.STATUS_PENDING))
     mf = self._get_manifest_json()
     AppManifest.objects.create(version=version,
                                manifest=json.dumps(mf))
     webapp.update_version()
     webapp = webapp.reload()
     eq_(webapp.latest_version, version)
     self.file = version.all_files[0]
     self.setup_files()
     eq_(webapp.get_manifest_json(), mf)
Exemplo n.º 33
0
 def test_get_manifest_json_multiple_version_disabled(self):
     # Post an app, then emulate a reviewer reject and add a new, pending
     # version.
     webapp = self.post_addon()
     webapp.latest_version.files.update(status=amo.STATUS_DISABLED)
     webapp.latest_version.update(created=self.days_ago(1))
     webapp.update(status=amo.STATUS_REJECTED, _current_version=None)
     version = version_factory(addon=webapp,
                               version='2.0',
                               file_kw=dict(status=amo.STATUS_PENDING))
     mf = self._get_manifest_json()
     AppManifest.objects.create(version=version, manifest=json.dumps(mf))
     webapp.update_version()
     webapp = webapp.reload()
     eq_(webapp.latest_version, version)
     self.file = version.all_files[0]
     self.setup_files()
     eq_(webapp.get_manifest_json(), mf)
Exemplo n.º 34
0
    def test_publicise_version_new_waiting(self, update_name, update_locales, update_cached_manifests, index_webapps):
        """ Test publishing the latest, public_waiting version when the app is
        already public, with a current version also already public """
        eq_(self.app.status, amo.STATUS_PUBLIC)
        ver = version_factory(addon=self.app, version="2.0", file_kw=dict(status=amo.STATUS_PUBLIC_WAITING))
        eq_(self.app.latest_version, ver)
        ok_(self.app.current_version != ver)

        index_webapps.delay.reset_mock()
        eq_(update_name.call_count, 0)
        eq_(update_locales.call_count, 0)
        eq_(update_cached_manifests.delay.call_count, 0)

        res = self.post()
        eq_(res.status_code, 302)
        eq_(self.get_version_status(), amo.STATUS_PUBLIC)
        eq_(self.get_webapp().current_version, ver)

        eq_(update_name.call_count, 1)
        eq_(update_locales.call_count, 1)
        eq_(update_cached_manifests.delay.call_count, 1)
Exemplo n.º 35
0
    def test_get(self):
        first_version = self.app.current_version
        rev = Review.objects.create(addon=self.app, user=self.user,
                                    version=first_version,
                                    body=u'I lôve this app',
                                    rating=0)
        ver = version_factory(addon=self.app, version='2.0',
                              file_kw=dict(status=amo.STATUS_PUBLIC))
        self.app.update_version()
        res = self.client.get(self._collection_url())
        data = json.loads(res.content)

        eq_(data['info']['average'], self.app.average_rating)
        eq_(data['info']['slug'], self.app.app_slug)
        eq_(data['info']['current_version'], ver.version)
        eq_(data['user']['can_rate'], True)
        eq_(data['user']['has_rated'], True)
        eq_(len(data['objects']), 1)
        eq_(data['objects'][0]['body'], rev.body)
        eq_(data['objects'][0]['rating'], rev.rating)
        eq_(data['objects'][0]['version']['version'], first_version.version)
Exemplo n.º 36
0
    def test_get(self):
        first_version = self.app.current_version
        rev = Review.objects.create(addon=self.app,
                                    user=self.user,
                                    version=first_version,
                                    body=u'I lôve this app',
                                    rating=0)
        ver = version_factory(addon=self.app,
                              version='2.0',
                              file_kw=dict(status=amo.STATUS_PUBLIC))
        self.app.update_version()
        res = self.client.get(self._collection_url())
        data = json.loads(res.content)

        eq_(data['info']['average'], self.app.average_rating)
        eq_(data['info']['slug'], self.app.app_slug)
        eq_(data['info']['current_version'], ver.version)
        eq_(data['user']['can_rate'], True)
        eq_(data['user']['has_rated'], True)
        eq_(len(data['objects']), 1)
        eq_(data['objects'][0]['body'], rev.body)
        eq_(data['objects'][0]['rating'], rev.rating)
        eq_(data['objects'][0]['version']['version'], first_version.version)