diff -r 78246db1cbac -r adad5563603c src/notes/tests/api/session.py --- a/src/notes/tests/api/session.py Sun Jul 30 01:02:09 2017 +0200 +++ b/src/notes/tests/api/session.py Mon Jul 31 23:18:38 2017 +0200 @@ -6,12 +6,13 @@ from uuid import uuid4 from django.contrib.auth import get_user_model +from django.contrib.auth.models import Group from django.urls import reverse from django.utils import timezone from rest_framework import status from rest_framework.test import APITransactionTestCase -from notes.models import Session, Note +from notes.models import Session, Note, GroupProfile logger = logging.getLogger(__name__) @@ -19,12 +20,12 @@ def setUp(self): User = get_user_model() - user1 = User.objects.create_user( + self.user1 = User.objects.create_user( username='test_user1', email='test_user@emial.com', password='top_secret' ) - user2 = User.objects.create_user( + self.user2 = User.objects.create_user( username='test_user2', email='test_user@emial.com', password='top_secret' @@ -35,24 +36,38 @@ password='top_secret' ) + self.group1 = Group(name='group1') + self.group1.save() + self.group1.user_set.add(self.user1) + self.group1.user_set.add(self.user2) + self.group1.profile.owner = self.user1 + self.group1.profile.description = "This is the group 1" + self.group1.profile.save() + + self.user2.profile.default_group = self.group1 + self.user2.profile.save() + self.session1 = Session.objects.create( title="a new session 1", description="Description 1", protocol="[]", - owner=user1 + group=self.user1.profile.default_group, + owner=self.user1 ) self.session2 = Session.objects.create( title="a new session 2", description="Description 2", protocol="[]", - owner=user2 + group=self.user2.profile.default_group, + owner=self.user2 ) self.session3 = Session.objects.create( title="a new session 3", description="Description 3", protocol="[]", + group=user3.profile.default_group, owner=user3 ) @@ -60,6 +75,7 @@ title="a new session 4", description="Description 4", protocol="[]", + group=user3.profile.default_group, owner=user3 ) @@ -150,14 +166,89 @@ response = self.client.post(url, { 'title': "a new session", 'description': "description of the session", - 'protocol': "[]" + 'protocol': "[]", + 'group': 'group1' }, format='json') - self.assertEqual(response.status_code, status.HTTP_201_CREATED) json = response.json() self.assertIn('ext_id', json) + session = Session.objects.get(ext_id=json['ext_id']) + self.assertIsNotNone(session) + self.assertEqual(self.group1, session.group) + + + def test_create_session_no_group(self): + url = reverse('notes:session-list') + self.client.login(username='test_user1', password='top_secret') + response = self.client.post(url, { + 'title': "a new session", + 'description': "description of the session", + 'protocol': "[]", + }, format='json') + + self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json()) + json = response.json() + self.assertIn('ext_id', json) + + session = Session.objects.get(ext_id=json['ext_id']) + self.assertIsNotNone(session) + user1_personal_group = Group.objects.get(profile__owner_personal=self.user1) + self.assertEqual(user1_personal_group, session.group) + + def test_create_session_no_group_default(self): + url = reverse('notes:session-list') + self.client.login(username='test_user2', password='top_secret') + response = self.client.post(url, { + 'title': "a new session", + 'description': "description of the session", + 'protocol': "[]", + }, format='json') + + self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json()) + json = response.json() + self.assertIn('ext_id', json) + + session = Session.objects.get(ext_id=json['ext_id']) + self.assertIsNotNone(session) + self.assertEqual(self.group1, session.group) + + + def test_create_session_no_group_default(self): + url = reverse('notes:session-list') + self.client.login(username='test_user2', password='top_secret') + response = self.client.post(url, { + 'title': "a new session", + 'description': "description of the session", + 'protocol': "[]", + }, format='json') + + self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json()) + json = response.json() + self.assertIn('ext_id', json) + + session = Session.objects.get(ext_id=json['ext_id']) + self.assertIsNotNone(session) + self.assertEqual(self.group1, session.group) + + + def test_create_session_bad_group(self): + url = reverse('notes:session-list') + self.client.login(username='test_user3', password='top_secret') + response = self.client.post(url, { + 'title': "a new session", + 'description': "description of the session", + 'protocol': "[]", + 'group': "group1" + }, format='json') + + self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) + json = response.json() + self.assertIn('non_field_errors', json) + self.assertIn('Owner must be in group', json['non_field_errors']) + + def test_create_session_with_ext_id(self): url = reverse('notes:session-list') self.client.login(username='test_user1', password='top_secret') @@ -166,6 +257,7 @@ 'ext_id': ext_id, 'title': "a new session", 'description': "description of the session", + 'group': 'group1', 'protocol': "[]" }, format='json')