forked from mirrors/bookwyrm
corrects tests for latest code changes
This commit is contained in:
parent
20395ff2ec
commit
cfa4cb015d
8 changed files with 22 additions and 73 deletions
|
@ -76,7 +76,8 @@ class ActivityObject:
|
||||||
if not isinstance(self, model.activity_serializer):
|
if not isinstance(self, model.activity_serializer):
|
||||||
raise TypeError('Wrong activity type for model')
|
raise TypeError('Wrong activity type for model')
|
||||||
|
|
||||||
# check for an existing instance
|
# check for an existing instance, if we're not updating a known obj
|
||||||
|
if not instance:
|
||||||
try:
|
try:
|
||||||
return model.objects.get(remote_id=self.id)
|
return model.objects.get(remote_id=self.id)
|
||||||
except model.DoesNotExist:
|
except model.DoesNotExist:
|
||||||
|
|
|
@ -64,8 +64,10 @@ class SelfConnector(TestCase):
|
||||||
|
|
||||||
|
|
||||||
def test_search_default_filter(self):
|
def test_search_default_filter(self):
|
||||||
self.edition.default = True
|
''' it should get rid of duplicate editions for the same work '''
|
||||||
self.edition.save()
|
self.work.default_edition = self.edition
|
||||||
|
self.work.save()
|
||||||
|
|
||||||
results = self.connector.search('Anonymous')
|
results = self.connector.search('Anonymous')
|
||||||
self.assertEqual(len(results), 1)
|
self.assertEqual(len(results), 1)
|
||||||
self.assertEqual(results[0].title, 'Edition of Example Work')
|
self.assertEqual(results[0].title, 'Edition of Example Work')
|
||||||
|
|
|
@ -17,6 +17,7 @@ class Favorite(TestCase):
|
||||||
self.local_user = models.User.objects.create_user(
|
self.local_user = models.User.objects.create_user(
|
||||||
'mouse', 'mouse@mouse.com', 'mouseword',
|
'mouse', 'mouse@mouse.com', 'mouseword',
|
||||||
remote_id='http://local.com/user/mouse')
|
remote_id='http://local.com/user/mouse')
|
||||||
|
|
||||||
self.status = models.Status.objects.create(
|
self.status = models.Status.objects.create(
|
||||||
user=self.local_user,
|
user=self.local_user,
|
||||||
content='Test status',
|
content='Test status',
|
||||||
|
@ -33,24 +34,13 @@ class Favorite(TestCase):
|
||||||
def test_handle_favorite(self):
|
def test_handle_favorite(self):
|
||||||
activity = {
|
activity = {
|
||||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
'@context': 'https://www.w3.org/ns/activitystreams',
|
||||||
'id': 'http://example.com/activity/1',
|
'id': 'http://example.com/fav/1',
|
||||||
|
|
||||||
'type': 'Create',
|
|
||||||
'actor': 'https://example.com/users/rat',
|
'actor': 'https://example.com/users/rat',
|
||||||
'published': 'Mon, 25 May 2020 19:31:20 GMT',
|
'published': 'Mon, 25 May 2020 19:31:20 GMT',
|
||||||
'to': ['https://example.com/user/rat/followers'],
|
|
||||||
'cc': ['https://www.w3.org/ns/activitystreams#Public'],
|
|
||||||
'object': {
|
|
||||||
'@context': 'https://www.w3.org/ns/activitystreams',
|
|
||||||
'id': 'http://example.com/fav/1',
|
|
||||||
'type': 'Like',
|
|
||||||
'actor': 'https://example.com/users/rat',
|
|
||||||
'object': 'http://local.com/status/1',
|
'object': 'http://local.com/status/1',
|
||||||
},
|
|
||||||
'signature': {}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result = incoming.handle_favorite(activity)
|
incoming.handle_favorite(activity)
|
||||||
|
|
||||||
fav = models.Favorite.objects.get(remote_id='http://example.com/fav/1')
|
fav = models.Favorite.objects.get(remote_id='http://example.com/fav/1')
|
||||||
self.assertEqual(fav.status, self.status)
|
self.assertEqual(fav.status, self.status)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
''' when a remote user changes their profile '''
|
||||||
import json
|
import json
|
||||||
import pathlib
|
import pathlib
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
|
@ -39,17 +39,8 @@ class Book(TestCase):
|
||||||
title='Invalid Book'
|
title='Invalid Book'
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_default_edition(self):
|
|
||||||
''' a work should always be able to produce a deafult edition '''
|
|
||||||
self.assertIsInstance(self.work.default_edition, models.Edition)
|
|
||||||
self.assertEqual(self.work.default_edition, self.first_edition)
|
|
||||||
|
|
||||||
self.second_edition.default = True
|
|
||||||
self.second_edition.save()
|
|
||||||
|
|
||||||
self.assertEqual(self.work.default_edition, self.second_edition)
|
|
||||||
|
|
||||||
def test_isbn_10_to_13(self):
|
def test_isbn_10_to_13(self):
|
||||||
|
''' checksums and so on '''
|
||||||
isbn_10 = '178816167X'
|
isbn_10 = '178816167X'
|
||||||
isbn_13 = isbn_10_to_13(isbn_10)
|
isbn_13 = isbn_10_to_13(isbn_10)
|
||||||
self.assertEqual(isbn_13, '9781788161671')
|
self.assertEqual(isbn_13, '9781788161671')
|
||||||
|
@ -59,8 +50,8 @@ class Book(TestCase):
|
||||||
self.assertEqual(isbn_13, '9781788161671')
|
self.assertEqual(isbn_13, '9781788161671')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_isbn_13_to_10(self):
|
def test_isbn_13_to_10(self):
|
||||||
|
''' checksums and so on '''
|
||||||
isbn_13 = '9781788161671'
|
isbn_13 = '9781788161671'
|
||||||
isbn_10 = isbn_13_to_10(isbn_13)
|
isbn_10 = isbn_13_to_10(isbn_13)
|
||||||
self.assertEqual(isbn_10, '178816167X')
|
self.assertEqual(isbn_10, '178816167X')
|
||||||
|
|
|
@ -38,16 +38,6 @@ class Shelving(TestCase):
|
||||||
# make sure the book is on the shelf
|
# make sure the book is on the shelf
|
||||||
self.assertEqual(shelf.books.get(), self.book)
|
self.assertEqual(shelf.books.get(), self.book)
|
||||||
|
|
||||||
# it should have posted a status about this
|
|
||||||
status = models.GeneratedNote.objects.get()
|
|
||||||
self.assertEqual(status.content, 'wants to read')
|
|
||||||
self.assertEqual(status.user, self.user)
|
|
||||||
self.assertEqual(status.mention_books.count(), 1)
|
|
||||||
self.assertEqual(status.mention_books.first(), self.book)
|
|
||||||
|
|
||||||
# and it should not create a read-through
|
|
||||||
self.assertEqual(models.ReadThrough.objects.count(), 0)
|
|
||||||
|
|
||||||
|
|
||||||
def test_handle_shelve_reading(self):
|
def test_handle_shelve_reading(self):
|
||||||
shelf = models.Shelf.objects.get(identifier='reading')
|
shelf = models.Shelf.objects.get(identifier='reading')
|
||||||
|
@ -56,20 +46,6 @@ class Shelving(TestCase):
|
||||||
# make sure the book is on the shelf
|
# make sure the book is on the shelf
|
||||||
self.assertEqual(shelf.books.get(), self.book)
|
self.assertEqual(shelf.books.get(), self.book)
|
||||||
|
|
||||||
# it should have posted a status about this
|
|
||||||
status = models.GeneratedNote.objects.order_by('-published_date').first()
|
|
||||||
self.assertEqual(status.content, 'started reading')
|
|
||||||
self.assertEqual(status.user, self.user)
|
|
||||||
self.assertEqual(status.mention_books.count(), 1)
|
|
||||||
self.assertEqual(status.mention_books.first(), self.book)
|
|
||||||
|
|
||||||
# and it should create a read-through
|
|
||||||
readthrough = models.ReadThrough.objects.get()
|
|
||||||
self.assertEqual(readthrough.user, self.user)
|
|
||||||
self.assertEqual(readthrough.book.id, self.book.id)
|
|
||||||
self.assertIsNotNone(readthrough.start_date)
|
|
||||||
self.assertIsNone(readthrough.finish_date)
|
|
||||||
|
|
||||||
|
|
||||||
def test_handle_shelve_read(self):
|
def test_handle_shelve_read(self):
|
||||||
shelf = models.Shelf.objects.get(identifier='read')
|
shelf = models.Shelf.objects.get(identifier='read')
|
||||||
|
@ -78,20 +54,6 @@ class Shelving(TestCase):
|
||||||
# make sure the book is on the shelf
|
# make sure the book is on the shelf
|
||||||
self.assertEqual(shelf.books.get(), self.book)
|
self.assertEqual(shelf.books.get(), self.book)
|
||||||
|
|
||||||
# it should have posted a status about this
|
|
||||||
status = models.GeneratedNote.objects.order_by('-published_date').first()
|
|
||||||
self.assertEqual(status.content, 'finished reading')
|
|
||||||
self.assertEqual(status.user, self.user)
|
|
||||||
self.assertEqual(status.mention_books.count(), 1)
|
|
||||||
self.assertEqual(status.mention_books.first(), self.book)
|
|
||||||
|
|
||||||
# and it should update the existing read-through
|
|
||||||
readthrough = models.ReadThrough.objects.get()
|
|
||||||
self.assertEqual(readthrough.user, self.user)
|
|
||||||
self.assertEqual(readthrough.book.id, self.book.id)
|
|
||||||
self.assertIsNotNone(readthrough.start_date)
|
|
||||||
self.assertIsNotNone(readthrough.finish_date)
|
|
||||||
|
|
||||||
|
|
||||||
def test_handle_unshelve(self):
|
def test_handle_unshelve(self):
|
||||||
self.shelf.books.add(self.book)
|
self.shelf.books.add(self.book)
|
||||||
|
|
|
@ -15,6 +15,8 @@ class Book(TestCase):
|
||||||
title='Example Edition',
|
title='Example Edition',
|
||||||
parent_work=self.work
|
parent_work=self.work
|
||||||
)
|
)
|
||||||
|
self.work.default_edition = self.edition
|
||||||
|
self.work.save()
|
||||||
|
|
||||||
self.connector = models.Connector.objects.create(
|
self.connector = models.Connector.objects.create(
|
||||||
identifier='test_connector',
|
identifier='test_connector',
|
||||||
|
|
|
@ -39,6 +39,7 @@ class Signature(TestCase):
|
||||||
)
|
)
|
||||||
|
|
||||||
def send(self, signature, now, data, digest):
|
def send(self, signature, now, data, digest):
|
||||||
|
''' test request '''
|
||||||
c = Client()
|
c = Client()
|
||||||
return c.post(
|
return c.post(
|
||||||
urlsplit(self.rat.inbox).path,
|
urlsplit(self.rat.inbox).path,
|
||||||
|
@ -73,13 +74,13 @@ class Signature(TestCase):
|
||||||
|
|
||||||
def test_wrong_signature(self):
|
def test_wrong_signature(self):
|
||||||
''' Messages must be signed by the right actor.
|
''' Messages must be signed by the right actor.
|
||||||
(cat cannot sign messages on behalf of mouse)
|
(cat cannot sign messages on behalf of mouse) '''
|
||||||
'''
|
|
||||||
response = self.send_test_request(sender=self.mouse, signer=self.cat)
|
response = self.send_test_request(sender=self.mouse, signer=self.cat)
|
||||||
self.assertEqual(response.status_code, 401)
|
self.assertEqual(response.status_code, 401)
|
||||||
|
|
||||||
@responses.activate
|
@responses.activate
|
||||||
def test_remote_signer(self):
|
def test_remote_signer(self):
|
||||||
|
''' signtures for remote users '''
|
||||||
datafile = pathlib.Path(__file__).parent.joinpath('data/ap_user.json')
|
datafile = pathlib.Path(__file__).parent.joinpath('data/ap_user.json')
|
||||||
data = json.loads(datafile.read_bytes())
|
data = json.loads(datafile.read_bytes())
|
||||||
data['id'] = self.fake_remote.remote_id
|
data['id'] = self.fake_remote.remote_id
|
||||||
|
@ -138,7 +139,6 @@ class Signature(TestCase):
|
||||||
json=data,
|
json=data,
|
||||||
status=200)
|
status=200)
|
||||||
|
|
||||||
|
|
||||||
# Key correct:
|
# Key correct:
|
||||||
response = self.send_test_request(sender=self.fake_remote)
|
response = self.send_test_request(sender=self.fake_remote)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
Loading…
Reference in a new issue