djangoldp-notification/djangoldp_notification/tests/test_models.py

49 lines
2.0 KiB
Python

import uuid
from rest_framework.test import APITestCase, APIClient
from djangoldp.serializers import LDListMixin, LDPSerializer
from djangoldp_account.models import LDPUser
from djangoldp_notification.models import Subscription
class TestSubscription(APITestCase):
circle_user1_url = "http://localhost:8000/circles/1/"
circle_user2_url = "http://localhost:8000/circles/2/"
def _get_random_user(self):
return LDPUser.objects.create(email='{}@test.co.uk'.format(str(uuid.uuid4())), first_name='Test',
last_name='Test', username=str(uuid.uuid4()))
def _auth_as_user(self, user):
self.client.force_authenticate(user=user)
def setUpLoggedInUser(self):
self.user = self._get_random_user()
self._auth_as_user(self.user)
def setUp(self):
self.client = APIClient()
LDListMixin.to_representation_cache.reset()
LDPSerializer.to_representation_cache.reset()
self.user1 = self._get_random_user()
Subscription.objects.create(object=self.circle_user1_url, inbox="http://testserver/users/karl_marx/inbox/")
self.user2 = self._get_random_user()
Subscription.objects.create(object=self.circle_user2_url,
inbox="http://testserver/users/piotr_kropotkine/inbox/")
def test_not_logged_fails(self):
response = self.client.get("/subscriptions/")
self.assertEqual(response.status_code, 403)
def test_logged_in_succeeds(self):
self._auth_as_user(self.user2)
response = self.client.get("/subscriptions/").data.get("ldp:contains")
self.assertEqual(len(response), 2)
response = response[1]
self.assertEqual(response["object"], self.circle_user2_url)
self.assertEqual(response["inbox"], "http://testserver/users/piotr_kropotkine/inbox/")
self.assertIn({'mode': {'@type': 'view'}}, response["permissions"])
self.assertIn({'mode': {'@type': 'delete'}}, response["permissions"])