From 31d362d7155cb92474262c7b00e9553ee5c8f395 Mon Sep 17 00:00:00 2001 From: Mouse Reeve Date: Thu, 17 Feb 2022 14:14:31 -0800 Subject: [PATCH] Adds setup views tests --- bookwyrm/tests/views/test_setup.py | 79 ++++++++++++++++++++++++++++++ bookwyrm/views/setup.py | 2 +- bw-dev | 2 +- 3 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 bookwyrm/tests/views/test_setup.py diff --git a/bookwyrm/tests/views/test_setup.py b/bookwyrm/tests/views/test_setup.py new file mode 100644 index 00000000..5f15604f --- /dev/null +++ b/bookwyrm/tests/views/test_setup.py @@ -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()) diff --git a/bookwyrm/views/setup.py b/bookwyrm/views/setup.py index 8fb968b4..188c6a0a 100644 --- a/bookwyrm/views/setup.py +++ b/bookwyrm/views/setup.py @@ -64,7 +64,7 @@ class CreateAdmin(View): @transaction.atomic def post(self, request): """Create that user""" - site = models.SiteSettings.get() + site = models.SiteSettings.objects.get() # you can't create an admin user if you're in config mode if not site.install_mode: raise PermissionDenied() diff --git a/bw-dev b/bw-dev index f9148066..969c5c92 100755 --- a/bw-dev +++ b/bw-dev @@ -101,7 +101,7 @@ case "$CMD" in docker-compose restart celery_worker ;; pytest) - runweb pytest --no-cov-on-fail "$@" + runweb --no-deps pytest --no-cov-on-fail "$@" ;; collectstatic) runweb python manage.py collectstatic --no-input