48 lines
2 KiB
Python
48 lines
2 KiB
Python
from django.test import Client
|
|
|
|
from authentication.tests import SignatureAuthClient, UserTestMixin, GroupTestMixin, ToolshedTestCase
|
|
|
|
client = SignatureAuthClient()
|
|
|
|
|
|
class IdMapTestCase(UserTestMixin, GroupTestMixin, ToolshedTestCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.prepare_users()
|
|
|
|
def test_idmap_includes_self(self):
|
|
reply = client.get('/api/idmap/', self.f['local_user1'])
|
|
self.assertEqual(reply.status_code, 200)
|
|
identities = reply.json()['identities']
|
|
self.assertIn(str(self.f['local_user1']), [i['username'] for i in identities])
|
|
|
|
def test_idmap_includes_friends(self):
|
|
self.f['local_user1'].friends.add(self.f['local_user2'].public_identity)
|
|
reply = client.get('/api/idmap/', self.f['local_user1'])
|
|
self.assertEqual(reply.status_code, 200)
|
|
identities = reply.json()['identities']
|
|
self.assertIn(str(self.f['local_user2']), [i['username'] for i in identities])
|
|
|
|
def test_idmap_excludes_non_friends(self):
|
|
reply = client.get('/api/idmap/', self.f['local_user1'])
|
|
self.assertEqual(reply.status_code, 200)
|
|
identities = reply.json()['identities']
|
|
self.assertNotIn(str(self.f['local_user2']), [i['username'] for i in identities])
|
|
|
|
def test_idmap_includes_member_groups(self):
|
|
self.prepare_groups()
|
|
reply = client.get('/api/idmap/', self.f['local_user1'])
|
|
self.assertEqual(reply.status_code, 200)
|
|
groups = reply.json()['groups']
|
|
self.assertIn(str(self.f['group1']), [g['handle'] for g in groups])
|
|
|
|
def test_idmap_excludes_non_member_groups(self):
|
|
self.prepare_groups()
|
|
reply = client.get('/api/idmap/', self.f['local_user2'])
|
|
self.assertEqual(reply.status_code, 200)
|
|
groups = reply.json()['groups']
|
|
self.assertNotIn(str(self.f['group1']), [g['handle'] for g in groups])
|
|
|
|
def test_idmap_unauthenticated(self):
|
|
reply = Client().get('/api/idmap/')
|
|
self.assertEqual(reply.status_code, 403)
|