Merge siteroot application

This commit is contained in:
Sascha Ißbrücker
2025-03-09 05:50:05 +01:00
parent b037de14c9
commit 2d3bd13a12
84 changed files with 864 additions and 822 deletions

View File

@@ -7,7 +7,7 @@ from django.test import TestCase
class AppOptionsTestCase(TestCase):
def setUp(self) -> None:
self.settings_module = importlib.import_module("siteroot.settings.base")
self.settings_module = importlib.import_module("bookmarks.settings.base")
def test_empty_csrf_trusted_origins(self):
module = importlib.reload(self.settings_module)

View File

@@ -16,17 +16,17 @@ class AuthApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
def test_auth_with_token_keyword(self):
self.authenticate("Token")
url = reverse("bookmarks:user-profile")
url = reverse("linkding:user-profile")
self.get(url, expected_status_code=status.HTTP_200_OK)
def test_auth_with_bearer_keyword(self):
self.authenticate("Bearer")
url = reverse("bookmarks:user-profile")
url = reverse("linkding:user-profile")
self.get(url, expected_status_code=status.HTTP_200_OK)
def test_auth_with_unknown_keyword(self):
self.authenticate("Key")
url = reverse("bookmarks:user-profile")
url = reverse("linkding:user-profile")
self.get(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)

View File

@@ -21,7 +21,7 @@ class AuthProxySupportTest(TestCase):
)
headers = {"REMOTE_USER": user.username}
response = self.client.get(reverse("bookmarks:index"), **headers)
response = self.client.get(reverse("linkding:bookmarks.index"), **headers)
self.assertEqual(response.status_code, 200)
@@ -43,7 +43,7 @@ class AuthProxySupportTest(TestCase):
)
headers = {"Custom-User": user.username}
response = self.client.get(reverse("bookmarks:index"), **headers)
response = self.client.get(reverse("linkding:bookmarks.index"), **headers)
self.assertEqual(response.status_code, 200)
@@ -53,6 +53,8 @@ class AuthProxySupportTest(TestCase):
)
headers = {"REMOTE_USER": user.username}
response = self.client.get(reverse("bookmarks:index"), **headers, follow=True)
response = self.client.get(
reverse("linkding:bookmarks.index"), **headers, follow=True
)
self.assertRedirects(response, "/login/?next=%2Fbookmarks")

View File

@@ -37,7 +37,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark()
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"archive": [bookmark.id],
},
@@ -54,7 +54,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(user=other_user)
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"archive": [bookmark.id],
},
@@ -69,7 +69,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(is_archived=True)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"unarchive": [bookmark.id],
},
@@ -85,7 +85,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(is_archived=True, user=other_user)
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"unarchive": [bookmark.id],
},
@@ -99,7 +99,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark()
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"remove": [bookmark.id],
},
@@ -114,7 +114,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(user=other_user)
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"remove": [bookmark.id],
},
@@ -126,7 +126,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(unread=True)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"mark_as_read": [bookmark.id],
},
@@ -139,7 +139,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(shared=True)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"unshare": [bookmark.id],
},
@@ -156,7 +156,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(user=other_user, shared=True)
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"unshare": [bookmark.id],
},
@@ -172,7 +172,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark()
with patch.object(tasks, "_create_html_snapshot_task"):
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"create_html_snapshot": [bookmark.id],
},
@@ -187,7 +187,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(user=other_user)
with patch.object(tasks, "_create_html_snapshot_task"):
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"create_html_snapshot": [bookmark.id],
},
@@ -202,7 +202,7 @@ class BookmarkActionViewTestCase(
with patch.object(assets, "upload_asset") as mock_upload_asset:
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{"upload_asset": bookmark.id, "upload_asset_file": upload_file},
)
self.assertEqual(response.status_code, 302)
@@ -223,7 +223,7 @@ class BookmarkActionViewTestCase(
with patch.object(assets, "upload_asset") as mock_upload_asset:
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{"upload_asset": bookmark.id, "upload_asset_file": upload_file},
)
self.assertEqual(response.status_code, 404)
@@ -237,7 +237,7 @@ class BookmarkActionViewTestCase(
upload_file = SimpleUploadedFile("test.txt", file_content)
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{"upload_asset": bookmark.id, "upload_asset_file": upload_file},
)
self.assertEqual(response.status_code, 403)
@@ -246,7 +246,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark()
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{"upload_asset": bookmark.id},
)
self.assertEqual(response.status_code, 400)
@@ -256,7 +256,7 @@ class BookmarkActionViewTestCase(
asset = self.setup_asset(bookmark)
response = self.client.post(
reverse("bookmarks:index.action"), {"remove_asset": asset.id}
reverse("linkding:bookmarks.index.action"), {"remove_asset": asset.id}
)
self.assertEqual(response.status_code, 302)
self.assertFalse(BookmarkAsset.objects.filter(id=asset.id).exists())
@@ -267,7 +267,7 @@ class BookmarkActionViewTestCase(
asset = self.setup_asset(bookmark)
response = self.client.post(
reverse("bookmarks:index.action"), {"remove_asset": asset.id}
reverse("linkding:bookmarks.index.action"), {"remove_asset": asset.id}
)
self.assertEqual(response.status_code, 404)
self.assertTrue(BookmarkAsset.objects.filter(id=asset.id).exists())
@@ -276,7 +276,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark()
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"update_state": bookmark.id,
"is_archived": "on",
@@ -296,7 +296,7 @@ class BookmarkActionViewTestCase(
bookmark = self.setup_bookmark(user=other_user)
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"update_state": bookmark.id,
"is_archived": "on",
@@ -317,7 +317,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark()
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_archive"],
"bulk_execute": [""],
@@ -342,7 +342,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(user=other_user)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_archive"],
"bulk_execute": [""],
@@ -364,7 +364,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(is_archived=True)
self.client.post(
reverse("bookmarks:archived.action"),
reverse("linkding:bookmarks.archived.action"),
{
"bulk_action": ["bulk_unarchive"],
"bulk_execute": [""],
@@ -389,7 +389,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(is_archived=True, user=other_user)
self.client.post(
reverse("bookmarks:archived.action"),
reverse("linkding:bookmarks.archived.action"),
{
"bulk_action": ["bulk_unarchive"],
"bulk_execute": [""],
@@ -411,7 +411,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark()
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_delete"],
"bulk_execute": [""],
@@ -436,7 +436,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(user=other_user)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_delete"],
"bulk_execute": [""],
@@ -460,7 +460,7 @@ class BookmarkActionViewTestCase(
tag2 = self.setup_tag()
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_tag"],
"bulk_execute": [""],
@@ -492,7 +492,7 @@ class BookmarkActionViewTestCase(
tag2 = self.setup_tag()
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_tag"],
"bulk_execute": [""],
@@ -521,7 +521,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(tags=[tag1, tag2])
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_untag"],
"bulk_execute": [""],
@@ -553,7 +553,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(tags=[tag1, tag2], user=other_user)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_untag"],
"bulk_execute": [""],
@@ -580,7 +580,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(unread=True)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_read"],
"bulk_execute": [""],
@@ -605,7 +605,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(unread=True, user=other_user)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_read"],
"bulk_execute": [""],
@@ -627,7 +627,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(unread=False)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_unread"],
"bulk_execute": [""],
@@ -652,7 +652,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(unread=False, user=other_user)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_unread"],
"bulk_execute": [""],
@@ -674,7 +674,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(shared=False)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_share"],
"bulk_execute": [""],
@@ -699,7 +699,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(shared=False, user=other_user)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_share"],
"bulk_execute": [""],
@@ -721,7 +721,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(shared=True)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_unshare"],
"bulk_execute": [""],
@@ -746,7 +746,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark(shared=True, user=other_user)
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_unshare"],
"bulk_execute": [""],
@@ -768,7 +768,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark()
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_archive"],
"bulk_execute": [""],
@@ -784,7 +784,7 @@ class BookmarkActionViewTestCase(
self.setup_numbered_bookmarks(100)
self.client.post(
reverse("bookmarks:index.action") + "?page=2",
reverse("linkding:bookmarks.index.action") + "?page=2",
{
"bulk_action": ["bulk_delete"],
"bulk_execute": [""],
@@ -813,7 +813,7 @@ class BookmarkActionViewTestCase(
self.assertIsNotNone(Bookmark.objects.filter(title="Bookmark 3").first())
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_delete"],
"bulk_execute": [""],
@@ -833,7 +833,7 @@ class BookmarkActionViewTestCase(
self.assertEqual(3, Bookmark.objects.filter(title__startswith="foo").count())
self.client.post(
reverse("bookmarks:index.action") + "?q=foo",
reverse("linkding:bookmarks.index.action") + "?q=foo",
{
"bulk_action": ["bulk_delete"],
"bulk_execute": [""],
@@ -858,7 +858,7 @@ class BookmarkActionViewTestCase(
)
self.client.post(
reverse("bookmarks:archived.action"),
reverse("linkding:bookmarks.archived.action"),
{
"bulk_action": ["bulk_delete"],
"bulk_execute": [""],
@@ -878,7 +878,7 @@ class BookmarkActionViewTestCase(
self.assertEqual(3, Bookmark.objects.filter(title__startswith="foo").count())
self.client.post(
reverse("bookmarks:archived.action") + "?q=foo",
reverse("linkding:bookmarks.archived.action") + "?q=foo",
{
"bulk_action": ["bulk_delete"],
"bulk_execute": [""],
@@ -893,7 +893,7 @@ class BookmarkActionViewTestCase(
self.setup_bulk_edit_scope_test_data()
response = self.client.post(
reverse("bookmarks:shared.action"),
reverse("linkding:bookmarks.shared.action"),
{
"bulk_action": ["bulk_delete"],
"bulk_execute": [""],
@@ -908,7 +908,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark()
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_archive"],
"bulk_execute": [""],
@@ -917,7 +917,7 @@ class BookmarkActionViewTestCase(
self.assertEqual(response.status_code, 302)
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bulk_action": ["bulk_archive"],
"bulk_execute": [""],
@@ -934,7 +934,7 @@ class BookmarkActionViewTestCase(
bookmark3 = self.setup_bookmark()
self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
{
"bookmark_id": [
str(bookmark1.id),
@@ -947,22 +947,22 @@ class BookmarkActionViewTestCase(
self.assertBookmarksAreUnmodified([bookmark1, bookmark2, bookmark3])
def test_index_action_redirects_to_index_with_query_params(self):
url = reverse("bookmarks:index.action") + "?q=foo&page=2"
redirect_url = reverse("bookmarks:index") + "?q=foo&page=2"
url = reverse("linkding:bookmarks.index.action") + "?q=foo&page=2"
redirect_url = reverse("linkding:bookmarks.index") + "?q=foo&page=2"
response = self.client.post(url)
self.assertRedirects(response, redirect_url)
def test_archived_action_redirects_to_archived_with_query_params(self):
url = reverse("bookmarks:archived.action") + "?q=foo&page=2"
redirect_url = reverse("bookmarks:archived") + "?q=foo&page=2"
url = reverse("linkding:bookmarks.archived.action") + "?q=foo&page=2"
redirect_url = reverse("linkding:bookmarks.archived") + "?q=foo&page=2"
response = self.client.post(url)
self.assertRedirects(response, redirect_url)
def test_shared_action_redirects_to_shared_with_query_params(self):
url = reverse("bookmarks:shared.action") + "?q=foo&page=2"
redirect_url = reverse("bookmarks:shared") + "?q=foo&page=2"
url = reverse("linkding:bookmarks.shared.action") + "?q=foo&page=2"
redirect_url = reverse("linkding:bookmarks.shared") + "?q=foo&page=2"
response = self.client.post(url)
self.assertRedirects(response, redirect_url)
@@ -1012,7 +1012,7 @@ class BookmarkActionViewTestCase(
def test_index_action_with_turbo_returns_bookmark_update(self):
fixture = self.bookmark_update_fixture()
response = self.client.post(
reverse("bookmarks:index.action"),
reverse("linkding:bookmarks.index.action"),
HTTP_ACCEPT="text/vnd.turbo-stream.html",
)
@@ -1030,7 +1030,7 @@ class BookmarkActionViewTestCase(
def test_archived_action_with_turbo_returns_bookmark_update(self):
fixture = self.bookmark_update_fixture()
response = self.client.post(
reverse("bookmarks:archived.action"),
reverse("linkding:bookmarks.archived.action"),
HTTP_ACCEPT="text/vnd.turbo-stream.html",
)
@@ -1048,7 +1048,7 @@ class BookmarkActionViewTestCase(
def test_shared_action_with_turbo_returns_bookmark_update(self):
fixture = self.bookmark_update_fixture()
response = self.client.post(
reverse("bookmarks:shared.action"),
reverse("linkding:bookmarks.shared.action"),
HTTP_ACCEPT="text/vnd.turbo-stream.html",
)

View File

@@ -46,7 +46,7 @@ class BookmarkArchivedViewTestCase(
self.setup_bookmark(is_archived=True, user=other_user),
]
response = self.client.get(reverse("bookmarks:archived"))
response = self.client.get(reverse("linkding:bookmarks.archived"))
self.assertVisibleBookmarks(response, visible_bookmarks)
self.assertInvisibleBookmarks(response, invisible_bookmarks)
@@ -59,7 +59,7 @@ class BookmarkArchivedViewTestCase(
3, prefix="bar", archived=True
)
response = self.client.get(reverse("bookmarks:archived") + "?q=foo")
response = self.client.get(reverse("linkding:bookmarks.archived") + "?q=foo")
html = collapse_whitespace(response.content.decode())
self.assertVisibleBookmarks(response, visible_bookmarks)
@@ -84,7 +84,7 @@ class BookmarkArchivedViewTestCase(
unarchived_bookmarks + other_user_bookmarks
)
response = self.client.get(reverse("bookmarks:archived"))
response = self.client.get(reverse("linkding:bookmarks.archived"))
self.assertVisibleTags(response, visible_tags)
self.assertInvisibleTags(response, invisible_tags)
@@ -100,7 +100,7 @@ class BookmarkArchivedViewTestCase(
visible_tags = self.get_tags_from_bookmarks(visible_bookmarks)
invisible_tags = self.get_tags_from_bookmarks(invisible_bookmarks)
response = self.client.get(reverse("bookmarks:archived") + "?q=foo")
response = self.client.get(reverse("linkding:bookmarks.archived") + "?q=foo")
self.assertVisibleTags(response, visible_tags)
self.assertInvisibleTags(response, invisible_tags)
@@ -132,7 +132,7 @@ class BookmarkArchivedViewTestCase(
unread_tags = self.get_tags_from_bookmarks(unread_bookmarks)
read_tags = self.get_tags_from_bookmarks(read_bookmarks)
response = self.client.get(reverse("bookmarks:archived"))
response = self.client.get(reverse("linkding:bookmarks.archived"))
self.assertVisibleBookmarks(response, unread_bookmarks)
self.assertInvisibleBookmarks(response, read_bookmarks)
self.assertVisibleTags(response, unread_tags)
@@ -149,7 +149,8 @@ class BookmarkArchivedViewTestCase(
self.setup_bookmark(is_archived=True, tags=tags)
response = self.client.get(
reverse("bookmarks:archived") + f"?q=%23{tags[0].name}+%23{tags[1].name}"
reverse("linkding:bookmarks.archived")
+ f"?q=%23{tags[0].name}+%23{tags[1].name}"
)
self.assertSelectedTags(response, [tags[0], tags[1]])
@@ -167,7 +168,7 @@ class BookmarkArchivedViewTestCase(
self.setup_bookmark(title=tags[0].name, tags=tags, is_archived=True)
response = self.client.get(
reverse("bookmarks:archived")
reverse("linkding:bookmarks.archived")
+ f"?q={tags[0].name}+%23{tags[1].name.upper()}"
)
@@ -187,7 +188,7 @@ class BookmarkArchivedViewTestCase(
self.setup_bookmark(tags=tags, is_archived=True)
response = self.client.get(
reverse("bookmarks:archived")
reverse("linkding:bookmarks.archived")
+ f"?q={tags[0].name}+%23{tags[1].name.upper()}"
)
@@ -196,7 +197,7 @@ class BookmarkArchivedViewTestCase(
def test_should_open_bookmarks_in_new_page_by_default(self):
visible_bookmarks = self.setup_numbered_bookmarks(3, archived=True)
response = self.client.get(reverse("bookmarks:archived"))
response = self.client.get(reverse("linkding:bookmarks.archived"))
self.assertVisibleBookmarks(response, visible_bookmarks, "_blank")
@@ -207,14 +208,14 @@ class BookmarkArchivedViewTestCase(
visible_bookmarks = self.setup_numbered_bookmarks(3, archived=True)
response = self.client.get(reverse("bookmarks:archived"))
response = self.client.get(reverse("linkding:bookmarks.archived"))
self.assertVisibleBookmarks(response, visible_bookmarks, "_self")
def test_edit_link_return_url_respects_search_options(self):
bookmark = self.setup_bookmark(title="foo", is_archived=True)
edit_url = reverse("bookmarks:edit", args=[bookmark.id])
base_url = reverse("bookmarks:archived")
edit_url = reverse("linkding:bookmarks.edit", args=[bookmark.id])
base_url = reverse("linkding:bookmarks.archived")
# without query params
return_url = urllib.parse.quote(base_url)
@@ -240,8 +241,8 @@ class BookmarkArchivedViewTestCase(
self.assertEditLink(response, url)
def test_bulk_edit_respects_search_options(self):
action_url = reverse("bookmarks:archived.action")
base_url = reverse("bookmarks:archived")
action_url = reverse("linkding:bookmarks.archived.action")
base_url = reverse("linkding:bookmarks.archived")
# without params
url = f"{action_url}"
@@ -264,7 +265,7 @@ class BookmarkArchivedViewTestCase(
self.assertBulkActionForm(response, url)
def test_allowed_bulk_actions(self):
url = reverse("bookmarks:archived")
url = reverse("linkding:bookmarks.archived")
response = self.client.get(url)
html = response.content.decode()
@@ -287,7 +288,7 @@ class BookmarkArchivedViewTestCase(
user_profile.enable_sharing = True
user_profile.save()
url = reverse("bookmarks:archived")
url = reverse("linkding:bookmarks.archived")
response = self.client.get(url)
html = response.content.decode()
@@ -309,13 +310,13 @@ class BookmarkArchivedViewTestCase(
def test_apply_search_preferences(self):
# no params
response = self.client.post(reverse("bookmarks:archived"))
response = self.client.post(reverse("linkding:bookmarks.archived"))
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, reverse("bookmarks:archived"))
self.assertEqual(response.url, reverse("linkding:bookmarks.archived"))
# some params
response = self.client.post(
reverse("bookmarks:archived"),
reverse("linkding:bookmarks.archived"),
{
"q": "foo",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -323,12 +324,13 @@ class BookmarkArchivedViewTestCase(
)
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, reverse("bookmarks:archived") + "?q=foo&sort=title_asc"
response.url,
reverse("linkding:bookmarks.archived") + "?q=foo&sort=title_asc",
)
# params with default value are removed
response = self.client.post(
reverse("bookmarks:archived"),
reverse("linkding:bookmarks.archived"),
{
"q": "foo",
"user": "",
@@ -339,12 +341,12 @@ class BookmarkArchivedViewTestCase(
)
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, reverse("bookmarks:archived") + "?q=foo&unread=yes"
response.url, reverse("linkding:bookmarks.archived") + "?q=foo&unread=yes"
)
# page is removed
response = self.client.post(
reverse("bookmarks:archived"),
reverse("linkding:bookmarks.archived"),
{
"q": "foo",
"page": "2",
@@ -353,7 +355,8 @@ class BookmarkArchivedViewTestCase(
)
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, reverse("bookmarks:archived") + "?q=foo&sort=title_asc"
response.url,
reverse("linkding:bookmarks.archived") + "?q=foo&sort=title_asc",
)
def test_save_search_preferences(self):
@@ -361,7 +364,7 @@ class BookmarkArchivedViewTestCase(
# no params
self.client.post(
reverse("bookmarks:archived"),
reverse("linkding:bookmarks.archived"),
{
"save": "",
},
@@ -378,7 +381,7 @@ class BookmarkArchivedViewTestCase(
# with param
self.client.post(
reverse("bookmarks:archived"),
reverse("linkding:bookmarks.archived"),
{
"save": "",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -396,7 +399,7 @@ class BookmarkArchivedViewTestCase(
# add a param
self.client.post(
reverse("bookmarks:archived"),
reverse("linkding:bookmarks.archived"),
{
"save": "",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -415,7 +418,7 @@ class BookmarkArchivedViewTestCase(
# remove a param
self.client.post(
reverse("bookmarks:archived"),
reverse("linkding:bookmarks.archived"),
{
"save": "",
"unread": BookmarkSearch.FILTER_UNREAD_YES,
@@ -433,7 +436,7 @@ class BookmarkArchivedViewTestCase(
# ignores non-preferences
self.client.post(
reverse("bookmarks:archived"),
reverse("linkding:bookmarks.archived"),
{
"save": "",
"q": "foo",
@@ -453,7 +456,7 @@ class BookmarkArchivedViewTestCase(
)
def test_url_encode_bookmark_actions_url(self):
url = reverse("bookmarks:archived") + "?q=%23foo"
url = reverse("linkding:bookmarks.archived") + "?q=%23foo"
response = self.client.get(url)
html = response.content.decode()
soup = self.make_soup(html)
@@ -467,34 +470,34 @@ class BookmarkArchivedViewTestCase(
def test_encode_search_params(self):
bookmark = self.setup_bookmark(description="alert('xss')", is_archived=True)
url = reverse("bookmarks:archived") + "?q=alert(%27xss%27)"
url = reverse("linkding:bookmarks.archived") + "?q=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
self.assertContains(response, bookmark.url)
url = reverse("bookmarks:archived") + "?sort=alert(%27xss%27)"
url = reverse("linkding:bookmarks.archived") + "?sort=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:archived") + "?unread=alert(%27xss%27)"
url = reverse("linkding:bookmarks.archived") + "?unread=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:archived") + "?shared=alert(%27xss%27)"
url = reverse("linkding:bookmarks.archived") + "?shared=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:archived") + "?user=alert(%27xss%27)"
url = reverse("linkding:bookmarks.archived") + "?user=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:archived") + "?page=alert(%27xss%27)"
url = reverse("linkding:bookmarks.archived") + "?page=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
def test_turbo_frame_details_modal_renders_details_modal_update(self):
bookmark = self.setup_bookmark()
url = reverse("bookmarks:archived") + f"?bookmark_id={bookmark.id}"
url = reverse("linkding:bookmarks.archived") + f"?bookmark_id={bookmark.id}"
response = self.client.get(url, headers={"Turbo-Frame": "details-modal"})
self.assertEqual(200, response.status_code)
@@ -505,7 +508,7 @@ class BookmarkArchivedViewTestCase(
self.assertIsNone(soup.select_one("#tag-cloud-container"))
def test_does_not_include_rss_feed(self):
response = self.client.get(reverse("bookmarks:archived"))
response = self.client.get(reverse("linkding:bookmarks.archived"))
soup = self.make_soup(response.content.decode())
feed = soup.select_one('head link[type="application/rss+xml"]')

View File

@@ -31,7 +31,7 @@ class BookmarkArchivedViewPerformanceTestCase(
# capture number of queries
context = CaptureQueriesContext(self.get_connection())
with context:
response = self.client.get(reverse("bookmarks:archived"))
response = self.client.get(reverse("linkding:bookmarks.archived"))
html = response.content.decode("utf-8")
soup = self.make_soup(html)
list_items = soup.select("li[ld-bookmark-item]")
@@ -46,7 +46,7 @@ class BookmarkArchivedViewPerformanceTestCase(
# assert num queries doesn't increase
with self.assertNumQueries(number_of_queries):
response = self.client.get(reverse("bookmarks:archived"))
response = self.client.get(reverse("linkding:bookmarks.archived"))
html = response.content.decode("utf-8")
soup = self.make_soup(html)
list_items = soup.select("li[ld-bookmark-item]")

View File

@@ -117,13 +117,13 @@ class BookmarkAssetViewTestCase(TestCase, BookmarkFactoryMixin):
self.assertEqual(response.status_code, 200)
def test_view_access(self):
self.view_access_test("bookmarks:assets.view")
self.view_access_test("linkding:assets.view")
def test_view_access_guest_user(self):
self.view_access_guest_user_test("bookmarks:assets.view")
self.view_access_guest_user_test("linkding:assets.view")
def test_reader_view_access(self):
self.view_access_test("bookmarks:assets.read")
self.view_access_test("linkding:assets.read")
def test_reader_view_access_guest_user(self):
self.view_access_guest_user_test("bookmarks:assets.read")
self.view_access_guest_user_test("linkding:assets.read")

View File

@@ -43,7 +43,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
]
url = reverse(
"bookmarks:bookmark_asset-list", kwargs={"bookmark_id": bookmark1.id}
"linkding:bookmark_asset-list", kwargs={"bookmark_id": bookmark1.id}
)
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertEqual(len(response.data["results"]), 3)
@@ -52,7 +52,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.assertAsset(bookmark1_assets[2], response.data["results"][2])
url = reverse(
"bookmarks:bookmark_asset-list", kwargs={"bookmark_id": bookmark2.id}
"linkding:bookmark_asset-list", kwargs={"bookmark_id": bookmark2.id}
)
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertEqual(len(response.data["results"]), 3)
@@ -68,14 +68,14 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_asset(bookmark=bookmark)
url = reverse(
"bookmarks:bookmark_asset-list", kwargs={"bookmark_id": bookmark.id}
"linkding:bookmark_asset-list", kwargs={"bookmark_id": bookmark.id}
)
self.get(url, expected_status_code=status.HTTP_404_NOT_FOUND)
def test_asset_list_requires_authentication(self):
bookmark = self.setup_bookmark()
url = reverse(
"bookmarks:bookmark_asset-list", kwargs={"bookmark_id": bookmark.id}
"linkding:bookmark_asset-list", kwargs={"bookmark_id": bookmark.id}
)
self.get(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -94,7 +94,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
gzip=False,
)
url = reverse(
"bookmarks:bookmark_asset-detail",
"linkding:bookmark_asset-detail",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
response = self.get(url, expected_status_code=status.HTTP_200_OK)
@@ -108,7 +108,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
asset = self.setup_asset(bookmark=bookmark)
url = reverse(
"bookmarks:bookmark_asset-detail",
"linkding:bookmark_asset-detail",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
self.get(url, expected_status_code=status.HTTP_404_NOT_FOUND)
@@ -117,7 +117,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
asset = self.setup_asset(bookmark=bookmark)
url = reverse(
"bookmarks:bookmark_asset-detail",
"linkding:bookmark_asset-detail",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
self.get(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -145,7 +145,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_asset_file(asset=asset, file_content=file_content)
url = reverse(
"bookmarks:bookmark_asset-download",
"linkding:bookmark_asset-download",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
response = self.get(url, expected_status_code=status.HTTP_200_OK)
@@ -173,7 +173,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_asset_file(asset=asset, file_content=file_content)
url = reverse(
"bookmarks:bookmark_asset-download",
"linkding:bookmark_asset-download",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
response = self.get(url, expected_status_code=status.HTTP_200_OK)
@@ -199,7 +199,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
)
url = reverse(
"bookmarks:bookmark_asset-download",
"linkding:bookmark_asset-download",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
self.get(url, expected_status_code=status.HTTP_404_NOT_FOUND)
@@ -212,7 +212,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
asset = self.setup_asset(bookmark=bookmark)
url = reverse(
"bookmarks:bookmark_asset-download",
"linkding:bookmark_asset-download",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
self.get(url, expected_status_code=status.HTTP_404_NOT_FOUND)
@@ -221,7 +221,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
asset = self.setup_asset(bookmark=bookmark)
url = reverse(
"bookmarks:bookmark_asset-download",
"linkding:bookmark_asset-download",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
self.get(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -239,7 +239,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
url = reverse(
"bookmarks:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
"linkding:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
)
file_content = b"test file content"
file_name = "test.txt"
@@ -264,7 +264,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
url = reverse(
"bookmarks:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
"linkding:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
)
response = self.client.post(url, {}, format="multipart")
@@ -276,7 +276,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
other_user = self.setup_user()
bookmark = self.setup_bookmark(user=other_user)
url = reverse(
"bookmarks:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
"linkding:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
)
response = self.client.post(url, {}, format="multipart")
@@ -285,7 +285,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
def test_upload_asset_requires_authentication(self):
bookmark = self.setup_bookmark()
url = reverse(
"bookmarks:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
"linkding:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
)
response = self.client.post(url, {}, format="multipart")
@@ -296,7 +296,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
bookmark = self.setup_bookmark()
url = reverse(
"bookmarks:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
"linkding:bookmark_asset-upload", kwargs={"bookmark_id": bookmark.id}
)
response = self.client.post(url, {}, format="multipart")
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
@@ -309,7 +309,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_asset_file(asset=asset)
url = reverse(
"bookmarks:bookmark_asset-detail",
"linkding:bookmark_asset-detail",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
self.delete(url, expected_status_code=status.HTTP_204_NO_CONTENT)
@@ -325,7 +325,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
asset = self.setup_asset(bookmark=bookmark)
url = reverse(
"bookmarks:bookmark_asset-detail",
"linkding:bookmark_asset-detail",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
self.delete(url, expected_status_code=status.HTTP_404_NOT_FOUND)
@@ -334,7 +334,7 @@ class BookmarkAssetsApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
asset = self.setup_asset(bookmark=bookmark)
url = reverse(
"bookmarks:bookmark_asset-detail",
"linkding:bookmark_asset-detail",
kwargs={"bookmark_id": asset.bookmark.id, "pk": asset.id},
)
self.delete(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)

View File

@@ -15,18 +15,20 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
self.client.force_login(user)
def get_details_form(self, soup, bookmark):
form_url = reverse("bookmarks:index.action") + f"?details={bookmark.id}"
form_url = (
reverse("linkding:bookmarks.index.action") + f"?details={bookmark.id}"
)
return soup.find("form", {"action": form_url, "enctype": "multipart/form-data"})
def get_index_details_modal(self, bookmark):
url = reverse("bookmarks:index") + f"?details={bookmark.id}"
url = reverse("linkding:bookmarks.index") + f"?details={bookmark.id}"
response = self.client.get(url)
soup = self.make_soup(response.content)
modal = soup.find("turbo-frame", {"id": "details-modal"})
return modal
def get_shared_details_modal(self, bookmark):
url = reverse("bookmarks:shared") + f"?details={bookmark.id}"
url = reverse("linkding:bookmarks.shared") + f"?details={bookmark.id}"
response = self.client.get(url)
soup = self.make_soup(response.content)
modal = soup.find("turbo-frame", {"id": "details-modal"})
@@ -55,7 +57,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
# own bookmark
bookmark = self.setup_bookmark()
response = self.client.get(
reverse("bookmarks:index") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.index") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 200)
@@ -63,18 +65,20 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
other_user = self.setup_user()
bookmark = self.setup_bookmark(user=other_user)
response = self.client.get(
reverse("bookmarks:index") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.index") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 404)
# non-existent bookmark - just returns without modal in response
response = self.client.get(reverse("bookmarks:index") + "?details=9999")
response = self.client.get(
reverse("linkding:bookmarks.index") + "?details=9999"
)
self.assertEqual(response.status_code, 200)
# guest user
self.client.logout()
response = self.client.get(
reverse("bookmarks:shared") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.shared") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 404)
@@ -82,7 +86,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
# own bookmark
bookmark = self.setup_bookmark()
response = self.client.get(
reverse("bookmarks:index") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.index") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 200)
@@ -90,18 +94,20 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
other_user = self.setup_user()
bookmark = self.setup_bookmark(user=other_user)
response = self.client.get(
reverse("bookmarks:index") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.index") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 404)
# non-existent bookmark - just returns without modal in response
response = self.client.get(reverse("bookmarks:index") + "?details=9999")
response = self.client.get(
reverse("linkding:bookmarks.index") + "?details=9999"
)
self.assertEqual(response.status_code, 200)
# guest user
self.client.logout()
response = self.client.get(
reverse("bookmarks:shared") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.shared") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 404)
@@ -111,7 +117,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
bookmark = self.setup_bookmark(shared=True, user=other_user)
response = self.client.get(
reverse("bookmarks:shared") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.shared") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 404)
@@ -121,14 +127,14 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
profile.save()
response = self.client.get(
reverse("bookmarks:shared") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.shared") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 200)
# shared bookmark, guest user, no public sharing
self.client.logout()
response = self.client.get(
reverse("bookmarks:shared") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.shared") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 404)
@@ -137,7 +143,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
profile.save()
response = self.client.get(
reverse("bookmarks:shared") + f"?details={bookmark.id}"
reverse("linkding:bookmarks.shared") + f"?details={bookmark.id}"
)
self.assertEqual(response.status_code, 200)
@@ -231,7 +237,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
soup = self.get_index_details_modal(bookmark)
self.assertEqual(self.count_weblinks(soup), 3)
reader_mode_url = reverse("bookmarks:assets.read", args=[asset.id])
reader_mode_url = reverse("linkding:assets.read", args=[asset.id])
link = self.find_weblink(soup, reader_mode_url)
self.assertIsNotNone(link)
@@ -465,7 +471,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
for tag in bookmark.tags.all():
tag_link = section.find("a", string=f"#{tag.name}")
self.assertIsNotNone(tag_link)
expected_url = reverse("bookmarks:index") + f"?q=%23{tag.name}"
expected_url = reverse("linkding:bookmarks.index") + f"?q=%23{tag.name}"
self.assertEqual(tag_link["href"], expected_url)
def test_description(self):
@@ -519,7 +525,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
form = delete_button.find_parent("form")
self.assertIsNotNone(form)
expected_url = reverse("bookmarks:index.action")
expected_url = reverse("linkding:bookmarks.index.action")
self.assertEqual(expected_url, form["action"])
def test_actions_visibility(self):
@@ -605,7 +611,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
self.assertIsNotNone(asset_text)
self.assertIn(asset.display_name, asset_text.text)
view_url = reverse("bookmarks:assets.view", args=[asset.id])
view_url = reverse("linkding:assets.view", args=[asset.id])
view_link = asset_item.find("a", {"href": view_url})
self.assertIsNotNone(view_link)
@@ -688,7 +694,7 @@ class BookmarkDetailsModalTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin
soup = self.get_index_details_modal(bookmark)
asset_item = self.find_asset(soup, asset)
view_url = reverse("bookmarks:assets.view", args=[asset.id])
view_url = reverse("linkding:assets.view", args=[asset.id])
view_link = asset_item.find("a", {"href": view_url})
self.assertIsNone(view_link)

View File

@@ -28,14 +28,18 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_render_successfully(self):
bookmark = self.setup_bookmark()
response = self.client.get(reverse("bookmarks:edit", args=[bookmark.id]))
response = self.client.get(
reverse("linkding:bookmarks.edit", args=[bookmark.id])
)
self.assertEqual(response.status_code, 200)
def test_should_edit_bookmark(self):
bookmark = self.setup_bookmark()
form_data = self.create_form_data({"id": bookmark.id})
self.client.post(reverse("bookmarks:edit", args=[bookmark.id]), form_data)
self.client.post(
reverse("linkding:bookmarks.edit", args=[bookmark.id]), form_data
)
bookmark.refresh_from_db()
@@ -55,7 +59,7 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
form_data = self.create_form_data({"id": bookmark.id, "url": ""})
response = self.client.post(
reverse("bookmarks:edit", args=[bookmark.id]), form_data
reverse("linkding:bookmarks.edit", args=[bookmark.id]), form_data
)
self.assertEqual(response.status_code, 422)
@@ -63,12 +67,16 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
form_data = self.create_form_data({"id": bookmark.id, "unread": True})
self.client.post(reverse("bookmarks:edit", args=[bookmark.id]), form_data)
self.client.post(
reverse("linkding:bookmarks.edit", args=[bookmark.id]), form_data
)
bookmark.refresh_from_db()
self.assertTrue(bookmark.unread)
form_data = self.create_form_data({"id": bookmark.id, "unread": False})
self.client.post(reverse("bookmarks:edit", args=[bookmark.id]), form_data)
self.client.post(
reverse("linkding:bookmarks.edit", args=[bookmark.id]), form_data
)
bookmark.refresh_from_db()
self.assertFalse(bookmark.unread)
@@ -76,12 +84,16 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
form_data = self.create_form_data({"id": bookmark.id, "shared": True})
self.client.post(reverse("bookmarks:edit", args=[bookmark.id]), form_data)
self.client.post(
reverse("linkding:bookmarks.edit", args=[bookmark.id]), form_data
)
bookmark.refresh_from_db()
self.assertTrue(bookmark.shared)
form_data = self.create_form_data({"id": bookmark.id, "shared": False})
self.client.post(reverse("bookmarks:edit", args=[bookmark.id]), form_data)
self.client.post(
reverse("linkding:bookmarks.edit", args=[bookmark.id]), form_data
)
bookmark.refresh_from_db()
self.assertFalse(bookmark.shared)
@@ -95,7 +107,9 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
notes="edited notes",
)
response = self.client.get(reverse("bookmarks:edit", args=[bookmark.id]))
response = self.client.get(
reverse("linkding:bookmarks.edit", args=[bookmark.id])
)
html = response.content.decode()
self.assertInHTML(
@@ -151,21 +165,21 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
# if the URL isn't modified it's not a duplicate
form_data = self.create_form_data({"url": edited_bookmark.url})
response = self.client.post(
reverse("bookmarks:edit", args=[edited_bookmark.id]), form_data
reverse("linkding:bookmarks.edit", args=[edited_bookmark.id]), form_data
)
self.assertEqual(response.status_code, 302)
# if the URL is already bookmarked by another user, it's not a duplicate
form_data = self.create_form_data({"url": other_user_bookmark.url})
response = self.client.post(
reverse("bookmarks:edit", args=[edited_bookmark.id]), form_data
reverse("linkding:bookmarks.edit", args=[edited_bookmark.id]), form_data
)
self.assertEqual(response.status_code, 302)
# if the URL is already bookmarked by the same user, it's a duplicate
form_data = self.create_form_data({"url": existing_bookmark.url})
response = self.client.post(
reverse("bookmarks:edit", args=[edited_bookmark.id]), form_data
reverse("linkding:bookmarks.edit", args=[edited_bookmark.id]), form_data
)
self.assertEqual(response.status_code, 422)
self.assertInHTML(
@@ -180,23 +194,23 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
form_data = self.create_form_data()
url = (
reverse("bookmarks:edit", args=[bookmark.id])
reverse("linkding:bookmarks.edit", args=[bookmark.id])
+ "?return_url="
+ reverse("bookmarks:close")
+ reverse("linkding:bookmarks.close")
)
response = self.client.post(url, form_data)
self.assertRedirects(response, reverse("bookmarks:close"))
self.assertRedirects(response, reverse("linkding:bookmarks.close"))
def test_should_redirect_to_bookmark_index_by_default(self):
bookmark = self.setup_bookmark()
form_data = self.create_form_data()
response = self.client.post(
reverse("bookmarks:edit", args=[bookmark.id]), form_data
reverse("linkding:bookmarks.edit", args=[bookmark.id]), form_data
)
self.assertRedirects(response, reverse("bookmarks:index"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
def test_should_not_redirect_to_external_url(self):
bookmark = self.setup_bookmark()
@@ -204,17 +218,17 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
def post_with(return_url, follow=None):
form_data = self.create_form_data()
url = (
reverse("bookmarks:edit", args=[bookmark.id])
reverse("linkding:bookmarks.edit", args=[bookmark.id])
+ f"?return_url={return_url}"
)
return self.client.post(url, form_data, follow=follow)
response = post_with("https://example.com")
self.assertRedirects(response, reverse("bookmarks:index"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
response = post_with("//example.com")
self.assertRedirects(response, reverse("bookmarks:index"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
response = post_with("://example.com")
self.assertRedirects(response, reverse("bookmarks:index"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
response = post_with("/foo//example.com", follow=True)
self.assertEqual(response.status_code, 404)
@@ -227,7 +241,7 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
form_data = self.create_form_data({"id": bookmark.id})
response = self.client.post(
reverse("bookmarks:edit", args=[bookmark.id]), form_data
reverse("linkding:bookmarks.edit", args=[bookmark.id]), form_data
)
bookmark.refresh_from_db()
self.assertNotEqual(bookmark.url, form_data["url"])
@@ -238,7 +252,9 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
self.user.profile.enable_sharing = False
self.user.profile.save()
response = self.client.get(reverse("bookmarks:edit", args=[bookmark.id]))
response = self.client.get(
reverse("linkding:bookmarks.edit", args=[bookmark.id])
)
html = response.content.decode()
self.assertInHTML(
@@ -255,7 +271,9 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
self.user.profile.enable_sharing = True
self.user.profile.save()
response = self.client.get(reverse("bookmarks:edit", args=[bookmark.id]))
response = self.client.get(
reverse("linkding:bookmarks.edit", args=[bookmark.id])
)
html = response.content.decode()
self.assertInHTML(
@@ -272,12 +290,16 @@ class BookmarkEditViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_hide_notes_if_there_are_no_notes(self):
bookmark = self.setup_bookmark()
response = self.client.get(reverse("bookmarks:edit", args=[bookmark.id]))
response = self.client.get(
reverse("linkding:bookmarks.edit", args=[bookmark.id])
)
self.assertContains(response, '<details class="notes">', count=1)
def test_should_show_notes_if_there_are_notes(self):
bookmark = self.setup_bookmark(notes="test notes")
response = self.client.get(reverse("bookmarks:edit", args=[bookmark.id]))
response = self.client.get(
reverse("linkding:bookmarks.edit", args=[bookmark.id])
)
self.assertContains(response, '<details class="notes" open>', count=1)

View File

@@ -44,7 +44,7 @@ class BookmarkIndexViewTestCase(
self.setup_bookmark(user=other_user),
]
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
self.assertVisibleBookmarks(response, visible_bookmarks)
self.assertInvisibleBookmarks(response, invisible_bookmarks)
@@ -53,7 +53,7 @@ class BookmarkIndexViewTestCase(
visible_bookmarks = self.setup_numbered_bookmarks(3, prefix="foo")
invisible_bookmarks = self.setup_numbered_bookmarks(3, prefix="bar")
response = self.client.get(reverse("bookmarks:index") + "?q=foo")
response = self.client.get(reverse("linkding:bookmarks.index") + "?q=foo")
self.assertVisibleBookmarks(response, visible_bookmarks)
self.assertInvisibleBookmarks(response, invisible_bookmarks)
@@ -75,7 +75,7 @@ class BookmarkIndexViewTestCase(
archived_bookmarks + other_user_bookmarks
)
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
self.assertVisibleTags(response, visible_tags)
self.assertInvisibleTags(response, invisible_tags)
@@ -91,7 +91,7 @@ class BookmarkIndexViewTestCase(
visible_tags = self.get_tags_from_bookmarks(visible_bookmarks)
invisible_tags = self.get_tags_from_bookmarks(invisible_bookmarks)
response = self.client.get(reverse("bookmarks:index") + "?q=foo")
response = self.client.get(reverse("linkding:bookmarks.index") + "?q=foo")
self.assertVisibleTags(response, visible_tags)
self.assertInvisibleTags(response, invisible_tags)
@@ -113,7 +113,7 @@ class BookmarkIndexViewTestCase(
unread_tags = self.get_tags_from_bookmarks(unread_bookmarks)
read_tags = self.get_tags_from_bookmarks(read_bookmarks)
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
self.assertVisibleBookmarks(response, unread_bookmarks)
self.assertInvisibleBookmarks(response, read_bookmarks)
self.assertVisibleTags(response, unread_tags)
@@ -130,7 +130,7 @@ class BookmarkIndexViewTestCase(
self.setup_bookmark(tags=tags)
response = self.client.get(
reverse("bookmarks:index")
reverse("linkding:bookmarks.index")
+ f"?q=%23{tags[0].name}+%23{tags[1].name.upper()}"
)
@@ -149,7 +149,8 @@ class BookmarkIndexViewTestCase(
self.setup_bookmark(title=tags[0].name, tags=tags)
response = self.client.get(
reverse("bookmarks:index") + f"?q={tags[0].name}+%23{tags[1].name.upper()}"
reverse("linkding:bookmarks.index")
+ f"?q={tags[0].name}+%23{tags[1].name.upper()}"
)
self.assertSelectedTags(response, [tags[1]])
@@ -168,7 +169,8 @@ class BookmarkIndexViewTestCase(
self.setup_bookmark(tags=tags)
response = self.client.get(
reverse("bookmarks:index") + f"?q={tags[0].name}+%23{tags[1].name.upper()}"
reverse("linkding:bookmarks.index")
+ f"?q={tags[0].name}+%23{tags[1].name.upper()}"
)
self.assertSelectedTags(response, [tags[0], tags[1]])
@@ -176,7 +178,7 @@ class BookmarkIndexViewTestCase(
def test_should_open_bookmarks_in_new_page_by_default(self):
visible_bookmarks = self.setup_numbered_bookmarks(3)
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
self.assertVisibleBookmarks(response, visible_bookmarks, "_blank")
@@ -187,14 +189,14 @@ class BookmarkIndexViewTestCase(
visible_bookmarks = self.setup_numbered_bookmarks(3)
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
self.assertVisibleBookmarks(response, visible_bookmarks, "_self")
def test_edit_link_return_url_respects_search_options(self):
bookmark = self.setup_bookmark(title="foo")
edit_url = reverse("bookmarks:edit", args=[bookmark.id])
base_url = reverse("bookmarks:index")
edit_url = reverse("linkding:bookmarks.edit", args=[bookmark.id])
base_url = reverse("linkding:bookmarks.index")
# without query params
return_url = urllib.parse.quote(base_url)
@@ -220,8 +222,8 @@ class BookmarkIndexViewTestCase(
self.assertEditLink(response, url)
def test_bulk_edit_respects_search_options(self):
action_url = reverse("bookmarks:index.action")
base_url = reverse("bookmarks:index")
action_url = reverse("linkding:bookmarks.index.action")
base_url = reverse("linkding:bookmarks.index")
# without params
url = f"{action_url}"
@@ -244,7 +246,7 @@ class BookmarkIndexViewTestCase(
self.assertBulkActionForm(response, url)
def test_allowed_bulk_actions(self):
url = reverse("bookmarks:index")
url = reverse("linkding:bookmarks.index")
response = self.client.get(url)
html = response.content.decode()
@@ -267,7 +269,7 @@ class BookmarkIndexViewTestCase(
user_profile.enable_sharing = True
user_profile.save()
url = reverse("bookmarks:index")
url = reverse("linkding:bookmarks.index")
response = self.client.get(url)
html = response.content.decode()
@@ -289,13 +291,13 @@ class BookmarkIndexViewTestCase(
def test_apply_search_preferences(self):
# no params
response = self.client.post(reverse("bookmarks:index"))
response = self.client.post(reverse("linkding:bookmarks.index"))
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, reverse("bookmarks:index"))
self.assertEqual(response.url, reverse("linkding:bookmarks.index"))
# some params
response = self.client.post(
reverse("bookmarks:index"),
reverse("linkding:bookmarks.index"),
{
"q": "foo",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -303,12 +305,12 @@ class BookmarkIndexViewTestCase(
)
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, reverse("bookmarks:index") + "?q=foo&sort=title_asc"
response.url, reverse("linkding:bookmarks.index") + "?q=foo&sort=title_asc"
)
# params with default value are removed
response = self.client.post(
reverse("bookmarks:index"),
reverse("linkding:bookmarks.index"),
{
"q": "foo",
"user": "",
@@ -318,11 +320,13 @@ class BookmarkIndexViewTestCase(
},
)
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, reverse("bookmarks:index") + "?q=foo&unread=yes")
self.assertEqual(
response.url, reverse("linkding:bookmarks.index") + "?q=foo&unread=yes"
)
# page is removed
response = self.client.post(
reverse("bookmarks:index"),
reverse("linkding:bookmarks.index"),
{
"q": "foo",
"page": "2",
@@ -331,7 +335,7 @@ class BookmarkIndexViewTestCase(
)
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, reverse("bookmarks:index") + "?q=foo&sort=title_asc"
response.url, reverse("linkding:bookmarks.index") + "?q=foo&sort=title_asc"
)
def test_save_search_preferences(self):
@@ -339,7 +343,7 @@ class BookmarkIndexViewTestCase(
# no params
self.client.post(
reverse("bookmarks:index"),
reverse("linkding:bookmarks.index"),
{
"save": "",
},
@@ -356,7 +360,7 @@ class BookmarkIndexViewTestCase(
# with param
self.client.post(
reverse("bookmarks:index"),
reverse("linkding:bookmarks.index"),
{
"save": "",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -374,7 +378,7 @@ class BookmarkIndexViewTestCase(
# add a param
self.client.post(
reverse("bookmarks:index"),
reverse("linkding:bookmarks.index"),
{
"save": "",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -393,7 +397,7 @@ class BookmarkIndexViewTestCase(
# remove a param
self.client.post(
reverse("bookmarks:index"),
reverse("linkding:bookmarks.index"),
{
"save": "",
"unread": BookmarkSearch.FILTER_UNREAD_YES,
@@ -411,7 +415,7 @@ class BookmarkIndexViewTestCase(
# ignores non-preferences
self.client.post(
reverse("bookmarks:index"),
reverse("linkding:bookmarks.index"),
{
"save": "",
"q": "foo",
@@ -431,7 +435,7 @@ class BookmarkIndexViewTestCase(
)
def test_url_encode_bookmark_actions_url(self):
url = reverse("bookmarks:index") + "?q=%23foo"
url = reverse("linkding:bookmarks.index") + "?q=%23foo"
response = self.client.get(url)
html = response.content.decode()
soup = self.make_soup(html)
@@ -445,34 +449,34 @@ class BookmarkIndexViewTestCase(
def test_encode_search_params(self):
bookmark = self.setup_bookmark(description="alert('xss')")
url = reverse("bookmarks:index") + "?q=alert(%27xss%27)"
url = reverse("linkding:bookmarks.index") + "?q=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
self.assertContains(response, bookmark.url)
url = reverse("bookmarks:index") + "?sort=alert(%27xss%27)"
url = reverse("linkding:bookmarks.index") + "?sort=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:index") + "?unread=alert(%27xss%27)"
url = reverse("linkding:bookmarks.index") + "?unread=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:index") + "?shared=alert(%27xss%27)"
url = reverse("linkding:bookmarks.index") + "?shared=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:index") + "?user=alert(%27xss%27)"
url = reverse("linkding:bookmarks.index") + "?user=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:index") + "?page=alert(%27xss%27)"
url = reverse("linkding:bookmarks.index") + "?page=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
def test_turbo_frame_details_modal_renders_details_modal_update(self):
bookmark = self.setup_bookmark()
url = reverse("bookmarks:index") + f"?bookmark_id={bookmark.id}"
url = reverse("linkding:bookmarks.index") + f"?bookmark_id={bookmark.id}"
response = self.client.get(url, headers={"Turbo-Frame": "details-modal"})
self.assertEqual(200, response.status_code)
@@ -483,7 +487,7 @@ class BookmarkIndexViewTestCase(
self.assertIsNone(soup.select_one("#tag-cloud-container"))
def test_does_not_include_rss_feed(self):
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
soup = self.make_soup(response.content.decode())
feed = soup.select_one('head link[type="application/rss+xml"]')

View File

@@ -31,7 +31,7 @@ class BookmarkIndexViewPerformanceTestCase(
# capture number of queries
context = CaptureQueriesContext(self.get_connection())
with context:
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode("utf-8")
soup = self.make_soup(html)
list_items = soup.select("li[ld-bookmark-item]")
@@ -46,7 +46,7 @@ class BookmarkIndexViewPerformanceTestCase(
# assert num queries doesn't increase
with self.assertNumQueries(number_of_queries):
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode("utf-8")
soup = self.make_soup(html)
list_items = soup.select("li[ld-bookmark-item]")

View File

@@ -29,7 +29,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_create_new_bookmark(self):
form_data = self.create_form_data()
self.client.post(reverse("bookmarks:new"), form_data)
self.client.post(reverse("linkding:bookmarks.new"), form_data)
self.assertEqual(Bookmark.objects.count(), 1)
@@ -48,13 +48,13 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_return_422_with_invalid_form(self):
form_data = self.create_form_data({"url": ""})
response = self.client.post(reverse("bookmarks:new"), form_data)
response = self.client.post(reverse("linkding:bookmarks.new"), form_data)
self.assertEqual(response.status_code, 422)
def test_should_create_new_unread_bookmark(self):
form_data = self.create_form_data({"unread": True})
self.client.post(reverse("bookmarks:new"), form_data)
self.client.post(reverse("linkding:bookmarks.new"), form_data)
self.assertEqual(Bookmark.objects.count(), 1)
@@ -64,7 +64,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_create_new_shared_bookmark(self):
form_data = self.create_form_data({"shared": True})
self.client.post(reverse("bookmarks:new"), form_data)
self.client.post(reverse("linkding:bookmarks.new"), form_data)
self.assertEqual(Bookmark.objects.count(), 1)
@@ -72,7 +72,9 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
self.assertTrue(bookmark.shared)
def test_should_prefill_url_from_url_parameter(self):
response = self.client.get(reverse("bookmarks:new") + "?url=http://example.com")
response = self.client.get(
reverse("linkding:bookmarks.new") + "?url=http://example.com"
)
html = response.content.decode()
self.assertInHTML(
@@ -83,7 +85,9 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
)
def test_should_prefill_title_from_url_parameter(self):
response = self.client.get(reverse("bookmarks:new") + "?title=Example%20Title")
response = self.client.get(
reverse("linkding:bookmarks.new") + "?title=Example%20Title"
)
html = response.content.decode()
self.assertInHTML(
@@ -95,7 +99,8 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_prefill_description_from_url_parameter(self):
response = self.client.get(
reverse("bookmarks:new") + "?description=Example%20Site%20Description"
reverse("linkding:bookmarks.new")
+ "?description=Example%20Site%20Description"
)
html = response.content.decode()
@@ -107,7 +112,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_prefill_notes_from_url_parameter(self):
response = self.client.get(
reverse("bookmarks:new")
reverse("linkding:bookmarks.new")
+ "?notes=%2A%2AFind%2A%2A%20more%20info%20%5Bhere%5D%28http%3A%2F%2Fexample.com%29"
)
html = response.content.decode()
@@ -129,7 +134,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
)
def test_should_enable_auto_close_when_specified_in_url_parameter(self):
response = self.client.get(reverse("bookmarks:new") + "?auto_close")
response = self.client.get(reverse("linkding:bookmarks.new") + "?auto_close")
html = response.content.decode()
self.assertInHTML(
@@ -139,7 +144,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
)
def test_should_not_enable_auto_close_when_not_specified_in_url_parameter(self):
response = self.client.get(reverse("bookmarks:new"))
response = self.client.get(reverse("linkding:bookmarks.new"))
html = response.content.decode()
self.assertInHTML(
@@ -149,30 +154,31 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_redirect_to_index_view(self):
form_data = self.create_form_data()
response = self.client.post(reverse("bookmarks:new"), form_data)
response = self.client.post(reverse("linkding:bookmarks.new"), form_data)
self.assertRedirects(response, reverse("bookmarks:index"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
def test_should_not_redirect_to_external_url(self):
form_data = self.create_form_data()
response = self.client.post(
reverse("bookmarks:new") + "?return_url=https://example.com", form_data
reverse("linkding:bookmarks.new") + "?return_url=https://example.com",
form_data,
)
self.assertRedirects(response, reverse("bookmarks:index"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
def test_auto_close_should_redirect_to_close_view(self):
form_data = self.create_form_data({"auto_close": "true"})
response = self.client.post(reverse("bookmarks:new"), form_data)
response = self.client.post(reverse("linkding:bookmarks.new"), form_data)
self.assertRedirects(response, reverse("bookmarks:close"))
self.assertRedirects(response, reverse("linkding:bookmarks.close"))
def test_should_respect_share_profile_setting(self):
self.user.profile.enable_sharing = False
self.user.profile.save()
response = self.client.get(reverse("bookmarks:new"))
response = self.client.get(reverse("linkding:bookmarks.new"))
html = response.content.decode()
self.assertInHTML(
@@ -189,7 +195,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
self.user.profile.enable_sharing = True
self.user.profile.save()
response = self.client.get(reverse("bookmarks:new"))
response = self.client.get(reverse("linkding:bookmarks.new"))
html = response.content.decode()
self.assertInHTML(
@@ -208,7 +214,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
self.user.profile.enable_sharing = True
self.user.profile.save()
response = self.client.get(reverse("bookmarks:new"))
response = self.client.get(reverse("linkding:bookmarks.new"))
html = response.content.decode()
self.assertInHTML(
"""
@@ -222,7 +228,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
self.user.profile.enable_public_sharing = True
self.user.profile.save()
response = self.client.get(reverse("bookmarks:new"))
response = self.client.get(reverse("linkding:bookmarks.new"))
html = response.content.decode()
self.assertInHTML(
"""
@@ -235,12 +241,14 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_hide_notes_if_there_are_no_notes(self):
bookmark = self.setup_bookmark()
response = self.client.get(reverse("bookmarks:edit", args=[bookmark.id]))
response = self.client.get(
reverse("linkding:bookmarks.edit", args=[bookmark.id])
)
self.assertContains(response, '<details class="notes">', count=1)
def test_should_not_check_unread_by_default(self):
response = self.client.get(reverse("bookmarks:new"))
response = self.client.get(reverse("linkding:bookmarks.new"))
html = response.content.decode()
self.assertInHTML(
@@ -252,7 +260,7 @@ class BookmarkNewViewTestCase(TestCase, BookmarkFactoryMixin):
self.user.profile.default_mark_unread = True
self.user.profile.save()
response = self.client.get(reverse("bookmarks:new"))
response = self.client.get(reverse("linkding:bookmarks.new"))
html = response.content.decode()
self.assertInHTML(

View File

@@ -75,7 +75,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=True, user=user4),
]
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleBookmarks(response, visible_bookmarks)
self.assertInvisibleBookmarks(response, invisible_bookmarks)
@@ -94,7 +94,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=True, user=user3),
]
url = reverse("bookmarks:shared") + "?user=" + user1.username
url = reverse("linkding:bookmarks.shared") + "?user=" + user1.username
response = self.client.get(url)
self.assertVisibleBookmarks(response, visible_bookmarks)
@@ -109,7 +109,7 @@ class BookmarkSharedViewTestCase(
)
invisible_bookmarks = self.setup_numbered_bookmarks(3, shared=True, user=user)
response = self.client.get(reverse("bookmarks:shared") + "?q=foo")
response = self.client.get(reverse("linkding:bookmarks.shared") + "?q=foo")
self.assertVisibleBookmarks(response, visible_bookmarks)
self.assertInvisibleBookmarks(response, invisible_bookmarks)
@@ -125,7 +125,7 @@ class BookmarkSharedViewTestCase(
3, shared=True, user=user2, prefix="user2"
)
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleBookmarks(response, visible_bookmarks)
self.assertInvisibleBookmarks(response, invisible_bookmarks)
@@ -159,7 +159,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=False, user=user3, tags=[invisible_tags[2]])
self.setup_bookmark(shared=True, user=user4, tags=[invisible_tags[3]])
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleTags(response, visible_tags)
self.assertInvisibleTags(response, invisible_tags)
@@ -181,7 +181,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=True, user=user2, tags=[invisible_tags[0]])
self.setup_bookmark(shared=True, user=user3, tags=[invisible_tags[1]])
url = reverse("bookmarks:shared") + "?user=" + user1.username
url = reverse("linkding:bookmarks.shared") + "?user=" + user1.username
response = self.client.get(url)
self.assertVisibleTags(response, visible_tags)
@@ -217,7 +217,9 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=True, user=user2, tags=[invisible_tags[1]])
self.setup_bookmark(shared=True, user=user3, tags=[invisible_tags[2]])
response = self.client.get(reverse("bookmarks:shared") + "?q=searchvalue")
response = self.client.get(
reverse("linkding:bookmarks.shared") + "?q=searchvalue"
)
self.assertVisibleTags(response, visible_tags)
self.assertInvisibleTags(response, invisible_tags)
@@ -241,7 +243,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=True, user=user2, tags=[invisible_tags[0]])
self.setup_bookmark(shared=True, user=user2, tags=[invisible_tags[1]])
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleTags(response, visible_tags)
self.assertInvisibleTags(response, invisible_tags)
@@ -258,7 +260,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=False, user=self.setup_user(enable_sharing=True))
self.setup_bookmark(shared=True, user=self.setup_user(enable_sharing=False))
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleUserOptions(response, expected_visible_users)
def test_should_list_only_users_with_publicly_shared_bookmarks_without_login(self):
@@ -278,7 +280,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=True, user=self.setup_user(enable_sharing=True))
self.setup_bookmark(shared=True, user=self.setup_user(enable_sharing=True))
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleUserOptions(response, expected_visible_users)
def test_should_list_bookmarks_and_tags_for_search_preferences(self):
@@ -313,7 +315,7 @@ class BookmarkSharedViewTestCase(
unread_tags = self.get_tags_from_bookmarks(unread_bookmarks)
read_tags = self.get_tags_from_bookmarks(read_bookmarks)
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleBookmarks(response, unread_bookmarks)
self.assertInvisibleBookmarks(response, read_bookmarks)
self.assertVisibleTags(response, unread_tags)
@@ -330,7 +332,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=True),
]
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleBookmarks(response, visible_bookmarks, "_blank")
@@ -347,7 +349,7 @@ class BookmarkSharedViewTestCase(
self.setup_bookmark(shared=True),
]
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
self.assertVisibleBookmarks(response, visible_bookmarks, "_self")
@@ -358,8 +360,8 @@ class BookmarkSharedViewTestCase(
user.profile.save()
bookmark = self.setup_bookmark(title="foo", shared=True, user=user)
edit_url = reverse("bookmarks:edit", args=[bookmark.id])
base_url = reverse("bookmarks:shared")
edit_url = reverse("linkding:bookmarks.edit", args=[bookmark.id])
base_url = reverse("linkding:bookmarks.shared")
# without query params
return_url = urllib.parse.quote(base_url)
@@ -394,13 +396,13 @@ class BookmarkSharedViewTestCase(
def test_apply_search_preferences(self):
# no params
response = self.client.post(reverse("bookmarks:shared"))
response = self.client.post(reverse("linkding:bookmarks.shared"))
self.assertEqual(response.status_code, 302)
self.assertEqual(response.url, reverse("bookmarks:shared"))
self.assertEqual(response.url, reverse("linkding:bookmarks.shared"))
# some params
response = self.client.post(
reverse("bookmarks:shared"),
reverse("linkding:bookmarks.shared"),
{
"q": "foo",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -408,12 +410,12 @@ class BookmarkSharedViewTestCase(
)
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, reverse("bookmarks:shared") + "?q=foo&sort=title_asc"
response.url, reverse("linkding:bookmarks.shared") + "?q=foo&sort=title_asc"
)
# params with default value are removed
response = self.client.post(
reverse("bookmarks:shared"),
reverse("linkding:bookmarks.shared"),
{
"q": "foo",
"user": "",
@@ -424,12 +426,12 @@ class BookmarkSharedViewTestCase(
)
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, reverse("bookmarks:shared") + "?q=foo&unread=yes"
response.url, reverse("linkding:bookmarks.shared") + "?q=foo&unread=yes"
)
# page is removed
response = self.client.post(
reverse("bookmarks:shared"),
reverse("linkding:bookmarks.shared"),
{
"q": "foo",
"page": "2",
@@ -438,7 +440,7 @@ class BookmarkSharedViewTestCase(
)
self.assertEqual(response.status_code, 302)
self.assertEqual(
response.url, reverse("bookmarks:shared") + "?q=foo&sort=title_asc"
response.url, reverse("linkding:bookmarks.shared") + "?q=foo&sort=title_asc"
)
def test_save_search_preferences(self):
@@ -447,7 +449,7 @@ class BookmarkSharedViewTestCase(
# no params
self.client.post(
reverse("bookmarks:shared"),
reverse("linkding:bookmarks.shared"),
{
"save": "",
},
@@ -464,7 +466,7 @@ class BookmarkSharedViewTestCase(
# with param
self.client.post(
reverse("bookmarks:shared"),
reverse("linkding:bookmarks.shared"),
{
"save": "",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -482,7 +484,7 @@ class BookmarkSharedViewTestCase(
# add a param
self.client.post(
reverse("bookmarks:shared"),
reverse("linkding:bookmarks.shared"),
{
"save": "",
"sort": BookmarkSearch.SORT_TITLE_ASC,
@@ -501,7 +503,7 @@ class BookmarkSharedViewTestCase(
# remove a param
self.client.post(
reverse("bookmarks:shared"),
reverse("linkding:bookmarks.shared"),
{
"save": "",
"unread": BookmarkSearch.FILTER_UNREAD_YES,
@@ -519,7 +521,7 @@ class BookmarkSharedViewTestCase(
# ignores non-preferences
self.client.post(
reverse("bookmarks:shared"),
reverse("linkding:bookmarks.shared"),
{
"save": "",
"q": "foo",
@@ -539,7 +541,7 @@ class BookmarkSharedViewTestCase(
)
def test_url_encode_bookmark_actions_url(self):
url = reverse("bookmarks:shared") + "?q=%23foo"
url = reverse("linkding:bookmarks.shared") + "?q=%23foo"
response = self.client.get(url)
html = response.content.decode()
soup = self.make_soup(html)
@@ -557,34 +559,34 @@ class BookmarkSharedViewTestCase(
user.profile.save()
bookmark = self.setup_bookmark(description="alert('xss')", shared=True)
url = reverse("bookmarks:shared") + "?q=alert(%27xss%27)"
url = reverse("linkding:bookmarks.shared") + "?q=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
self.assertContains(response, bookmark.url)
url = reverse("bookmarks:shared") + "?sort=alert(%27xss%27)"
url = reverse("linkding:bookmarks.shared") + "?sort=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:shared") + "?unread=alert(%27xss%27)"
url = reverse("linkding:bookmarks.shared") + "?unread=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:shared") + "?shared=alert(%27xss%27)"
url = reverse("linkding:bookmarks.shared") + "?shared=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:shared") + "?user=alert(%27xss%27)"
url = reverse("linkding:bookmarks.shared") + "?user=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
url = reverse("bookmarks:shared") + "?page=alert(%27xss%27)"
url = reverse("linkding:bookmarks.shared") + "?page=alert(%27xss%27)"
response = self.client.get(url)
self.assertNotContains(response, "alert('xss')")
def test_turbo_frame_details_modal_renders_details_modal_update(self):
bookmark = self.setup_bookmark()
url = reverse("bookmarks:shared") + f"?bookmark_id={bookmark.id}"
url = reverse("linkding:bookmarks.shared") + f"?bookmark_id={bookmark.id}"
response = self.client.get(url, headers={"Turbo-Frame": "details-modal"})
self.assertEqual(200, response.status_code)
@@ -595,9 +597,9 @@ class BookmarkSharedViewTestCase(
self.assertIsNone(soup.select_one("#tag-cloud-container"))
def test_includes_public_shared_rss_feed(self):
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
soup = self.make_soup(response.content.decode())
feed = soup.select_one('head link[type="application/rss+xml"]')
self.assertIsNotNone(feed)
self.assertEqual(feed.attrs["href"], reverse("bookmarks:feeds.public_shared"))
self.assertEqual(feed.attrs["href"], reverse("linkding:feeds.public_shared"))

View File

@@ -32,7 +32,7 @@ class BookmarkSharedViewPerformanceTestCase(
# capture number of queries
context = CaptureQueriesContext(self.get_connection())
with context:
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
html = response.content.decode("utf-8")
soup = self.make_soup(html)
list_items = soup.select("li[ld-bookmark-item]")
@@ -48,7 +48,7 @@ class BookmarkSharedViewPerformanceTestCase(
# assert num queries doesn't increase
with self.assertNumQueries(number_of_queries):
response = self.client.get(reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:bookmarks.shared"))
html = response.content.decode("utf-8")
soup = self.make_soup(html)
list_items = soup.select("li[ld-bookmark-item]")

View File

@@ -89,7 +89,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmarks = self.setup_numbered_bookmarks(5)
response = self.get(
reverse("bookmarks:bookmark-list"), expected_status_code=status.HTTP_200_OK
reverse("linkding:bookmark-list"), expected_status_code=status.HTTP_200_OK
)
self.assertBookmarkListEqual(response.data["results"], bookmarks)
@@ -104,7 +104,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
)
response = self.get(
reverse("bookmarks:bookmark-list"), expected_status_code=status.HTTP_200_OK
reverse("linkding:bookmark-list"), expected_status_code=status.HTTP_200_OK
)
self.assertBookmarkListEqual(response.data["results"], bookmarks)
@@ -116,7 +116,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark.save()
response = self.get(
reverse("bookmarks:bookmark-list"), expected_status_code=status.HTTP_200_OK
reverse("linkding:bookmark-list"), expected_status_code=status.HTTP_200_OK
)
self.assertIsNone(response.data["results"][0]["website_title"])
self.assertIsNone(response.data["results"][0]["website_description"])
@@ -127,7 +127,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_numbered_bookmarks(5, archived=True)
response = self.get(
reverse("bookmarks:bookmark-list"), expected_status_code=status.HTTP_200_OK
reverse("linkding:bookmark-list"), expected_status_code=status.HTTP_200_OK
)
self.assertBookmarkListEqual(response.data["results"], bookmarks)
@@ -138,7 +138,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_numbered_bookmarks(5)
response = self.get(
reverse("bookmarks:bookmark-list") + "?q=" + search_value,
reverse("linkding:bookmark-list") + "?q=" + search_value,
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], bookmarks)
@@ -150,7 +150,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
# Filter off
response = self.get(
reverse("bookmarks:bookmark-list"), expected_status_code=status.HTTP_200_OK
reverse("linkding:bookmark-list"), expected_status_code=status.HTTP_200_OK
)
self.assertBookmarkListEqual(
response.data["results"], unread_bookmarks + read_bookmarks
@@ -158,14 +158,14 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
# Filter shared
response = self.get(
reverse("bookmarks:bookmark-list") + "?unread=yes",
reverse("linkding:bookmark-list") + "?unread=yes",
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], unread_bookmarks)
# Filter unshared
response = self.get(
reverse("bookmarks:bookmark-list") + "?unread=no",
reverse("linkding:bookmark-list") + "?unread=no",
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], read_bookmarks)
@@ -177,7 +177,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
# Filter off
response = self.get(
reverse("bookmarks:bookmark-list"), expected_status_code=status.HTTP_200_OK
reverse("linkding:bookmark-list"), expected_status_code=status.HTTP_200_OK
)
self.assertBookmarkListEqual(
response.data["results"], unshared_bookmarks + shared_bookmarks
@@ -185,14 +185,14 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
# Filter shared
response = self.get(
reverse("bookmarks:bookmark-list") + "?shared=yes",
reverse("linkding:bookmark-list") + "?shared=yes",
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], shared_bookmarks)
# Filter unshared
response = self.get(
reverse("bookmarks:bookmark-list") + "?shared=no",
reverse("linkding:bookmark-list") + "?shared=no",
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], unshared_bookmarks)
@@ -203,7 +203,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmarks.reverse()
response = self.get(
reverse("bookmarks:bookmark-list") + "?sort=title_desc",
reverse("linkding:bookmark-list") + "?sort=title_desc",
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], bookmarks)
@@ -214,7 +214,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
archived_bookmarks = self.setup_numbered_bookmarks(5, archived=True)
response = self.get(
reverse("bookmarks:bookmark-archived"),
reverse("linkding:bookmark-archived"),
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], archived_bookmarks)
@@ -231,7 +231,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
)
response = self.get(
reverse("bookmarks:bookmark-archived"),
reverse("linkding:bookmark-archived"),
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], archived_bookmarks)
@@ -245,7 +245,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_numbered_bookmarks(5, archived=True)
response = self.get(
reverse("bookmarks:bookmark-archived") + "?q=" + search_value,
reverse("linkding:bookmark-archived") + "?q=" + search_value,
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], archived_bookmarks)
@@ -256,7 +256,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmarks.reverse()
response = self.get(
reverse("bookmarks:bookmark-archived") + "?sort=title_desc",
reverse("linkding:bookmark-archived") + "?sort=title_desc",
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], bookmarks)
@@ -280,7 +280,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_bookmark(shared=True, user=user4)
response = self.get(
reverse("bookmarks:bookmark-shared"),
reverse("linkding:bookmark-shared"),
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], shared_bookmarks)
@@ -300,7 +300,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
)
response = self.get(
reverse("bookmarks:bookmark-shared"),
reverse("linkding:bookmark-shared"),
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], shared_bookmarks)
@@ -317,7 +317,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_bookmark(shared=True, user=user2)
response = self.get(
reverse("bookmarks:bookmark-shared"),
reverse("linkding:bookmark-shared"),
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], shared_bookmarks)
@@ -339,7 +339,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_bookmark(shared=True, user=user3),
response = self.get(
reverse("bookmarks:bookmark-shared") + "?q=searchvalue",
reverse("linkding:bookmark-shared") + "?q=searchvalue",
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], expected_bookmarks)
@@ -352,7 +352,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.setup_bookmark(shared=True, user=user_search_user),
]
response = self.get(
reverse("bookmarks:bookmark-shared") + "?user=" + user_search_user.username,
reverse("linkding:bookmark-shared") + "?user=" + user_search_user.username,
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], expected_bookmarks)
@@ -371,7 +371,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
),
]
response = self.get(
reverse("bookmarks:bookmark-shared")
reverse("linkding:bookmark-shared")
+ "?q=searchvalue&user="
+ combined_search_user.username,
expected_status_code=status.HTTP_200_OK,
@@ -385,7 +385,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmarks.reverse()
response = self.get(
reverse("bookmarks:bookmark-shared") + "?sort=title_desc",
reverse("linkding:bookmark-shared") + "?sort=title_desc",
expected_status_code=status.HTTP_200_OK,
)
self.assertBookmarkListEqual(response.data["results"], bookmarks)
@@ -403,7 +403,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
"shared": False,
"tag_names": ["tag1", "tag2"],
}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertEqual(bookmark.url, data["url"])
self.assertEqual(bookmark.title, data["title"])
@@ -427,7 +427,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
description="Website description",
preview_image=None,
)
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertEqual(bookmark.title, "Website title")
self.assertEqual(bookmark.description, "Website description")
@@ -446,7 +446,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
preview_image=None,
)
self.post(
reverse("bookmarks:bookmark-list") + "?disable_scraping",
reverse("linkding:bookmark-list") + "?disable_scraping",
data,
status.HTTP_201_CREATED,
)
@@ -463,7 +463,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
wraps=bookmarks.services.bookmarks.create_bookmark,
) as mock_create_bookmark:
data = {"url": "https://example.com/"}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
mock_create_bookmark.assert_called_with(
ANY, "", self.get_or_create_test_user(), disable_html_snapshot=False
@@ -479,7 +479,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
) as mock_create_bookmark:
data = {"url": "https://example.com/"}
self.post(
reverse("bookmarks:bookmark-list") + "?disable_html_snapshot",
reverse("linkding:bookmark-list") + "?disable_html_snapshot",
data,
status.HTTP_201_CREATED,
)
@@ -502,7 +502,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
"is_archived": True,
"tag_names": ["tag1", "tag2"],
}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertEqual(bookmark.id, original_bookmark.id)
self.assertEqual(bookmark.url, data["url"])
@@ -526,7 +526,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
"description": "Test description",
"tag_names": ["tag 1", "tag 2"],
}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
tag_names = [tag.name for tag in bookmark.tags.all()]
self.assertListEqual(tag_names, ["tag-1", "tag-2"])
@@ -536,7 +536,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
data = {"url": "https://example.com/"}
self.post(
reverse("bookmarks:bookmark-list") + "?disable_scraping",
reverse("linkding:bookmark-list") + "?disable_scraping",
data,
status.HTTP_201_CREATED,
)
@@ -561,7 +561,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
"is_archived": True,
"tag_names": ["tag1", "tag2"],
}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertEqual(bookmark.url, data["url"])
self.assertEqual(bookmark.title, data["title"])
@@ -575,7 +575,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
data = {"url": "https://example.com/"}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertFalse(bookmark.is_archived)
@@ -583,7 +583,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
data = {"url": "https://example.com/", "unread": True}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertTrue(bookmark.unread)
@@ -591,7 +591,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
data = {"url": "https://example.com/"}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertFalse(bookmark.unread)
@@ -599,7 +599,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
data = {"url": "https://example.com/", "shared": True}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertTrue(bookmark.shared)
@@ -607,7 +607,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
data = {"url": "https://example.com/"}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertFalse(bookmark.shared)
@@ -621,7 +621,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
profile.save()
data = {"url": "https://example.com/", "tag_names": [tag1.name]}
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
bookmark = Bookmark.objects.get(url=data["url"])
self.assertCountEqual(bookmark.tags.all(), [tag1, tag2])
@@ -629,7 +629,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
bookmark = self.setup_bookmark()
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertBookmarkListEqual([response.data], [bookmark])
@@ -641,7 +641,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
tags=[tag1],
)
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertBookmarkListEqual([response.data], [bookmark])
@@ -655,7 +655,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
),
)
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertEqual(
response.data["web_archive_snapshot_url"],
@@ -667,7 +667,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
data = {"url": "https://example.com/updated"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertEqual(updated_bookmark.url, data["url"])
@@ -682,7 +682,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
"website_title": "test",
"website_description": "test",
}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertEqual(data["url"], updated_bookmark.url)
@@ -699,7 +699,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
data = {"title": "https://example.com/"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_400_BAD_REQUEST)
def test_update_bookmark_with_minimal_payload_does_not_modify_bookmark(self):
@@ -709,7 +709,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
)
data = {"url": "https://example.com/"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertEqual(updated_bookmark.url, data["url"])
@@ -726,7 +726,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
data = {"url": "https://example.com/", "unread": True}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertEqual(updated_bookmark.unread, True)
@@ -736,7 +736,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
data = {"url": "https://example.com/", "shared": True}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertEqual(updated_bookmark.shared, True)
@@ -752,7 +752,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
profile.save()
data = {"url": "https://example.com/", "tag_names": [tag1.name]}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertCountEqual(updated_bookmark.tags.all(), [tag1, tag2])
@@ -767,17 +767,17 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
# if the URL isn't modified it's not a duplicate
data = {"url": edited_bookmark.url}
url = reverse("bookmarks:bookmark-detail", args=[edited_bookmark.id])
url = reverse("linkding:bookmark-detail", args=[edited_bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_200_OK)
# if the URL is already bookmarked by another user, it's not a duplicate
data = {"url": other_user_bookmark.url}
url = reverse("bookmarks:bookmark-detail", args=[edited_bookmark.id])
url = reverse("linkding:bookmark-detail", args=[edited_bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_200_OK)
# if the URL is already bookmarked by the same user, it's a duplicate
data = {"url": existing_bookmark.url}
url = reverse("bookmarks:bookmark-detail", args=[edited_bookmark.id])
url = reverse("linkding:bookmark-detail", args=[edited_bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_400_BAD_REQUEST)
def test_patch_bookmark(self):
@@ -785,55 +785,55 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
bookmark = self.setup_bookmark()
data = {"url": "https://example.com"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
self.assertEqual(bookmark.url, data["url"])
data = {"title": "Updated title"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
self.assertEqual(bookmark.title, data["title"])
data = {"description": "Updated description"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
self.assertEqual(bookmark.description, data["description"])
data = {"notes": "Updated notes"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
self.assertEqual(bookmark.notes, data["notes"])
data = {"unread": True}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
self.assertTrue(bookmark.unread)
data = {"unread": False}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
self.assertFalse(bookmark.unread)
data = {"shared": True}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
self.assertTrue(bookmark.shared)
data = {"shared": False}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
self.assertFalse(bookmark.shared)
data = {"tag_names": ["updated-tag-1", "updated-tag-2"]}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
bookmark.refresh_from_db()
tag_names = [tag.name for tag in bookmark.tags.all()]
@@ -848,7 +848,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
"website_title": "test",
"website_description": "test",
}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertNotEqual(
@@ -865,7 +865,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
is_archived=True, unread=True, shared=True, tags=[self.setup_tag()]
)
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, {}, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertEqual(updated_bookmark.url, bookmark.url)
@@ -888,7 +888,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
profile.save()
data = {"tag_names": [tag1.name]}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_200_OK)
updated_bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertCountEqual(updated_bookmark.tags.all(), [tag1, tag2])
@@ -897,7 +897,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
bookmark = self.setup_bookmark()
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.delete(url, expected_status_code=status.HTTP_204_NO_CONTENT)
self.assertEqual(len(Bookmark.objects.filter(id=bookmark.id)), 0)
@@ -905,7 +905,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
bookmark = self.setup_bookmark()
url = reverse("bookmarks:bookmark-archive", args=[bookmark.id])
url = reverse("linkding:bookmark-archive", args=[bookmark.id])
self.post(url, expected_status_code=status.HTTP_204_NO_CONTENT)
bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertTrue(bookmark.is_archived)
@@ -914,7 +914,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
bookmark = self.setup_bookmark(is_archived=True)
url = reverse("bookmarks:bookmark-unarchive", args=[bookmark.id])
url = reverse("linkding:bookmark-unarchive", args=[bookmark.id])
self.post(url, expected_status_code=status.HTTP_204_NO_CONTENT)
bookmark = Bookmark.objects.get(id=bookmark.id)
self.assertFalse(bookmark.is_archived)
@@ -922,7 +922,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
def test_check_returns_no_bookmark_if_url_is_not_bookmarked(self):
self.authenticate()
url = reverse("bookmarks:bookmark-check")
url = reverse("linkding:bookmark-check")
check_url = urllib.parse.quote_plus("https://example.com")
response = self.get(
f"{url}?url={check_url}", expected_status_code=status.HTTP_200_OK
@@ -945,7 +945,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
)
mock_load_website_metadata.return_value = expected_metadata
url = reverse("bookmarks:bookmark-check")
url = reverse("linkding:bookmark-check")
check_url = urllib.parse.quote_plus("https://example.com")
response = self.get(
f"{url}?url={check_url}", expected_status_code=status.HTTP_200_OK
@@ -969,7 +969,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
preview_image_file="preview.png",
)
url = reverse("bookmarks:bookmark-check")
url = reverse("linkding:bookmark-check")
check_url = urllib.parse.quote_plus("https://example.com")
response = self.get(
f"{url}?url={check_url}", expected_status_code=status.HTTP_200_OK
@@ -1006,7 +1006,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
)
mock_load_website_metadata.return_value = expected_metadata
url = reverse("bookmarks:bookmark-check")
url = reverse("linkding:bookmark-check")
check_url = urllib.parse.quote_plus("https://example.com")
response = self.get(
f"{url}?url={check_url}", expected_status_code=status.HTTP_200_OK
@@ -1022,7 +1022,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
def test_check_returns_no_auto_tags_if_none_configured(self):
self.authenticate()
url = reverse("bookmarks:bookmark-check")
url = reverse("linkding:bookmark-check")
check_url = urllib.parse.quote_plus("https://example.com")
response = self.get(
f"{url}?url={check_url}", expected_status_code=status.HTTP_200_OK
@@ -1038,7 +1038,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
profile.auto_tagging_rules = "example.com tag1 tag2"
profile.save()
url = reverse("bookmarks:bookmark-check")
url = reverse("linkding:bookmark-check")
check_url = urllib.parse.quote_plus("https://example.com")
response = self.get(
f"{url}?url={check_url}", expected_status_code=status.HTTP_200_OK
@@ -1059,23 +1059,23 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
inaccessible_shared_bookmark = self.setup_bookmark(user=other_user, shared=True)
self.setup_bookmark(user=other_user, is_archived=True)
url = reverse("bookmarks:bookmark-list")
url = reverse("linkding:bookmark-list")
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertEqual(len(response.data["results"]), 1)
url = reverse("bookmarks:bookmark-archived")
url = reverse("linkding:bookmark-archived")
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertEqual(len(response.data["results"]), 1)
url = reverse("bookmarks:bookmark-detail", args=[inaccessible_bookmark.id])
url = reverse("linkding:bookmark-detail", args=[inaccessible_bookmark.id])
self.get(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse(
"bookmarks:bookmark-detail", args=[inaccessible_shared_bookmark.id]
"linkding:bookmark-detail", args=[inaccessible_shared_bookmark.id]
)
self.get(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse("bookmarks:bookmark-detail", args=[inaccessible_bookmark.id])
url = reverse("linkding:bookmark-detail", args=[inaccessible_bookmark.id])
self.put(
url,
{url: "https://example.com/"},
@@ -1084,7 +1084,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.patch(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse(
"bookmarks:bookmark-detail", args=[inaccessible_shared_bookmark.id]
"linkding:bookmark-detail", args=[inaccessible_shared_bookmark.id]
)
self.put(
url,
@@ -1093,31 +1093,31 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
)
self.patch(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse("bookmarks:bookmark-detail", args=[inaccessible_bookmark.id])
url = reverse("linkding:bookmark-detail", args=[inaccessible_bookmark.id])
self.delete(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse(
"bookmarks:bookmark-detail", args=[inaccessible_shared_bookmark.id]
"linkding:bookmark-detail", args=[inaccessible_shared_bookmark.id]
)
self.delete(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse("bookmarks:bookmark-archive", args=[inaccessible_bookmark.id])
url = reverse("linkding:bookmark-archive", args=[inaccessible_bookmark.id])
self.post(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse(
"bookmarks:bookmark-archive", args=[inaccessible_shared_bookmark.id]
"linkding:bookmark-archive", args=[inaccessible_shared_bookmark.id]
)
self.post(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse("bookmarks:bookmark-unarchive", args=[inaccessible_bookmark.id])
url = reverse("linkding:bookmark-unarchive", args=[inaccessible_bookmark.id])
self.post(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse(
"bookmarks:bookmark-unarchive", args=[inaccessible_shared_bookmark.id]
"linkding:bookmark-unarchive", args=[inaccessible_shared_bookmark.id]
)
self.post(url, expected_status_code=status.HTTP_404_NOT_FOUND)
url = reverse("bookmarks:bookmark-check")
url = reverse("linkding:bookmark-check")
check_url = urllib.parse.quote_plus(inaccessible_bookmark.url)
response = self.get(
f"{url}?url={check_url}", expected_status_code=status.HTTP_200_OK
@@ -1153,7 +1153,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
# default profile
profile = self.user.profile
url = reverse("bookmarks:user-profile")
url = reverse("linkding:user-profile")
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertUserProfile(response, profile)
@@ -1176,7 +1176,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
}
profile.save()
url = reverse("bookmarks:user-profile")
url = reverse("linkding:user-profile")
response = self.get(url, expected_status_code=status.HTTP_200_OK)
self.assertUserProfile(response, profile)
@@ -1194,7 +1194,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
response = self.client.post(
reverse("bookmarks:bookmark-singlefile"),
reverse("linkding:bookmark-singlefile"),
self.create_singlefile_upload_body(),
format="multipart",
expected_status_code=status.HTTP_201_CREATED,
@@ -1211,7 +1211,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
self.client.post(
reverse("bookmarks:bookmark-singlefile"),
reverse("linkding:bookmark-singlefile"),
self.create_singlefile_upload_body(),
format="multipart",
expected_status_code=status.HTTP_201_CREATED,
@@ -1232,7 +1232,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
self.authenticate()
self.client.post(
reverse("bookmarks:bookmark-singlefile"),
reverse("linkding:bookmark-singlefile"),
self.create_singlefile_upload_body(),
format="multipart",
expected_status_code=status.HTTP_201_CREATED,
@@ -1248,7 +1248,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
) as mock_create_bookmark:
self.authenticate()
self.client.post(
reverse("bookmarks:bookmark-singlefile"),
reverse("linkding:bookmark-singlefile"),
self.create_singlefile_upload_body(),
format="multipart",
expected_status_code=status.HTTP_201_CREATED,
@@ -1267,7 +1267,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
file = io.BytesIO(file_content)
file.name = "snapshot.html"
response = self.client.post(
reverse("bookmarks:bookmark-singlefile"),
reverse("linkding:bookmark-singlefile"),
{"file": file},
format="multipart",
expected_status_code=status.HTTP_400_BAD_REQUEST,
@@ -1278,7 +1278,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
# Missing 'file'
response = self.client.post(
reverse("bookmarks:bookmark-singlefile"),
reverse("linkding:bookmark-singlefile"),
{"url": "https://example.com"},
format="multipart",
expected_status_code=status.HTTP_400_BAD_REQUEST,
@@ -1291,7 +1291,7 @@ class BookmarksApiTestCase(LinkdingApiTestCase, BookmarkFactoryMixin):
def test_singlefile_upload_disabled(self):
self.authenticate()
self.client.post(
reverse("bookmarks:bookmark-singlefile"),
reverse("linkding:bookmark-singlefile"),
self.create_singlefile_upload_body(),
format="multipart",
expected_status_code=status.HTTP_403_FORBIDDEN,

View File

@@ -33,7 +33,7 @@ class BookmarksApiPerformanceTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
context = CaptureQueriesContext(self.get_connection())
with context:
self.get(
reverse("bookmarks:bookmark-list"),
reverse("linkding:bookmark-list"),
expected_status_code=status.HTTP_200_OK,
)
@@ -51,7 +51,7 @@ class BookmarksApiPerformanceTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
context = CaptureQueriesContext(self.get_connection())
with context:
self.get(
reverse("bookmarks:bookmark-archived"),
reverse("linkding:bookmark-archived"),
expected_status_code=status.HTTP_200_OK,
)
@@ -70,7 +70,7 @@ class BookmarksApiPerformanceTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
context = CaptureQueriesContext(self.get_connection())
with context:
self.get(
reverse("bookmarks:bookmark-shared"),
reverse("linkding:bookmark-shared"),
expected_status_code=status.HTTP_200_OK,
)

View File

@@ -16,36 +16,36 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
def test_list_bookmarks_requires_authentication(self):
self.get(
reverse("bookmarks:bookmark-list"),
reverse("linkding:bookmark-list"),
expected_status_code=status.HTTP_401_UNAUTHORIZED,
)
self.authenticate()
self.get(
reverse("bookmarks:bookmark-list"), expected_status_code=status.HTTP_200_OK
reverse("linkding:bookmark-list"), expected_status_code=status.HTTP_200_OK
)
def test_list_archived_bookmarks_requires_authentication(self):
self.get(
reverse("bookmarks:bookmark-archived"),
reverse("linkding:bookmark-archived"),
expected_status_code=status.HTTP_401_UNAUTHORIZED,
)
self.authenticate()
self.get(
reverse("bookmarks:bookmark-archived"),
reverse("linkding:bookmark-archived"),
expected_status_code=status.HTTP_200_OK,
)
def test_list_shared_bookmarks_does_not_require_authentication(self):
self.get(
reverse("bookmarks:bookmark-shared"),
reverse("linkding:bookmark-shared"),
expected_status_code=status.HTTP_200_OK,
)
self.authenticate()
self.get(
reverse("bookmarks:bookmark-shared"),
reverse("linkding:bookmark-shared"),
expected_status_code=status.HTTP_200_OK,
)
@@ -61,16 +61,14 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
"tag_names": ["tag1", "tag2"],
}
self.post(
reverse("bookmarks:bookmark-list"), data, status.HTTP_401_UNAUTHORIZED
)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_401_UNAUTHORIZED)
self.authenticate()
self.post(reverse("bookmarks:bookmark-list"), data, status.HTTP_201_CREATED)
self.post(reverse("linkding:bookmark-list"), data, status.HTTP_201_CREATED)
def test_get_bookmark_requires_authentication(self):
bookmark = self.setup_bookmark()
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.get(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -80,7 +78,7 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
def test_update_bookmark_requires_authentication(self):
bookmark = self.setup_bookmark()
data = {"url": "https://example.com/"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -93,14 +91,14 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
other_user = self.setup_user()
bookmark = self.setup_bookmark(user=other_user)
data = {"url": "https://example.com/"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.put(url, data, expected_status_code=status.HTTP_404_NOT_FOUND)
def test_patch_bookmark_requires_authentication(self):
bookmark = self.setup_bookmark()
data = {"url": "https://example.com"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -113,13 +111,13 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
other_user = self.setup_user()
bookmark = self.setup_bookmark(user=other_user)
data = {"url": "https://example.com"}
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.patch(url, data, expected_status_code=status.HTTP_404_NOT_FOUND)
def test_delete_bookmark_requires_authentication(self):
bookmark = self.setup_bookmark()
url = reverse("bookmarks:bookmark-detail", args=[bookmark.id])
url = reverse("linkding:bookmark-detail", args=[bookmark.id])
self.delete(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -128,7 +126,7 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
def test_archive_requires_authentication(self):
bookmark = self.setup_bookmark()
url = reverse("bookmarks:bookmark-archive", args=[bookmark.id])
url = reverse("linkding:bookmark-archive", args=[bookmark.id])
self.post(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -137,7 +135,7 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
def test_unarchive_requires_authentication(self):
bookmark = self.setup_bookmark(is_archived=True)
url = reverse("bookmarks:bookmark-unarchive", args=[bookmark.id])
url = reverse("linkding:bookmark-unarchive", args=[bookmark.id])
self.post(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -145,7 +143,7 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
self.post(url, expected_status_code=status.HTTP_204_NO_CONTENT)
def test_check_requires_authentication(self):
url = reverse("bookmarks:bookmark-check")
url = reverse("linkding:bookmark-check")
check_url = urllib.parse.quote_plus("https://example.com")
self.get(
@@ -156,7 +154,7 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
self.get(f"{url}?url={check_url}", expected_status_code=status.HTTP_200_OK)
def test_user_profile_requires_authentication(self):
url = reverse("bookmarks:user-profile")
url = reverse("linkding:user-profile")
self.get(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)
@@ -164,6 +162,6 @@ class BookmarksApiPermissionsTestCase(LinkdingApiTestCase, BookmarkFactoryMixin)
self.get(url, expected_status_code=status.HTTP_200_OK)
def test_singlefile_upload_requires_authentication(self):
url = reverse("bookmarks:bookmark-singlefile")
url = reverse("linkding:bookmark-singlefile")
self.post(url, expected_status_code=status.HTTP_401_UNAUTHORIZED)

View File

@@ -65,7 +65,7 @@ class BookmarkListTemplateTest(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
count=1,
):
if base_url is None:
base_url = reverse("bookmarks:index")
base_url = reverse("linkding:bookmarks.index")
details_url = base_url + f"?details={bookmark.id}"
self.assertInHTML(
f"""
@@ -76,7 +76,7 @@ class BookmarkListTemplateTest(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
)
def assertEditLinkCount(self, html: str, bookmark: Bookmark, count=1):
edit_url = reverse("bookmarks:edit", args=[bookmark.id])
edit_url = reverse("linkding:bookmarks.edit", args=[bookmark.id])
self.assertInHTML(
f"""
<a href="{edit_url}?return_url=/bookmarks">Edit</a>
@@ -660,7 +660,9 @@ class BookmarkListTemplateTest(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
bookmark = self.setup_bookmark(user=other_user, shared=True)
html = self.render_template(context_type=contexts.SharedBookmarkListContext)
self.assertViewLink(html, bookmark, base_url=reverse("bookmarks:shared"))
self.assertViewLink(
html, bookmark, base_url=reverse("linkding:bookmarks.shared")
)
self.assertNoBookmarkActions(html, bookmark)
self.assertShareInfo(html, bookmark)
@@ -952,7 +954,9 @@ class BookmarkListTemplateTest(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
self.assertWebArchiveLink(
html, "1 week ago", bookmark.web_archive_snapshot_url, link_target="_blank"
)
self.assertViewLink(html, bookmark, base_url=reverse("bookmarks:shared"))
self.assertViewLink(
html, bookmark, base_url=reverse("linkding:bookmarks.shared")
)
self.assertNoBookmarkActions(html, bookmark)
self.assertShareInfo(html, bookmark)
self.assertMarkAsReadButton(html, bookmark, count=0)

View File

@@ -12,21 +12,21 @@ class MockUrlConf:
class ContextPathTestCase(TestCase):
def setUp(self):
self.siteroot_urls = importlib.import_module("siteroot.urls")
self.urls_module = importlib.import_module("bookmarks.urls")
@override_settings(LD_CONTEXT_PATH=None)
def tearDown(self):
importlib.reload(self.siteroot_urls)
importlib.reload(self.urls_module)
@override_settings(LD_CONTEXT_PATH="linkding/")
def test_route_with_context_path(self):
module = importlib.reload(self.siteroot_urls)
module = importlib.reload(self.urls_module)
# pass mock config instead of actual module to prevent caching the
# url config in django.urls.reverse
urlconf = MockUrlConf(module)
test_cases = [
("bookmarks:index", "/linkding/bookmarks"),
("bookmarks:bookmark-list", "/linkding/api/bookmarks/"),
("linkding:bookmarks.index", "/linkding/bookmarks"),
("linkding:bookmark-list", "/linkding/api/bookmarks/"),
("login", "/linkding/login/"),
(
"admin:bookmarks_bookmark_changelist",
@@ -40,13 +40,13 @@ class ContextPathTestCase(TestCase):
@override_settings(LD_CONTEXT_PATH="")
def test_route_without_context_path(self):
module = importlib.reload(self.siteroot_urls)
module = importlib.reload(self.urls_module)
# pass mock config instead of actual module to prevent caching the
# url config in django.urls.reverse
urlconf = MockUrlConf(module)
test_cases = [
("bookmarks:index", "/bookmarks"),
("bookmarks:bookmark-list", "/api/bookmarks/"),
("linkding:bookmarks.index", "/bookmarks"),
("linkding:bookmark-list", "/api/bookmarks/"),
("login", "/login/"),
("admin:bookmarks_bookmark_changelist", "/admin/bookmarks/bookmark/"),
]

View File

@@ -10,7 +10,7 @@ class CustomCssViewTestCase(TestCase, BookmarkFactoryMixin):
self.client.force_login(user)
def test_with_empty_css(self):
response = self.client.get(reverse("bookmarks:custom_css"))
response = self.client.get(reverse("linkding:custom_css"))
self.assertEqual(response.status_code, 200)
self.assertEqual(response["Content-Type"], "text/css")
self.assertEqual(response.headers["Cache-Control"], "public, max-age=2592000")
@@ -21,7 +21,7 @@ class CustomCssViewTestCase(TestCase, BookmarkFactoryMixin):
self.user.profile.custom_css = css
self.user.profile.save()
response = self.client.get(reverse("bookmarks:custom_css"))
response = self.client.get(reverse("linkding:custom_css"))
self.assertEqual(response.status_code, 200)
self.assertEqual(response["Content-Type"], "text/css")
self.assertEqual(response.headers["Cache-Control"], "public, max-age=2592000")

View File

@@ -86,8 +86,8 @@ class ExporterTestCase(TestCase, BookmarkFactoryMixin):
"<DD>Example description[linkding-notes]Example notes[/linkding-notes]",
'<DT><A HREF="https://example.com/6" ADD_DATE="6" LAST_MODIFIED="66" PRIVATE="0" TOREAD="0" TAGS="">Title 6</A>',
"<DD>[linkding-notes]Example notes[/linkding-notes]",
'<DT><A HREF="https://example.com/7" ADD_DATE="7" LAST_MODIFIED="77" PRIVATE="1" TOREAD="0" TAGS="linkding:archived">Title 7</A>',
'<DT><A HREF="https://example.com/8" ADD_DATE="8" LAST_MODIFIED="88" PRIVATE="1" TOREAD="0" TAGS="tag4,tag5,linkding:archived">Title 8</A>',
'<DT><A HREF="https://example.com/7" ADD_DATE="7" LAST_MODIFIED="77" PRIVATE="1" TOREAD="0" TAGS="linkding:bookmarks.archived">Title 7</A>',
'<DT><A HREF="https://example.com/8" ADD_DATE="8" LAST_MODIFIED="88" PRIVATE="1" TOREAD="0" TAGS="tag4,tag5,linkding:bookmarks.archived">Title 8</A>',
]
self.assertIn("\n\r".join(lines), html)

View File

@@ -25,7 +25,7 @@ class ExporterPerformanceTestCase(TestCase, BookmarkFactoryMixin):
# capture number of queries
context = CaptureQueriesContext(self.get_connection())
with context:
self.client.get(reverse("bookmarks:settings.export"), follow=True)
self.client.get(reverse("linkding:settings.export"), follow=True)
number_of_queries = context.final_queries

View File

@@ -51,12 +51,12 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.assertContains(response, expected_item, count=1)
def test_all_returns_404_for_unknown_feed_token(self):
response = self.client.get(reverse("bookmarks:feeds.all", args=["foo"]))
response = self.client.get(reverse("linkding:feeds.all", args=["foo"]))
self.assertEqual(response.status_code, 404)
def test_all_metadata(self):
feed_url = reverse("bookmarks:feeds.all", args=[self.token.key])
feed_url = reverse("linkding:feeds.all", args=[self.token.key])
response = self.client.get(feed_url)
self.assertEqual(response.status_code, 200)
@@ -77,9 +77,7 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(is_archived=True)
self.setup_bookmark(is_archived=True)
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key])
)
response = self.client.get(reverse("linkding:feeds.all", args=[self.token.key]))
self.assertEqual(response.status_code, 200)
self.assertFeedItems(response, bookmarks)
@@ -91,20 +89,18 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(unread=True, user=other_user)
self.setup_bookmark(unread=True, user=other_user)
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key])
)
response = self.client.get(reverse("linkding:feeds.all", args=[self.token.key]))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=0)
def test_unread_returns_404_for_unknown_feed_token(self):
response = self.client.get(reverse("bookmarks:feeds.unread", args=["foo"]))
response = self.client.get(reverse("linkding:feeds.unread", args=["foo"]))
self.assertEqual(response.status_code, 404)
def test_unread_metadata(self):
feed_url = reverse("bookmarks:feeds.unread", args=[self.token.key])
feed_url = reverse("linkding:feeds.unread", args=[self.token.key])
response = self.client.get(feed_url)
self.assertEqual(response.status_code, 200)
@@ -130,7 +126,7 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
]
response = self.client.get(
reverse("bookmarks:feeds.unread", args=[self.token.key])
reverse("linkding:feeds.unread", args=[self.token.key])
)
self.assertEqual(response.status_code, 200)
self.assertFeedItems(response, unread_bookmarks)
@@ -144,19 +140,19 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(unread=True, user=other_user)
response = self.client.get(
reverse("bookmarks:feeds.unread", args=[self.token.key])
reverse("linkding:feeds.unread", args=[self.token.key])
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=0)
def test_shared_returns_404_for_unknown_feed_token(self):
response = self.client.get(reverse("bookmarks:feeds.shared", args=["foo"]))
response = self.client.get(reverse("linkding:feeds.shared", args=["foo"]))
self.assertEqual(response.status_code, 404)
def test_shared_metadata(self):
feed_url = reverse("bookmarks:feeds.shared", args=[self.token.key])
feed_url = reverse("linkding:feeds.shared", args=[self.token.key])
response = self.client.get(feed_url)
self.assertEqual(response.status_code, 200)
@@ -182,18 +178,18 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
]
response = self.client.get(
reverse("bookmarks:feeds.shared", args=[self.token.key])
reverse("linkding:feeds.shared", args=[self.token.key])
)
self.assertEqual(response.status_code, 200)
self.assertFeedItems(response, shared_bookmarks)
def test_public_shared_does_not_require_auth(self):
response = self.client.get(reverse("bookmarks:feeds.public_shared"))
response = self.client.get(reverse("linkding:feeds.public_shared"))
self.assertEqual(response.status_code, 200)
def test_public_shared_metadata(self):
feed_url = reverse("bookmarks:feeds.public_shared")
feed_url = reverse("linkding:feeds.public_shared")
response = self.client.get(feed_url)
self.assertEqual(response.status_code, 200)
@@ -223,7 +219,7 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(shared=True, user=user1, description="test"),
]
response = self.client.get(reverse("bookmarks:feeds.public_shared"))
response = self.client.get(reverse("linkding:feeds.public_shared"))
self.assertEqual(response.status_code, 200)
self.assertFeedItems(response, public_shared_bookmarks)
@@ -237,7 +233,7 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark()
self.setup_bookmark()
feed_url = reverse("bookmarks:feeds.all", args=[self.token.key])
feed_url = reverse("linkding:feeds.all", args=[self.token.key])
url = feed_url + f"?q={bookmark1.title}"
response = self.client.get(url)
@@ -267,22 +263,20 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(unread=False),
# without unread parameter
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key])
)
response = self.client.get(reverse("linkding:feeds.all", args=[self.token.key]))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=6)
# with unread=yes
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key]) + "?unread=yes"
reverse("linkding:feeds.all", args=[self.token.key]) + "?unread=yes"
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=2)
# with unread=no
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key]) + "?unread=no"
reverse("linkding:feeds.all", args=[self.token.key]) + "?unread=no"
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=4)
@@ -296,22 +290,20 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(shared=False)
# without shared parameter
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key])
)
response = self.client.get(reverse("linkding:feeds.all", args=[self.token.key]))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=6)
# with shared=yes
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key]) + "?shared=yes"
reverse("linkding:feeds.all", args=[self.token.key]) + "?shared=yes"
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=2)
# with shared=no
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key]) + "?shared=no"
reverse("linkding:feeds.all", args=[self.token.key]) + "?shared=no"
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=4)
@@ -325,9 +317,7 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
),
]
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key])
)
response = self.client.get(reverse("linkding:feeds.all", args=[self.token.key]))
self.assertEqual(response.status_code, 200)
self.assertFeedItems(response, bookmarks)
@@ -335,22 +325,20 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_numbered_bookmarks(200)
# without limit - defaults to 100
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key])
)
response = self.client.get(reverse("linkding:feeds.all", args=[self.token.key]))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=100)
# with increased limit
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key]) + "?limit=200"
reverse("linkding:feeds.all", args=[self.token.key]) + "?limit=200"
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=200)
# with decreased limit
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key]) + "?limit=5"
reverse("linkding:feeds.all", args=[self.token.key]) + "?limit=5"
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=5)
@@ -359,9 +347,7 @@ class FeedsTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(
title="test\n\r\t\0\x08title", description="test\n\r\t\0\x08description"
)
response = self.client.get(
reverse("bookmarks:feeds.all", args=[self.token.key])
)
response = self.client.get(reverse("linkding:feeds.all", args=[self.token.key]))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "<item>", count=1)
self.assertContains(response, f"<title>test\n\r\ttitle</title>", count=1)

View File

@@ -30,7 +30,7 @@ class FeedsPerformanceTestCase(TestCase, BookmarkFactoryMixin):
# capture number of queries
context = CaptureQueriesContext(self.get_connection())
with context:
feed_url = reverse("bookmarks:feeds.all", args=[self.token.key])
feed_url = reverse("linkding:feeds.all", args=[self.token.key])
self.client.get(feed_url)
number_of_queries = context.final_queries

View File

@@ -419,7 +419,7 @@ class ImporterTestCase(TestCase, BookmarkFactoryMixin, ImportTestMixin):
def test_archived_state(self):
test_html = self.render_html(
tags_html="""
<DT><A HREF="https://example.com/1" ADD_DATE="1" TAGS="tag1,tag2,linkding:archived">Example title 1</A>
<DT><A HREF="https://example.com/1" ADD_DATE="1" TAGS="tag1,tag2,linkding:bookmarks.archived">Example title 1</A>
<DD>Example description 1</DD>
<DT><A HREF="https://example.com/2" ADD_DATE="1" PRIVATE="1" TAGS="tag1,tag2">Example title 2</A>
<DD>Example description 2</DD>

View File

@@ -14,12 +14,12 @@ class LayoutTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
def test_nav_menu_should_respect_share_profile_setting(self):
self.user.profile.enable_sharing = False
self.user.profile.save()
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode()
self.assertInHTML(
f"""
<a href="{reverse('bookmarks:shared')}" class="menu-link">Shared</a>
<a href="{reverse('linkding:bookmarks.shared')}" class="menu-link">Shared</a>
""",
html,
count=0,
@@ -27,12 +27,12 @@ class LayoutTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
self.user.profile.enable_sharing = True
self.user.profile.save()
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode()
self.assertInHTML(
f"""
<a href="{reverse('bookmarks:shared')}" class="menu-link">Shared</a>
<a href="{reverse('linkding:bookmarks.shared')}" class="menu-link">Shared</a>
""",
html,
count=2,
@@ -43,7 +43,7 @@ class LayoutTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
settings.enable_link_prefetch = False
settings.save()
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode()
self.assertInHTML(
@@ -55,7 +55,7 @@ class LayoutTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
settings.enable_link_prefetch = True
settings.save()
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode()
self.assertInHTML(
@@ -65,7 +65,7 @@ class LayoutTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
)
def test_does_not_link_custom_css_when_empty(self):
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode()
soup = self.make_soup(html)
@@ -77,7 +77,7 @@ class LayoutTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
profile.custom_css = "body { background-color: red; }"
profile.save()
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode()
soup = self.make_soup(html)
@@ -89,12 +89,12 @@ class LayoutTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin):
profile.custom_css = "body { background-color: red; }"
profile.save()
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode()
soup = self.make_soup(html)
link = soup.select_one("link[rel='stylesheet'][href*='custom_css']")
expected_url = (
reverse("bookmarks:custom_css") + f"?hash={profile.custom_css_hash}"
reverse("linkding:custom_css") + f"?hash={profile.custom_css_hash}"
)
self.assertEqual(link["href"], expected_url)

View File

@@ -2,7 +2,7 @@ from django.test import TestCase, override_settings
from django.urls import path, include
from bookmarks.tests.helpers import BookmarkFactoryMixin, HtmlTestMixin
from siteroot.urls import urlpatterns as base_patterns
from bookmarks.urls import urlpatterns as base_patterns
# Register OIDC urls for this test, otherwise login template can not render when OIDC is enabled
urlpatterns = base_patterns + [path("oidc/", include("mozilla_django_oidc.urls"))]

View File

@@ -9,28 +9,28 @@ from bookmarks import utils
class OidcSupportTest(TestCase):
def test_should_not_add_oidc_urls_by_default(self):
siteroot_urls = importlib.import_module("siteroot.urls")
importlib.reload(siteroot_urls)
urls_module = importlib.import_module("bookmarks.urls")
importlib.reload(urls_module)
oidc_url_found = any(
isinstance(urlpattern, URLResolver) and urlpattern.pattern._route == "oidc/"
for urlpattern in siteroot_urls.urlpatterns
for urlpattern in urls_module.urlpatterns
)
self.assertFalse(oidc_url_found)
@override_settings(LD_ENABLE_OIDC=True)
def test_should_add_oidc_urls_when_enabled(self):
siteroot_urls = importlib.import_module("siteroot.urls")
importlib.reload(siteroot_urls)
urls_module = importlib.import_module("bookmarks.urls")
importlib.reload(urls_module)
oidc_url_found = any(
isinstance(urlpattern, URLResolver) and urlpattern.pattern._route == "oidc/"
for urlpattern in siteroot_urls.urlpatterns
for urlpattern in urls_module.urlpatterns
)
self.assertTrue(oidc_url_found)
def test_should_not_add_oidc_authentication_backend_by_default(self):
base_settings = importlib.import_module("siteroot.settings.base")
base_settings = importlib.import_module("bookmarks.settings.base")
importlib.reload(base_settings)
self.assertListEqual(
@@ -40,7 +40,7 @@ class OidcSupportTest(TestCase):
def test_should_add_oidc_authentication_backend_when_enabled(self):
os.environ["LD_ENABLE_OIDC"] = "True"
base_settings = importlib.import_module("siteroot.settings.base")
base_settings = importlib.import_module("bookmarks.settings.base")
importlib.reload(base_settings)
self.assertListEqual(
@@ -54,7 +54,7 @@ class OidcSupportTest(TestCase):
def test_default_settings(self):
os.environ["LD_ENABLE_OIDC"] = "True"
base_settings = importlib.import_module("siteroot.settings.base")
base_settings = importlib.import_module("bookmarks.settings.base")
importlib.reload(base_settings)
self.assertEqual(True, base_settings.OIDC_VERIFY_SSL)

View File

@@ -7,7 +7,7 @@ from bookmarks.tests.helpers import BookmarkFactoryMixin
class RootViewTestCase(TestCase, BookmarkFactoryMixin):
def test_unauthenticated_user_redirect_to_login_by_default(self):
response = self.client.get(reverse("bookmarks:root"))
response = self.client.get(reverse("linkding:root"))
self.assertRedirects(response, reverse("login"))
def test_unauthenticated_redirect_to_shared_bookmarks_if_configured_in_global_settings(
@@ -17,24 +17,24 @@ class RootViewTestCase(TestCase, BookmarkFactoryMixin):
settings.landing_page = GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS
settings.save()
response = self.client.get(reverse("bookmarks:root"))
self.assertRedirects(response, reverse("bookmarks:shared"))
response = self.client.get(reverse("linkding:root"))
self.assertRedirects(response, reverse("linkding:bookmarks.shared"))
def test_authenticated_user_always_redirected_to_bookmarks(self):
self.client.force_login(self.get_or_create_test_user())
response = self.client.get(reverse("bookmarks:root"))
self.assertRedirects(response, reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:root"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
settings = GlobalSettings.get()
settings.landing_page = GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS
settings.save()
response = self.client.get(reverse("bookmarks:root"))
self.assertRedirects(response, reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:root"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
settings.landing_page = GlobalSettings.LANDING_PAGE_LOGIN
settings.save()
response = self.client.get(reverse("bookmarks:root"))
self.assertRedirects(response, reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:root"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))

View File

@@ -25,7 +25,7 @@ class SettingsExportViewTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(tags=[self.setup_tag()], is_archived=True)
self.setup_bookmark(tags=[self.setup_tag()], is_archived=True)
response = self.client.get(reverse("bookmarks:settings.export"), follow=True)
response = self.client.get(reverse("linkding:settings.export"), follow=True)
self.assertEqual(response.status_code, 200)
self.assertEqual(response["content-type"], "text/plain; charset=UTF-8")
@@ -49,7 +49,7 @@ class SettingsExportViewTestCase(TestCase, BookmarkFactoryMixin):
self.setup_bookmark(tags=[self.setup_tag()], user=other_user),
]
response = self.client.get(reverse("bookmarks:settings.export"), follow=True)
response = self.client.get(reverse("linkding:settings.export"), follow=True)
text = response.content.decode("utf-8")
@@ -61,10 +61,10 @@ class SettingsExportViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_check_authentication(self):
self.client.logout()
response = self.client.get(reverse("bookmarks:settings.export"), follow=True)
response = self.client.get(reverse("linkding:settings.export"), follow=True)
self.assertRedirects(
response, reverse("login") + "?next=" + reverse("bookmarks:settings.export")
response, reverse("login") + "?next=" + reverse("linkding:settings.export")
)
def test_should_show_hint_when_export_raises_error(self):
@@ -72,9 +72,7 @@ class SettingsExportViewTestCase(TestCase, BookmarkFactoryMixin):
"bookmarks.services.exporter.export_netscape_html"
) as mock_export_netscape_html:
mock_export_netscape_html.side_effect = Exception("Nope")
response = self.client.get(
reverse("bookmarks:settings.export"), follow=True
)
response = self.client.get(reverse("linkding:settings.export"), follow=True)
self.assertTemplateUsed(response, "settings/general.html")
self.assertFormErrorHint(

View File

@@ -71,24 +71,24 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
)
def test_should_render_successfully(self):
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
self.assertEqual(response.status_code, 200)
def test_should_check_authentication(self):
self.client.logout()
response = self.client.get(reverse("bookmarks:settings.general"), follow=True)
response = self.client.get(reverse("linkding:settings.general"), follow=True)
self.assertRedirects(
response,
reverse("login") + "?next=" + reverse("bookmarks:settings.general"),
reverse("login") + "?next=" + reverse("linkding:settings.general"),
)
response = self.client.get(reverse("bookmarks:settings.update"), follow=True)
response = self.client.get(reverse("linkding:settings.update"), follow=True)
self.assertRedirects(
response,
reverse("login") + "?next=" + reverse("bookmarks:settings.update"),
reverse("login") + "?next=" + reverse("linkding:settings.update"),
)
def test_update_profile(self):
@@ -121,7 +121,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"collapse_side_panel": True,
}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
html = response.content.decode()
@@ -204,7 +204,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
def test_update_profile_with_invalid_form_returns_422(self):
form_data = self.create_profile_form_data({"items_per_page": "-1"})
response = self.client.post(reverse("bookmarks:settings.update"), form_data)
response = self.client.post(reverse("linkding:settings.update"), form_data)
self.assertEqual(response.status_code, 422)
@@ -213,7 +213,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"theme": UserProfile.THEME_DARK,
}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
html = response.content.decode()
@@ -229,21 +229,21 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"custom_css": "body { background-color: #000; }",
}
)
self.client.post(reverse("bookmarks:settings.update"), form_data, follow=True)
self.client.post(reverse("linkding:settings.update"), form_data, follow=True)
self.user.profile.refresh_from_db()
expected_hash = hashlib.md5(form_data["custom_css"].encode("utf-8")).hexdigest()
self.assertEqual(expected_hash, self.user.profile.custom_css_hash)
form_data["custom_css"] = "body { background-color: #fff; }"
self.client.post(reverse("bookmarks:settings.update"), form_data, follow=True)
self.client.post(reverse("linkding:settings.update"), form_data, follow=True)
self.user.profile.refresh_from_db()
expected_hash = hashlib.md5(form_data["custom_css"].encode("utf-8")).hexdigest()
self.assertEqual(expected_hash, self.user.profile.custom_css_hash)
form_data["custom_css"] = ""
self.client.post(reverse("bookmarks:settings.update"), form_data, follow=True)
self.client.post(reverse("linkding:settings.update"), form_data, follow=True)
self.user.profile.refresh_from_db()
self.assertEqual("", self.user.profile.custom_css_hash)
@@ -258,14 +258,14 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"enable_favicons": True,
}
)
self.client.post(reverse("bookmarks:settings.update"), form_data)
self.client.post(reverse("linkding:settings.update"), form_data)
mock_schedule_bookmarks_without_favicons.assert_called_once_with(self.user)
# No update scheduled if favicons are already enabled
mock_schedule_bookmarks_without_favicons.reset_mock()
self.client.post(reverse("bookmarks:settings.update"), form_data)
self.client.post(reverse("linkding:settings.update"), form_data)
mock_schedule_bookmarks_without_favicons.assert_not_called()
@@ -276,7 +276,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
}
)
self.client.post(reverse("bookmarks:settings.update"), form_data)
self.client.post(reverse("linkding:settings.update"), form_data)
mock_schedule_bookmarks_without_favicons.assert_not_called()
@@ -288,7 +288,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"refresh_favicons": "",
}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
html = response.content.decode()
@@ -302,7 +302,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
tasks, "schedule_refresh_favicons"
) as mock_schedule_refresh_favicons:
form_data = {}
response = self.client.post(reverse("bookmarks:settings.update"), form_data)
response = self.client.post(reverse("linkding:settings.update"), form_data)
html = response.content.decode()
mock_schedule_refresh_favicons.assert_not_called()
@@ -315,7 +315,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
profile.enable_favicons = True
profile.save()
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
html = response.content.decode()
self.assertInHTML(
@@ -333,7 +333,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
profile.enable_favicons = False
profile.save()
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
html = response.content.decode()
self.assertInHTML(
@@ -350,7 +350,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
profile.enable_favicons = True
profile.save()
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
html = response.content.decode()
self.assertInHTML(
@@ -371,14 +371,14 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"enable_preview_images": True,
}
)
self.client.post(reverse("bookmarks:settings.update"), form_data)
self.client.post(reverse("linkding:settings.update"), form_data)
mock_schedule_bookmarks_without_previews.assert_called_once_with(self.user)
# No update scheduled if favicons are already enabled
mock_schedule_bookmarks_without_previews.reset_mock()
self.client.post(reverse("bookmarks:settings.update"), form_data)
self.client.post(reverse("linkding:settings.update"), form_data)
mock_schedule_bookmarks_without_previews.assert_not_called()
@@ -389,14 +389,14 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
}
)
self.client.post(reverse("bookmarks:settings.update"), form_data)
self.client.post(reverse("linkding:settings.update"), form_data)
mock_schedule_bookmarks_without_previews.assert_not_called()
def test_automatic_html_snapshots_should_be_hidden_when_snapshots_not_supported(
self,
):
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
html = response.content.decode()
self.assertInHTML(
@@ -411,7 +411,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
def test_automatic_html_snapshots_should_be_visible_when_snapshots_supported(
self,
):
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
html = response.content.decode()
self.assertInHTML(
@@ -423,7 +423,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
)
def test_about_shows_version_info(self):
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
html = response.content.decode()
self.assertInHTML(
@@ -478,7 +478,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"create_missing_html_snapshots": "",
}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
html = response.content.decode()
@@ -498,7 +498,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"create_missing_html_snapshots": "",
}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
html = response.content.decode()
@@ -515,7 +515,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
mock_create_missing_html_snapshots.return_value = 5
form_data = {}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
html = response.content.decode()
@@ -537,7 +537,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"guest_profile_user": selectable_user.id,
}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
self.assertEqual(response.status_code, 200)
self.assertSuccessMessage(response.content.decode(), "Global settings updated")
@@ -553,7 +553,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"guest_profile_user": "",
}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
self.assertEqual(response.status_code, 200)
self.assertSuccessMessage(response.content.decode(), "Global settings updated")
@@ -573,7 +573,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"landing_page": GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS,
}
response = self.client.post(
reverse("bookmarks:settings.update"), form_data, follow=True
reverse("linkding:settings.update"), form_data, follow=True
)
self.assertEqual(response.status_code, 200)
self.assertSuccessMessage(
@@ -585,11 +585,11 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
"update_global_settings": "",
"landing_page": GlobalSettings.LANDING_PAGE_SHARED_BOOKMARKS,
}
response = self.client.post(reverse("bookmarks:settings.update"), form_data)
response = self.client.post(reverse("linkding:settings.update"), form_data)
self.assertEqual(response.status_code, 403)
def test_global_settings_only_visible_for_superuser(self):
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
html = response.content.decode()
self.assertInHTML(
@@ -601,7 +601,7 @@ class SettingsGeneralViewTestCase(TestCase, BookmarkFactoryMixin):
superuser = self.setup_superuser()
self.client.force_login(superuser)
response = self.client.get(reverse("bookmarks:settings.general"))
response = self.client.get(reverse("linkding:settings.general"))
html = response.content.decode()
self.assertInHTML(

View File

@@ -38,12 +38,12 @@ class SettingsImportViewTestCase(TestCase, BookmarkFactoryMixin):
"bookmarks/tests/resources/simple_valid_import_file.html"
) as import_file:
response = self.client.post(
reverse("bookmarks:settings.import"),
reverse("linkding:settings.import"),
{"import_file": import_file},
follow=True,
)
self.assertRedirects(response, reverse("bookmarks:settings.general"))
self.assertRedirects(response, reverse("linkding:settings.general"))
self.assertSuccessMessage(
response, "3 bookmarks were successfully imported."
)
@@ -51,16 +51,16 @@ class SettingsImportViewTestCase(TestCase, BookmarkFactoryMixin):
def test_should_check_authentication(self):
self.client.logout()
response = self.client.get(reverse("bookmarks:settings.import"), follow=True)
response = self.client.get(reverse("linkding:settings.import"), follow=True)
self.assertRedirects(
response, reverse("login") + "?next=" + reverse("bookmarks:settings.import")
response, reverse("login") + "?next=" + reverse("linkding:settings.import")
)
def test_should_show_hint_if_there_is_no_file(self):
response = self.client.post(reverse("bookmarks:settings.import"), follow=True)
response = self.client.post(reverse("linkding:settings.import"), follow=True)
self.assertRedirects(response, reverse("bookmarks:settings.general"))
self.assertRedirects(response, reverse("linkding:settings.general"))
self.assertNoSuccessMessage(response)
self.assertErrorMessage(response, "Please select a file to import.")
@@ -70,12 +70,12 @@ class SettingsImportViewTestCase(TestCase, BookmarkFactoryMixin):
"bookmarks/tests/resources/invalid_import_file.png", "rb"
) as import_file:
response = self.client.post(
reverse("bookmarks:settings.import"),
reverse("linkding:settings.import"),
{"import_file": import_file},
follow=True,
)
self.assertRedirects(response, reverse("bookmarks:settings.general"))
self.assertRedirects(response, reverse("linkding:settings.general"))
self.assertNoSuccessMessage(response)
self.assertErrorMessage(
response, "An error occurred during bookmark import."
@@ -89,12 +89,12 @@ class SettingsImportViewTestCase(TestCase, BookmarkFactoryMixin):
"bookmarks/tests/resources/simple_valid_import_file_with_one_invalid_bookmark.html"
) as import_file:
response = self.client.post(
reverse("bookmarks:settings.import"),
reverse("linkding:settings.import"),
{"import_file": import_file},
follow=True,
)
self.assertRedirects(response, reverse("bookmarks:settings.general"))
self.assertRedirects(response, reverse("linkding:settings.general"))
self.assertSuccessMessage(
response, "2 bookmarks were successfully imported."
)
@@ -108,7 +108,7 @@ class SettingsImportViewTestCase(TestCase, BookmarkFactoryMixin):
"bookmarks/tests/resources/simple_valid_import_file.html"
) as import_file:
self.client.post(
reverse("bookmarks:settings.import"),
reverse("linkding:settings.import"),
{"import_file": import_file},
follow=True,
)
@@ -124,7 +124,7 @@ class SettingsImportViewTestCase(TestCase, BookmarkFactoryMixin):
"bookmarks/tests/resources/simple_valid_import_file.html"
) as import_file:
self.client.post(
reverse("bookmarks:settings.import"),
reverse("linkding:settings.import"),
{"import_file": import_file, "map_private_flag": "on"},
follow=True,
)

View File

@@ -13,25 +13,25 @@ class SettingsIntegrationsViewTestCase(TestCase, BookmarkFactoryMixin):
self.client.force_login(user)
def test_should_render_successfully(self):
response = self.client.get(reverse("bookmarks:settings.integrations"))
response = self.client.get(reverse("linkding:settings.integrations"))
self.assertEqual(response.status_code, 200)
def test_should_check_authentication(self):
self.client.logout()
response = self.client.get(
reverse("bookmarks:settings.integrations"), follow=True
reverse("linkding:settings.integrations"), follow=True
)
self.assertRedirects(
response,
reverse("login") + "?next=" + reverse("bookmarks:settings.integrations"),
reverse("login") + "?next=" + reverse("linkding:settings.integrations"),
)
def test_should_generate_api_token_if_not_exists(self):
self.assertEqual(Token.objects.count(), 0)
self.client.get(reverse("bookmarks:settings.integrations"))
self.client.get(reverse("linkding:settings.integrations"))
self.assertEqual(Token.objects.count(), 1)
token = Token.objects.first()
@@ -41,14 +41,14 @@ class SettingsIntegrationsViewTestCase(TestCase, BookmarkFactoryMixin):
Token.objects.get_or_create(user=self.user)
self.assertEqual(Token.objects.count(), 1)
self.client.get(reverse("bookmarks:settings.integrations"))
self.client.get(reverse("linkding:settings.integrations"))
self.assertEqual(Token.objects.count(), 1)
def test_should_generate_feed_token_if_not_exists(self):
self.assertEqual(FeedToken.objects.count(), 0)
self.client.get(reverse("bookmarks:settings.integrations"))
self.client.get(reverse("linkding:settings.integrations"))
self.assertEqual(FeedToken.objects.count(), 1)
token = FeedToken.objects.first()
@@ -58,12 +58,12 @@ class SettingsIntegrationsViewTestCase(TestCase, BookmarkFactoryMixin):
FeedToken.objects.get_or_create(user=self.user)
self.assertEqual(FeedToken.objects.count(), 1)
self.client.get(reverse("bookmarks:settings.integrations"))
self.client.get(reverse("linkding:settings.integrations"))
self.assertEqual(FeedToken.objects.count(), 1)
def test_should_display_feed_urls(self):
response = self.client.get(reverse("bookmarks:settings.integrations"))
response = self.client.get(reverse("linkding:settings.integrations"))
html = response.content.decode()
token = FeedToken.objects.first()

View File

@@ -35,7 +35,7 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
self.create_toast()
self.create_toast(acknowledged=True)
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
# Should render toasts container
self.assertContains(response, '<div class="toasts">')
@@ -47,7 +47,7 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
self.create_toast(acknowledged=True)
self.create_toast(acknowledged=True)
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
# Should not render toasts container
self.assertContains(response, '<div class="toasts container grid-lg">', count=0)
@@ -63,7 +63,7 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
self.create_toast(user=other_user)
self.create_toast(user=other_user)
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
# Should not render toasts container
self.assertContains(response, '<div class="toasts container grid-lg">', count=0)
@@ -72,9 +72,9 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
def test_form_tag(self):
self.create_toast()
expected_form_tag = f'<form action="{reverse("bookmarks:toasts.acknowledge")}?return_url={reverse("bookmarks:index")}" method="post">'
expected_form_tag = f'<form action="{reverse("linkding:toasts.acknowledge")}?return_url={reverse("linkding:bookmarks.index")}" method="post">'
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
self.assertContains(response, expected_form_tag)
@@ -87,7 +87,7 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
</div>
"""
response = self.client.get(reverse("bookmarks:index"))
response = self.client.get(reverse("linkding:bookmarks.index"))
html = response.content.decode()
self.assertInHTML(expected_toast, html)
@@ -96,7 +96,7 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
toast = self.create_toast()
self.client.post(
reverse("bookmarks:toasts.acknowledge"),
reverse("linkding:toasts.acknowledge"),
{
"toast": [toast.id],
},
@@ -107,8 +107,8 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
def test_acknowledge_toast_should_redirect_to_return_url(self):
toast = self.create_toast()
return_url = reverse("bookmarks:settings.general")
acknowledge_url = reverse("bookmarks:toasts.acknowledge")
return_url = reverse("linkding:settings.general")
acknowledge_url = reverse("linkding:toasts.acknowledge")
acknowledge_url = acknowledge_url + "?return_url=" + return_url
response = self.client.post(
@@ -124,13 +124,13 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
toast = self.create_toast()
response = self.client.post(
reverse("bookmarks:toasts.acknowledge"),
reverse("linkding:toasts.acknowledge"),
{
"toast": [toast.id],
},
)
self.assertRedirects(response, reverse("bookmarks:index"))
self.assertRedirects(response, reverse("linkding:bookmarks.index"))
@disable_logging
def test_acknowledge_toast_should_not_acknowledge_other_users_toast(self):
@@ -140,7 +140,7 @@ class ToastsViewTestCase(TestCase, BookmarkFactoryMixin):
toast = self.create_toast(user=other_user)
response = self.client.post(
reverse("bookmarks:toasts.acknowledge"),
reverse("linkding:toasts.acknowledge"),
{
"toast": [toast.id],
},