Merge branch 'main' into partially-read-shelf
This commit is contained in:
commit
e9dfa42e11
209 changed files with 14317 additions and 4796 deletions
75
bookwyrm/tests/models/test_automod.py
Normal file
75
bookwyrm/tests/models/test_automod.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
""" test for app action functionality """
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import models
|
||||
from bookwyrm.models.antispam import automod_task
|
||||
|
||||
|
||||
@patch("bookwyrm.models.Status.broadcast")
|
||||
@patch("bookwyrm.activitystreams.add_status_task.delay")
|
||||
@patch("bookwyrm.activitystreams.remove_status_task.delay")
|
||||
class AutomodModel(TestCase):
|
||||
"""every response to a get request, html or json"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.mouse",
|
||||
"password",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
)
|
||||
|
||||
def test_automod_task_no_rules(self, *_):
|
||||
"""nothing to see here"""
|
||||
self.assertFalse(models.Report.objects.exists())
|
||||
automod_task()
|
||||
self.assertFalse(models.Report.objects.exists())
|
||||
|
||||
def test_automod_task_user(self, *_):
|
||||
"""scan activity"""
|
||||
self.assertFalse(models.Report.objects.exists())
|
||||
models.AutoMod.objects.create(
|
||||
string_match="hi",
|
||||
flag_users=True,
|
||||
flag_statuses=True,
|
||||
created_by=self.local_user,
|
||||
)
|
||||
|
||||
self.local_user.name = "okay hi"
|
||||
self.local_user.save(broadcast=False, update_fields=["name"])
|
||||
|
||||
automod_task()
|
||||
|
||||
reports = models.Report.objects.all()
|
||||
self.assertEqual(reports.count(), 1)
|
||||
self.assertEqual(reports.first().user, self.local_user)
|
||||
|
||||
def test_automod_status(self, *_):
|
||||
"""scan activity"""
|
||||
self.assertFalse(models.Report.objects.exists())
|
||||
models.AutoMod.objects.create(
|
||||
string_match="hi",
|
||||
flag_users=True,
|
||||
flag_statuses=True,
|
||||
created_by=self.local_user,
|
||||
)
|
||||
|
||||
status = models.Status.objects.create(
|
||||
user=self.local_user, content="hello", content_warning="hi"
|
||||
)
|
||||
|
||||
automod_task()
|
||||
|
||||
reports = models.Report.objects.all()
|
||||
self.assertEqual(reports.count(), 1)
|
||||
self.assertEqual(reports.first().status, status)
|
||||
self.assertEqual(reports.first().user, self.local_user)
|
58
bookwyrm/tests/views/admin/test_automod.py
Normal file
58
bookwyrm/tests/views/admin/test_automod.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
""" test for app action functionality """
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import forms, models, views
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
|
||||
class AutomodViews(TestCase):
|
||||
"""every response to a get request, html or json"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
with patch("bookwyrm.suggested_users.rerank_suggestions_task.delay"), patch(
|
||||
"bookwyrm.activitystreams.populate_stream_task.delay"
|
||||
), patch("bookwyrm.lists_stream.populate_lists_task.delay"):
|
||||
self.local_user = models.User.objects.create_user(
|
||||
"mouse@local.com",
|
||||
"mouse@mouse.mouse",
|
||||
"password",
|
||||
local=True,
|
||||
localname="mouse",
|
||||
)
|
||||
models.SiteSettings.objects.create()
|
||||
|
||||
def test_automod_rules_get(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.AutoMod.as_view()
|
||||
request = self.factory.get("")
|
||||
request.user = self.local_user
|
||||
request.user.is_superuser = True
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_automod_rules_post(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
form = forms.AutoModRuleForm()
|
||||
form.data["string_match"] = "hello"
|
||||
form.data["flag_users"] = True
|
||||
form.data["flag_statuses"] = False
|
||||
form.data["created_by"] = self.local_user
|
||||
|
||||
view = views.AutoMod.as_view()
|
||||
request = self.factory.post("", form.data)
|
||||
request.user = self.local_user
|
||||
request.user.is_superuser = True
|
||||
|
||||
result = view(request)
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
|
@ -37,7 +37,7 @@ class RegisterViews(TestCase):
|
|||
self.anonymous_user.is_authenticated = False
|
||||
|
||||
self.settings = models.SiteSettings.objects.create(
|
||||
id=1, require_confirm_email=False
|
||||
id=1, require_confirm_email=False, allow_registration=True
|
||||
)
|
||||
|
||||
def test_get_redirect(self, *_):
|
||||
|
|
79
bookwyrm/tests/views/test_setup.py
Normal file
79
bookwyrm/tests/views/test_setup.py
Normal file
|
@ -0,0 +1,79 @@
|
|||
""" test for app action functionality """
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.template.response import TemplateResponse
|
||||
from django.test import TestCase
|
||||
from django.test.client import RequestFactory
|
||||
|
||||
from bookwyrm import forms, models, views
|
||||
from bookwyrm.tests.validate_html import validate_html
|
||||
|
||||
|
||||
class SetupViews(TestCase):
|
||||
"""activity feed, statuses, dms"""
|
||||
|
||||
def setUp(self):
|
||||
"""we need basic test data and mocks"""
|
||||
self.factory = RequestFactory()
|
||||
self.site = models.SiteSettings.objects.create(install_mode=True)
|
||||
|
||||
def test_instance_config_permission_denied(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
self.site.install_mode = False
|
||||
self.site.save()
|
||||
view = views.InstanceConfig.as_view()
|
||||
request = self.factory.get("")
|
||||
with self.assertRaises(PermissionDenied):
|
||||
view(request)
|
||||
|
||||
def test_instance_config(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.InstanceConfig.as_view()
|
||||
request = self.factory.get("")
|
||||
|
||||
result = view(request)
|
||||
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_create_admin_get(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
view = views.CreateAdmin.as_view()
|
||||
request = self.factory.get("")
|
||||
|
||||
result = view(request)
|
||||
|
||||
self.assertIsInstance(result, TemplateResponse)
|
||||
validate_html(result.render())
|
||||
self.assertEqual(result.status_code, 200)
|
||||
|
||||
def test_create_admin_post(self):
|
||||
"""there are so many views, this just makes sure it LOADS"""
|
||||
self.site.name = "hello"
|
||||
self.site.save()
|
||||
self.assertFalse(self.site.allow_registration)
|
||||
self.assertTrue(self.site.require_confirm_email)
|
||||
self.assertTrue(self.site.install_mode)
|
||||
|
||||
view = views.CreateAdmin.as_view()
|
||||
|
||||
form = forms.RegisterForm()
|
||||
form.data["localname"] = "mouse"
|
||||
form.data["password"] = "mouseword"
|
||||
form.data["email"] = "aaa@bbb.ccc"
|
||||
request = self.factory.post("", form.data)
|
||||
|
||||
with patch("bookwyrm.views.setup.login") as mock:
|
||||
view(request)
|
||||
self.assertTrue(mock.called)
|
||||
|
||||
self.site.refresh_from_db()
|
||||
self.assertFalse(self.site.install_mode)
|
||||
|
||||
user = models.User.objects.get()
|
||||
self.assertTrue(user.is_active)
|
||||
self.assertTrue(user.is_superuser)
|
||||
self.assertTrue(user.is_staff)
|
||||
self.assertTrue(user.shelf_set.exists())
|
Loading…
Add table
Add a link
Reference in a new issue