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()
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()
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()
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
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()
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
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
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)
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()
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()
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}])
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}])
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
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}])
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}])
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
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)
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)
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
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)
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)
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)
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')
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')
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)
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)
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)
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)