djangoldp-notification/djangoldp_notification/tests/test_models.py

48 lines
2.0 KiB
Python

from collections import OrderedDict
from djangoldp.factories import UserFactory
from test_plus import APITestCase
from djangoldp_notification.models import Subscription
class TestSubscription(APITestCase):
user1 = None
user2 = None
circle_user1_url = "http://localhost:8000/circles/1"
circle_user2_url = "http://localhost:8000/circles/2"
def setUp(self):
self.user1 = UserFactory(username="karl_marx", password="password")
Subscription.objects.create(object=self.circle_user1_url, inbox="http://testserver/users/karl_marx/inbox/")
self.user2 = UserFactory(username="piotr_kropotkine", password="password")
Subscription.objects.create(object=self.circle_user2_url,
inbox="http://testserver/users/piotr_kropotkine/inbox/")
def test_not_logged_fails(self):
response = self.get("/subscriptions/")
self.assert_http_403_forbidden(response)
self.assertEqual(response.data.get("detail"), "Authentication credentials were not provided.")
def test_logged_in_succeeds(self):
with self.login(self.user1):
result = self.get("/subscriptions/").data.get("ldp:contains")
expected = [OrderedDict({
"@id": "http://localhost:8000/subscriptions/1/",
"object": self.circle_user1_url,
"inbox": "http://testserver/users/karl_marx/inbox/",
"permissions": [{'mode': {'@type': 'view'}}, {'mode': {'@type': 'delete'}}]
})]
self.assertSequenceEqual(result, expected)
with self.login(self.user2):
result = self.get("/subscriptions/").data.get("ldp:contains")
expected = [OrderedDict({
"@id": "http://localhost:8000/subscriptions/2/",
"object": self.circle_user2_url,
"inbox": "http://testserver/users/piotr_kropotkine/inbox/",
"permissions": [{'mode': {'@type': 'view'}}, {'mode': {'@type': 'delete'}}]
})]
self.assertSequenceEqual(result, expected)