diff --git a/bookwyrm/tests/test_outgoing.py b/bookwyrm/tests/test_outgoing.py index 192db0dd..956862e0 100644 --- a/bookwyrm/tests/test_outgoing.py +++ b/bookwyrm/tests/test_outgoing.py @@ -9,8 +9,7 @@ from django.test import TestCase from django.test.client import RequestFactory import responses -from bookwyrm import forms, models, outgoing -from bookwyrm.settings import DOMAIN +from bookwyrm import models, outgoing # pylint: disable=too-many-public-methods diff --git a/bookwyrm/tests/test_views.py b/bookwyrm/tests/test_views.py index c3cce675..fcf88610 100644 --- a/bookwyrm/tests/test_views.py +++ b/bookwyrm/tests/test_views.py @@ -2,7 +2,6 @@ import json from unittest.mock import patch -from django.contrib.auth.models import AnonymousUser from django.http import JsonResponse from django.template.response import TemplateResponse from django.test import TestCase diff --git a/bookwyrm/tests/views/test_status.py b/bookwyrm/tests/views/test_status.py index e3d46178..3d81b46f 100644 --- a/bookwyrm/tests/views/test_status.py +++ b/bookwyrm/tests/views/test_status.py @@ -15,8 +15,25 @@ class StatusViews(TestCase): ''' we need basic test data and mocks ''' self.factory = RequestFactory() self.local_user = models.User.objects.create_user( - 'mouse@local.com', 'mouse@mouse.mouse', 'password', - local=True, localname='mouse') + 'mouse@local.com', 'mouse@mouse.com', 'mouseword', + local=True, localname='mouse', + remote_id='https://example.com/users/mouse', + ) + with patch('bookwyrm.models.user.set_remote_server'): + self.remote_user = models.User.objects.create_user( + 'rat', 'rat@email.com', 'ratword', + local=False, + remote_id='https://example.com/users/rat', + inbox='https://example.com/users/rat/inbox', + outbox='https://example.com/users/rat/outbox', + ) + + work = models.Work.objects.create(title='Test Work') + self.book = models.Edition.objects.create( + title='Example Edition', + remote_id='https://example.com/book/1', + parent_work=work + ) def test_status_page(self): @@ -70,7 +87,7 @@ class StatusViews(TestCase): 'book': self.book.id, 'privacy': 'public', }) - request = self.factory.get('', form.data) + request = self.factory.post('', form.data) request.user = self.local_user with patch('bookwyrm.broadcast.broadcast_task.delay'): view(request, 'comment') @@ -92,8 +109,8 @@ class StatusViews(TestCase): 'reply_parent': parent.id, 'privacy': 'public', }) - request = self.factory.get('', form.data) - request.user = self.local_user + request = self.factory.post('', form.data) + request.user = user with patch('bookwyrm.broadcast.broadcast_task.delay'): view(request, 'reply') status = models.Status.objects.get(user=user) @@ -114,7 +131,7 @@ class StatusViews(TestCase): 'book': self.book.id, 'privacy': 'public', }) - request = self.factory.get('', form.data) + request = self.factory.post('', form.data) request.user = self.local_user with patch('bookwyrm.broadcast.broadcast_task.delay'): @@ -138,7 +155,7 @@ class StatusViews(TestCase): 'book': self.book.id, 'privacy': 'public', }) - request = self.factory.get('', form.data) + request = self.factory.post('', form.data) request.user = self.local_user with patch('bookwyrm.broadcast.broadcast_task.delay'): @@ -147,14 +164,14 @@ class StatusViews(TestCase): form = forms.ReplyForm({ 'content': 'right', - 'user': user, + 'user': user.id, 'privacy': 'public', 'reply_parent': status.id }) - request = self.factory.get('', form.data) - request.user = self.local_user + request = self.factory.post('', form.data) + request.user = user with patch('bookwyrm.broadcast.broadcast_task.delay'): - view(request, 'comment') + view(request, 'reply') reply = models.Status.replies(status).first() self.assertEqual(reply.content, '

right

') diff --git a/bookwyrm/urls.py b/bookwyrm/urls.py index 3054260e..a6e0cd30 100644 --- a/bookwyrm/urls.py +++ b/bookwyrm/urls.py @@ -81,21 +81,19 @@ urlpatterns = [ re_path(r'^delete-status/(?P\d+)/?$', views.DeleteStatus.as_view()), - - re_path(r'^tag/?$', actions.tag), - re_path(r'^untag/?$', actions.untag), - # books - re_path(r'%s(.json)?/?$' % book_path, vviews.book_page), - re_path(r'%s/edit/?$' % book_path, vviews.edit_book_page), - re_path(r'^author/(?P[\w\-]+)/edit/?$', vviews.edit_author_page), - re_path(r'%s/editions(.json)?/?$' % book_path, vviews.editions_page), - # interact re_path(r'^favorite/(?P\d+)/?$', actions.favorite), re_path(r'^unfavorite/(?P\d+)/?$', actions.unfavorite), re_path(r'^boost/(?P\d+)/?$', actions.boost), re_path(r'^unboost/(?P\d+)/?$', actions.unboost), + # books + re_path(r'%s(.json)?/?$' % book_path, vviews.book_page), + re_path(r'%s/edit/?$' % book_path, vviews.edit_book_page), + re_path(r'^author/(?P[\w\-]+)/edit/?$', vviews.edit_author_page), + re_path(r'%s/editions(.json)?/?$' % book_path, vviews.editions_page), + re_path(r'^tag/?$', actions.tag), + re_path(r'^untag/?$', actions.untag), re_path(r'^author/(?P[\w\-]+)(.json)?/?$', vviews.author_page), re_path(r'^tag/(?P.+)\.json/?$', vviews.tag_page), diff --git a/bookwyrm/views/helpers.py b/bookwyrm/views/helpers.py index effc2463..3c3afcce 100644 --- a/bookwyrm/views/helpers.py +++ b/bookwyrm/views/helpers.py @@ -1,6 +1,12 @@ ''' helper functions used in various views ''' +import re +from requests import HTTPError from django.db.models import Q -from bookwyrm import models + +from bookwyrm import activitypub, models +from bookwyrm.connectors import ConnectorException, get_data +from bookwyrm.utils import regex + def get_user_from_username(username): ''' helper function to resolve a localname or a username to a user '''