--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/notes/tests/api/auth.py Tue Jul 18 17:08:27 2017 +0200
@@ -0,0 +1,137 @@
+"""
+Tests the core api for sessions
+"""
+import logging
+from uuid import uuid4
+
+from django.contrib.auth import get_user_model
+from django.urls import reverse
+from django.utils import timezone
+from rest_framework import status
+from rest_framework.test import APITransactionTestCase
+from django.contrib.auth.models import Group
+
+logger = logging.getLogger(__name__)
+
+
+class GroupApiTests(APITransactionTestCase):
+
+ def setUp(self):
+ User = get_user_model()
+ self.user1 = User.objects.create_user(
+ username='test_user1',
+ email='test_user@emial.com',
+ password='top_secret'
+ )
+ self.user2 = User.objects.create_user(
+ username='test_user2',
+ email='test_user@emial.com',
+ password='top_secret'
+ )
+
+ self.group1 = Group(name='group1')
+ self.group1.save()
+ self.group1.user_set.add(self.user1)
+ self.group1.profile.owner = self.user1
+ self.group1.profile.description = "This is the group 1"
+ self.group1.profile.save()
+
+ self.group2 = Group(name='group2')
+ self.group2.save()
+ self.group2.profile.owner = self.user2
+ self.group2.profile.description = "This is the group 2"
+ self.group2.profile.save()
+
+
+ def test_list_group_no_login(self):
+ url = reverse('auth_group-list')
+ response = self.client.get(url)
+ logger.debug("LIST group response %r", response.data)
+
+ self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
+
+
+ def test_list_group(self):
+ url = reverse('auth_group-list')
+ self.client.login(username='test_user1', password='top_secret')
+ response = self.client.get(url)
+
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+
+ self.assertEqual(2, len(response.data), "Must have 2 groups")
+ for group_def in response.data:
+ self.assertIn('name', group_def.keys())
+ self.assertIn('owner', group_def.keys())
+ self.assertIn('description', group_def.keys())
+ self.assertIn(group_def.get('owner'), ['test_user1', 'test_user2'])
+ self.assertIn(group_def.get('description'), ['This is the group 1', 'This is the group 2'])
+ self.assertIn(group_def.get('name'), ['group1', 'group2'])
+
+ def test_create_group(self):
+ url = reverse('auth_group-list')
+ self.client.login(username='test_user1', password='top_secret')
+ response = self.client.post(
+ url,
+ {'name':"group3", 'description': "this is group 3", 'users': ['test_user2']})
+
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+
+ self.assertEqual('group3', response.data.get('name'))
+ self.assertSetEqual(set(['test_user1', 'test_user2']), set(response.data.get('users')))
+
+ group3 = Group.objects.get(name='group3')
+ self.assertEqual('this is group 3', group3.profile.description)
+ self.assertSetEqual(
+ set(['test_user1', 'test_user2']),
+ set(map(lambda u: u.username, group3.user_set.all()))
+ )
+
+ def test_create_group_no_user(self):
+ url = reverse('auth_group-list')
+ self.client.login(username='test_user1', password='top_secret')
+ response = self.client.post(
+ url,
+ {'name':"group3", 'description': "this is group 3"})
+
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+
+ self.assertEqual('group3', response.data.get('name'))
+ self.assertSetEqual(set(['test_user1']), set(response.data.get('users')))
+
+ group3 = Group.objects.get(name='group3')
+ self.assertEqual('this is group 3', group3.profile.description)
+ self.assertSetEqual(
+ set(['test_user1']),
+ set(map(lambda u: u.username, group3.user_set.all()))
+ )
+
+
+ def test_detail_group(self):
+ url = reverse('auth_group-detail', kwargs={'name': self.group1.name})
+ self.client.login(username='test_user1', password='top_secret')
+ response = self.client.get(url)
+
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ self.assertEqual('group1', response.data.get('name'))
+ self.assertEqual('This is the group 1', response.data.get('description'))
+ self.assertSetEqual(set(['test_user1']), set(response.data.get('users')))
+
+ def test_update_group(self):
+ url = reverse('auth_group-detail', kwargs={'name': self.group1.name})
+ self.client.login(username='test_user1', password='top_secret')
+ response = self.client.put(
+ url,
+ {'name': 'group1', 'description': "this is group 1 changed", 'users': ['test_user2']})
+
+ logger.debug("RESPONSE %r", response.data)
+ self.assertEqual(response.status_code, status.HTTP_200_OK)
+ self.assertEqual('group1', response.data.get('name'))
+ self.assertEqual('this is group 1 changed', response.data.get('description'))
+ self.assertSetEqual(set(['test_user1', 'test_user2']), set(response.data.get('users')))
+
+ group1 = Group.objects.get(name='group1')
+ self.assertEqual('this is group 1 changed', group1.profile.description)
+ self.assertSetEqual(
+ set(['test_user1', 'test_user2']),
+ set(map(lambda u: u.username, group1.user_set.all()))
+ )