src/notes/tests/api/session.py
changeset 74 043477fd5c5c
parent 31 63be3ce389f7
child 119 8ff8e2aee0f9
equal deleted inserted replaced
73:7e8cdc74d86f 74:043477fd5c5c
     1 """
     1 """
     2 Tests the core api for sessions
     2 Tests the core api for sessions
     3 """
     3 """
     4 import logging
     4 import logging
       
     5 from uuid import uuid4
     5 
     6 
     6 from django.contrib.auth import get_user_model
     7 from django.contrib.auth import get_user_model
     7 from django.urls import reverse
     8 from django.urls import reverse
     8 from django.utils import timezone
     9 from django.utils import timezone
     9 from rest_framework import status
    10 from rest_framework import status
    76             categorization="[]"
    77             categorization="[]"
    77         )
    78         )
    78 
    79 
    79 
    80 
    80     def test_list_session_no_user(self):
    81     def test_list_session_no_user(self):
    81         url = reverse('notes_api:session-list')
    82         url = reverse('notes:session-list')
    82         response = self.client.post(url)
    83         response = self.client.post(url)
    83         self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
    84         self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
    84 
    85 
    85 
    86 
    86     def test_list_session(self):
    87     def test_list_session(self):
    87         url = reverse('notes_api:session-list')
    88         url = reverse('notes:session-list')
    88         self.client.login(username='test_user1', password='top_secret')
    89         self.client.login(username='test_user1', password='top_secret')
    89         response = self.client.get(url)
    90         response = self.client.get(url)
    90         self.assertEqual(response.status_code, status.HTTP_200_OK)
    91         self.assertEqual(response.status_code, status.HTTP_200_OK)
    91         json = response.json()
    92         json = response.json()
    92         self.assertEqual(len(json), 1, "must have one session")
    93         self.assertEqual(len(json), 1, "must have one session")
    93         for session in json:
    94         for session in json:
    94             self.assertEqual(session['owner'], 'test_user1')
    95             self.assertEqual(session['owner'], 'test_user1')
    95 
    96 
    96 
    97 
    97     def test_create_session_no_user(self):
    98     def test_create_session_no_user(self):
    98         url = reverse('notes_api:session-list')
    99         url = reverse('notes:session-list')
    99         response = self.client.post(url, {
   100         response = self.client.post(url, {
   100             'title': "a new session",
   101             'title': "a new session",
   101             'description': "description of the session",
   102             'description': "description of the session",
   102             'protocol': "[]"
   103             'protocol': "[]"
   103         }, format='json')
   104         }, format='json')
   104 
   105 
   105         self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
   106         self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)
   106 
   107 
   107 
   108 
   108     def test_create_session(self):
   109     def test_create_session(self):
   109         url = reverse('notes_api:session-list')
   110         url = reverse('notes:session-list')
   110         self.client.login(username='test_user1', password='top_secret')
   111         self.client.login(username='test_user1', password='top_secret')
   111         response = self.client.post(url, {
   112         response = self.client.post(url, {
   112             'title': "a new session",
   113             'title': "a new session",
   113             'description': "description of the session",
   114             'description': "description of the session",
   114             'protocol': "[]"
   115             'protocol': "[]"
   117 
   118 
   118         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
   119         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
   119         json = response.json()
   120         json = response.json()
   120         self.assertIn('ext_id', json)
   121         self.assertIn('ext_id', json)
   121 
   122 
       
   123     def test_create_session_with_ext_id(self):
       
   124         url = reverse('notes:session-list')
       
   125         self.client.login(username='test_user1', password='top_secret')
       
   126         ext_id = str(uuid4())
       
   127         response = self.client.post(url, {
       
   128             'ext_id': ext_id,
       
   129             'title': "a new session",
       
   130             'description': "description of the session",
       
   131             'protocol': "[]"
       
   132         }, format='json')
       
   133 
       
   134         self.assertEqual(response.status_code, status.HTTP_201_CREATED)
       
   135         json = response.json()
       
   136         self.assertIn('ext_id', json)
       
   137         self.assertEqual(json['ext_id'], ext_id)
       
   138 
       
   139 
   122     def test_detail_session(self):
   140     def test_detail_session(self):
   123         url = reverse('notes_api:session-detail', kwargs={'ext_id':str(self.session1.ext_id)})
   141         url = reverse('notes:session-detail', kwargs={'ext_id':str(self.session1.ext_id)})
   124         self.client.login(username='test_user1', password='top_secret')
   142         self.client.login(username='test_user1', password='top_secret')
   125         response = self.client.get(url, format='json')
   143         response = self.client.get(url, format='json')
   126         self.assertEqual(response.status_code, status.HTTP_200_OK)
   144         self.assertEqual(response.status_code, status.HTTP_200_OK)
   127 
   145 
   128     def test_list_notes(self):
   146     def test_list_notes(self):
   129         url = reverse('notes_api:notes-list', kwargs={'session_ext_id':str(self.session1.ext_id)})
   147         url = reverse('notes:notes-list', kwargs={'session_ext_id':str(self.session1.ext_id)})
   130         self.client.login(username='test_user1', password='top_secret')
   148         self.client.login(username='test_user1', password='top_secret')
   131         response = self.client.get(url, format='json')
   149         response = self.client.get(url, format='json')
   132         self.assertEqual(response.status_code, status.HTTP_200_OK)
   150         self.assertEqual(response.status_code, status.HTTP_200_OK)
   133 
   151 
   134     def test_detail_session_bad(self):
   152     def test_detail_session_bad(self):
   135         url = reverse('notes_api:session-detail', kwargs={'ext_id':str(self.session2.ext_id)})
   153         url = reverse('notes:session-detail', kwargs={'ext_id':str(self.session2.ext_id)})
   136         self.client.login(username='test_user1', password='top_secret')
   154         self.client.login(username='test_user1', password='top_secret')
   137         response = self.client.get(url, format='json')
   155         response = self.client.get(url, format='json')
   138         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
   156         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
   139 
   157 
   140     def test_list_notes_bad(self):
   158     def test_list_notes_bad(self):
   141         url = reverse('notes_api:notes-list', kwargs={'session_ext_id':str(self.session2.ext_id)})
   159         url = reverse('notes:notes-list', kwargs={'session_ext_id':str(self.session2.ext_id)})
   142         logger.debug("URL: %s", url)
   160         logger.debug("URL: %s", url)
   143         self.client.login(username='test_user1', password='top_secret')
   161         self.client.login(username='test_user1', password='top_secret')
   144         response = self.client.get(url, format='json')
   162         response = self.client.get(url, format='json')
   145         logger.debug(response.json())
   163         logger.debug(response.json())
   146         self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
   164         self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)