from django.test import TestCase from django.urls import reverse from rest_framework.authtoken.models import Token from bookmarks.tests.helpers import BookmarkFactoryMixin from bookmarks.models import FeedToken class SettingsIntegrationsViewTestCase(TestCase, BookmarkFactoryMixin): def setUp(self) -> None: user = self.get_or_create_test_user() self.client.force_login(user) def test_should_render_successfully(self): response = self.client.get(reverse("bookmarks: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 ) self.assertRedirects( response, reverse("login") + "?next=" + reverse("bookmarks: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.assertEqual(Token.objects.count(), 1) token = Token.objects.first() self.assertEqual(token.user, self.user) def test_should_not_generate_api_token_if_exists(self): Token.objects.get_or_create(user=self.user) self.assertEqual(Token.objects.count(), 1) self.client.get(reverse("bookmarks: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.assertEqual(FeedToken.objects.count(), 1) token = FeedToken.objects.first() self.assertEqual(token.user, self.user) def test_should_not_generate_feed_token_if_exists(self): FeedToken.objects.get_or_create(user=self.user) self.assertEqual(FeedToken.objects.count(), 1) self.client.get(reverse("bookmarks:settings.integrations")) self.assertEqual(FeedToken.objects.count(), 1) def test_should_display_feed_urls(self): response = self.client.get(reverse("bookmarks:settings.integrations")) html = response.content.decode() token = FeedToken.objects.first() self.assertInHTML( f'All bookmarks', html ) self.assertInHTML( f'Unread bookmarks', html, ) self.assertInHTML( f'Shared bookmarks', html, ) self.assertInHTML( f'Public shared bookmarks', html, )