src/notes/tests/api/session.py
changeset 131 adad5563603c
parent 128 34a75bd8d0b9
child 142 56850f5c73f6
equal deleted inserted replaced
130:78246db1cbac 131:adad5563603c
     4 import datetime
     4 import datetime
     5 import logging
     5 import logging
     6 from uuid import uuid4
     6 from uuid import uuid4
     7 
     7 
     8 from django.contrib.auth import get_user_model
     8 from django.contrib.auth import get_user_model
       
     9 from django.contrib.auth.models import Group
     9 from django.urls import reverse
    10 from django.urls import reverse
    10 from django.utils import timezone
    11 from django.utils import timezone
    11 from rest_framework import status
    12 from rest_framework import status
    12 from rest_framework.test import APITransactionTestCase
    13 from rest_framework.test import APITransactionTestCase
    13 
    14 
    14 from notes.models import Session, Note
    15 from notes.models import Session, Note, GroupProfile
    15 
    16 
    16 logger = logging.getLogger(__name__)
    17 logger = logging.getLogger(__name__)
    17 
    18 
    18 class SessionApiTests(APITransactionTestCase):
    19 class SessionApiTests(APITransactionTestCase):
    19 
    20 
    20     def setUp(self):
    21     def setUp(self):
    21         User = get_user_model()
    22         User = get_user_model()
    22         user1 = User.objects.create_user(
    23         self.user1 = User.objects.create_user(
    23             username='test_user1',
    24             username='test_user1',
    24             email='test_user@emial.com',
    25             email='test_user@emial.com',
    25             password='top_secret'
    26             password='top_secret'
    26         )
    27         )
    27         user2 = User.objects.create_user(
    28         self.user2 = User.objects.create_user(
    28             username='test_user2',
    29             username='test_user2',
    29             email='test_user@emial.com',
    30             email='test_user@emial.com',
    30             password='top_secret'
    31             password='top_secret'
    31         )
    32         )
    32         user3 = User.objects.create_user(
    33         user3 = User.objects.create_user(
    33             username='test_user3',
    34             username='test_user3',
    34             email='test_user@emial.com',
    35             email='test_user@emial.com',
    35             password='top_secret'
    36             password='top_secret'
    36         )
    37         )
    37 
    38 
       
    39         self.group1 = Group(name='group1')
       
    40         self.group1.save()
       
    41         self.group1.user_set.add(self.user1)
       
    42         self.group1.user_set.add(self.user2)
       
    43         self.group1.profile.owner = self.user1
       
    44         self.group1.profile.description = "This is the group 1"
       
    45         self.group1.profile.save()
       
    46 
       
    47         self.user2.profile.default_group = self.group1
       
    48         self.user2.profile.save()
       
    49 
    38         self.session1 = Session.objects.create(
    50         self.session1 = Session.objects.create(
    39             title="a new session 1",
    51             title="a new session 1",
    40             description="Description 1",
    52             description="Description 1",
    41             protocol="[]",
    53             protocol="[]",
    42             owner=user1
    54             group=self.user1.profile.default_group,
       
    55             owner=self.user1
    43         )
    56         )
    44 
    57 
    45         self.session2 = Session.objects.create(
    58         self.session2 = Session.objects.create(
    46             title="a new session 2",
    59             title="a new session 2",
    47             description="Description 2",
    60             description="Description 2",
    48             protocol="[]",
    61             protocol="[]",
    49             owner=user2
    62             group=self.user2.profile.default_group,
       
    63             owner=self.user2
    50         )
    64         )
    51 
    65 
    52         self.session3 = Session.objects.create(
    66         self.session3 = Session.objects.create(
    53             title="a new session 3",
    67             title="a new session 3",
    54             description="Description 3",
    68             description="Description 3",
    55             protocol="[]",
    69             protocol="[]",
       
    70             group=user3.profile.default_group,
    56             owner=user3
    71             owner=user3
    57         )
    72         )
    58 
    73 
    59         self.session4 = Session.objects.create(
    74         self.session4 = Session.objects.create(
    60             title="a new session 4",
    75             title="a new session 4",
    61             description="Description 4",
    76             description="Description 4",
    62             protocol="[]",
    77             protocol="[]",
       
    78             group=user3.profile.default_group,
    63             owner=user3
    79             owner=user3
    64         )
    80         )
    65 
    81 
    66         Note.objects.create(
    82         Note.objects.create(
    67             tc_start=timezone.now(),
    83             tc_start=timezone.now(),
   148         url = reverse('notes:session-list')
   164         url = reverse('notes:session-list')
   149         self.client.login(username='test_user1', password='top_secret')
   165         self.client.login(username='test_user1', password='top_secret')
   150         response = self.client.post(url, {
   166         response = self.client.post(url, {
   151             'title': "a new session",
   167             'title': "a new session",
   152             'description': "description of the session",
   168             'description': "description of the session",
   153             'protocol': "[]"
   169             'protocol': "[]",
   154         }, format='json')
   170             'group': 'group1'
   155 
   171         }, format='json')
   156 
   172 
   157         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
   173         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
   158         json = response.json()
   174         json = response.json()
   159         self.assertIn('ext_id', json)
   175         self.assertIn('ext_id', json)
   160 
   176 
       
   177         session = Session.objects.get(ext_id=json['ext_id'])
       
   178         self.assertIsNotNone(session)
       
   179         self.assertEqual(self.group1, session.group)
       
   180 
       
   181 
       
   182     def test_create_session_no_group(self):
       
   183         url = reverse('notes:session-list')
       
   184         self.client.login(username='test_user1', password='top_secret')
       
   185         response = self.client.post(url, {
       
   186             'title': "a new session",
       
   187             'description': "description of the session",
       
   188             'protocol': "[]",
       
   189         }, format='json')
       
   190 
       
   191         self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json())
       
   192         json = response.json()
       
   193         self.assertIn('ext_id', json)
       
   194 
       
   195         session = Session.objects.get(ext_id=json['ext_id'])
       
   196         self.assertIsNotNone(session)
       
   197         user1_personal_group = Group.objects.get(profile__owner_personal=self.user1)
       
   198         self.assertEqual(user1_personal_group, session.group)
       
   199 
       
   200     def test_create_session_no_group_default(self):
       
   201         url = reverse('notes:session-list')
       
   202         self.client.login(username='test_user2', password='top_secret')
       
   203         response = self.client.post(url, {
       
   204             'title': "a new session",
       
   205             'description': "description of the session",
       
   206             'protocol': "[]",
       
   207         }, format='json')
       
   208 
       
   209         self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json())
       
   210         json = response.json()
       
   211         self.assertIn('ext_id', json)
       
   212 
       
   213         session = Session.objects.get(ext_id=json['ext_id'])
       
   214         self.assertIsNotNone(session)
       
   215         self.assertEqual(self.group1, session.group)
       
   216 
       
   217 
       
   218     def test_create_session_no_group_default(self):
       
   219         url = reverse('notes:session-list')
       
   220         self.client.login(username='test_user2', password='top_secret')
       
   221         response = self.client.post(url, {
       
   222             'title': "a new session",
       
   223             'description': "description of the session",
       
   224             'protocol': "[]",
       
   225         }, format='json')
       
   226 
       
   227         self.assertEqual(response.status_code, status.HTTP_201_CREATED, "Error when creating session %r" % response.json())
       
   228         json = response.json()
       
   229         self.assertIn('ext_id', json)
       
   230 
       
   231         session = Session.objects.get(ext_id=json['ext_id'])
       
   232         self.assertIsNotNone(session)
       
   233         self.assertEqual(self.group1, session.group)
       
   234 
       
   235 
       
   236     def test_create_session_bad_group(self):
       
   237         url = reverse('notes:session-list')
       
   238         self.client.login(username='test_user3', password='top_secret')
       
   239         response = self.client.post(url, {
       
   240             'title': "a new session",
       
   241             'description': "description of the session",
       
   242             'protocol': "[]",
       
   243             'group': "group1"
       
   244         }, format='json')
       
   245 
       
   246         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
       
   247         json = response.json()
       
   248         self.assertIn('non_field_errors', json)
       
   249         self.assertIn('Owner must be in group', json['non_field_errors'])
       
   250 
       
   251 
   161     def test_create_session_with_ext_id(self):
   252     def test_create_session_with_ext_id(self):
   162         url = reverse('notes:session-list')
   253         url = reverse('notes:session-list')
   163         self.client.login(username='test_user1', password='top_secret')
   254         self.client.login(username='test_user1', password='top_secret')
   164         ext_id = str(uuid4())
   255         ext_id = str(uuid4())
   165         response = self.client.post(url, {
   256         response = self.client.post(url, {
   166             'ext_id': ext_id,
   257             'ext_id': ext_id,
   167             'title': "a new session",
   258             'title': "a new session",
   168             'description': "description of the session",
   259             'description': "description of the session",
       
   260             'group': 'group1',
   169             'protocol': "[]"
   261             'protocol': "[]"
   170         }, format='json')
   262         }, format='json')
   171 
   263 
   172         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
   264         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
   173         json = response.json()
   265         json = response.json()