server/python2/django/renkanmanager/tests/tests_workspace.py
changeset 588 95536fa18d0d
parent 587 fb0041aa74d3
equal deleted inserted replaced
587:fb0041aa74d3 588:95536fa18d0d
     8 User = get_user_model()
     8 User = get_user_model()
     9 
     9 
    10 class WorkspaceTests(APITestCase):
    10 class WorkspaceTests(APITestCase):
    11     
    11     
    12     def setUp(self):
    12     def setUp(self):
    13         User.objects.create_superuser('blop', 'blop@blop.com', 'blop')
    13         User.objects.create_superuser("blop", "blop@blop.com", "blop")
    14         self.user = User.objects.get(username='blop')
    14         self.user = User.objects.get(username="blop")
    15         _ = self.client.login(username='blop', password='blop')
    15         _ = self.client.login(username="blop", password="blop")
    16         User.objects.create_user('blip', 'blip@blip.com', 'blip')
    16         User.objects.create_user("blip", "blip@blip.com", "blip")
    17         self.unauthorized_user = User.objects.get(username='blip')
    17         self.unauthorized_user = User.objects.get(username="blip")
    18     
    18     
    19     def test_post_workspace(self):
    19     def test_post_workspace(self):
    20         
    20         
    21         ###################################################
    21         ###################################################
    22         # POSTing test Workspace
    22         # POSTing test Workspace
    23         ###################################################
    23         ###################################################
    24         
    24         
    25         post_url = reverse('workspace_list')
    25         post_url = reverse("workspace_list")
    26         test_title = 'bleh_title'
    26         test_title = "bleh_title"
    27         data = {'title': test_title}
    27         data = {"title": test_title}
    28         post_response = self.client.post(post_url, data, format='json')
    28         post_response = self.client.post(post_url, data, format="json")
    29         post_response_dict = json.loads(post_response.content)
    29         post_response_dict = json.loads(post_response.content.decode())
    30         self.assertEqual(post_response.status_code, status.HTTP_201_CREATED)
    30         self.assertEqual(post_response.status_code, status.HTTP_201_CREATED)
    31         
    31         
    32         # Checking data
    32         # Checking data
    33         #    in the response
    33         #    in the response
    34         self.assertEqual(post_response_dict.get('workspace_created_by'), self.user.username)
    34         self.assertEqual(post_response_dict.get("workspace_created_by"), self.user.username)
    35         self.assertEqual(post_response_dict.get('title'), test_title)
    35         self.assertEqual(post_response_dict.get("title"), test_title)
    36         #    in the database
    36         #    in the database
    37         created_workspace_guid = post_response_dict.get('workspace_guid')
    37         created_workspace_guid = post_response_dict.get("workspace_guid")
    38         created_workspace = Workspace.objects.get(workspace_guid=created_workspace_guid)
    38         created_workspace = Workspace.objects.get(workspace_guid=created_workspace_guid)
    39         self.assertEqual(created_workspace.creator.username, self.user.username)
    39         self.assertEqual(created_workspace.creator.username, self.user.username)
    40         self.assertEqual(created_workspace.title, test_title)
    40         self.assertEqual(created_workspace.title, test_title)
    41         
    41         
    42         # Checking permission
    42         # Checking permission
    43         self.assertTrue(self.user.has_perm('view_workspace', created_workspace))
    43         self.assertTrue(self.user.has_perm("view_workspace", created_workspace))
    44         
    44         
    45         ###################################################
    45         ###################################################
    46         # try POSTing with unauthorized user 
    46         # try POSTing with unauthorized user 
    47         ###################################################
    47         ###################################################
    48         
    48         
    49         _ = self.client.login(username='blip', password='blip')
    49         _ = self.client.login(username="blip", password="blip")
    50         post_url = reverse('workspace_list')
    50         post_url = reverse("workspace_list")
    51         data = {'title': 'wont_work'}
    51         data = {"title": "wont_work"}
    52         post_response = self.client.post(post_url, data, format='json')
    52         post_response = self.client.post(post_url, data, format="json")
    53         self.assertEqual(post_response.status_code, status.HTTP_403_FORBIDDEN)
    53         self.assertEqual(post_response.status_code, status.HTTP_403_FORBIDDEN)
    54         
    54         
    55      
    55      
    56     def test_get_workspace_list(self):
    56     def test_get_workspace_list(self):
    57         
    57         
    58         ###################################################
    58         ###################################################
    59         # POSTing new Workspaces
    59         # POSTing new Workspaces
    60         ###################################################
    60         ###################################################
    61         
    61         
    62         post_url = reverse('workspace_list')
    62         post_url = reverse("workspace_list")
    63         first_test_title = 'bleh_title_2'
    63         first_test_title = "bleh_title_2"
    64         second_test_title = 'bleh_title_3'
    64         second_test_title = "bleh_title_3"
    65         first_data = {'title': first_test_title}
    65         first_data = {"title": first_test_title}
    66         second_data = {'title': second_test_title}
    66         second_data = {"title": second_test_title}
    67         self.client.post(post_url, first_data, format='json')
    67         self.client.post(post_url, first_data, format="json")
    68         self.client.post(post_url, second_data, format='json')
    68         self.client.post(post_url, second_data, format="json")
    69         
    69         
    70         ###################################################
    70         ###################################################
    71         # GETting Workspaces
    71         # GETting Workspaces
    72         ###################################################
    72         ###################################################
    73         
    73         
    74         get_url = post_url
    74         get_url = post_url
    75         get_response = self.client.get(get_url, format=json)
    75         get_response = self.client.get(get_url, format=json)
    76         self.assertEqual(get_response.status_code, status.HTTP_200_OK)
    76         self.assertEqual(get_response.status_code, status.HTTP_200_OK)
    77         
    77         
    78         # Check data
    78         # Check data
    79         get_response_content = json.loads(get_response.content) # Should be a list
    79         get_response_content = json.loads(get_response.content.decode()) # Should be a list
    80         self.assertTrue(isinstance(get_response_content, list))
    80         self.assertTrue(isinstance(get_response_content, list))
    81         self.assertEqual(len(get_response_content), 2)
    81         self.assertEqual(len(get_response_content), 2)
    82     
    82     
    83     def test_get_workspace(self):
    83     def test_get_workspace(self):
    84         
    84         
    85         ###################################################
    85         ###################################################
    86         # POSTing test Workspace
    86         # POSTing test Workspace
    87         ###################################################
    87         ###################################################
    88         
    88         
    89         workspace_post_url = reverse('workspace_list')
    89         workspace_post_url = reverse("workspace_list")
    90         test_title = 'bleh_title'
    90         test_title = "bleh_title"
    91         data = {'title': test_title}
    91         data = {"title": test_title}
    92         post_response = self.client.post(workspace_post_url, data, format='json')
    92         post_response = self.client.post(workspace_post_url, data, format="json")
    93         post_response_dict = json.loads(post_response.content)
    93         post_response_dict = json.loads(post_response.content.decode())
    94         test_workspace_guid = post_response_dict.get('workspace_guid')
    94         test_workspace_guid = post_response_dict.get("workspace_guid")
    95         
    95         
    96         ###################################################
    96         ###################################################
    97         # POSTing new Renkans into test Workspace
    97         # POSTing new Renkans into test Workspace
    98         ###################################################
    98         ###################################################
    99         
    99         
   100         renkan_post_url = reverse('renkan_list_workspace', kwargs={'workspace_guid': test_workspace_guid})
   100         renkan_post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": test_workspace_guid})
   101         first_test_title = 'bleh_title'
   101         first_test_title = "bleh_title"
   102         first_test_content = json.dumps({'title': 'bleh_title', 'some_random_stuff': 'wow'})
   102         second_test_title = "bleh_title_2"
   103         second_test_title = 'bleh_title_2'
   103         first_data = {"title": first_test_title}
   104         second_test_content = json.dumps({'title': 'bleh_title_2', 'some_random_stuff': 'such'})
   104         second_data = {"title": second_test_title}
   105         first_data = {'title': first_test_title, 'content': first_test_content}
   105         self.client.post(renkan_post_url, first_data, format="json")
   106         second_data = {'title': second_test_title, 'content': second_test_content}
   106         self.client.post(renkan_post_url, second_data, format="json")
   107         self.client.post(renkan_post_url, first_data, format='json')
       
   108         self.client.post(renkan_post_url, second_data, format='json')
       
   109         
   107         
   110         ###################################################
   108         ###################################################
   111         # GETting test Workspace
   109         # GETting test Workspace
   112         ###################################################
   110         ###################################################
   113         
   111         
   114         get_url = reverse('workspace_detail', kwargs={'workspace_guid': test_workspace_guid})
   112         get_url = reverse("workspace_detail", kwargs={"workspace_guid": test_workspace_guid})
   115         get_response = self.client.get(get_url, format='json')
   113         get_response = self.client.get(get_url, format="json")
   116         self.assertEqual(get_response.status_code, status.HTTP_200_OK)
   114         self.assertEqual(get_response.status_code, status.HTTP_200_OK)
   117         
   115         
   118         # Checking GET data
   116         # Checking GET data
   119         get_response_dict = json.loads(get_response.content)
   117         get_response_dict = json.loads(get_response.content.decode())
   120         self.assertEqual(test_workspace_guid, get_response_dict.get('workspace_guid', ''))
   118         self.assertEqual(test_workspace_guid, get_response_dict.get("workspace_guid", ""))
   121         self.assertEqual(test_title, get_response_dict.get('title', ''))
   119         self.assertEqual(test_title, get_response_dict.get("title", ""))
   122         self.assertEqual(self.user.username, get_response_dict.get('workspace_created_by', ''))
   120         self.assertEqual(self.user.username, get_response_dict.get("workspace_created_by", ""))
   123         self.assertEqual(2, get_response_dict.get('renkan_count'))
   121         self.assertEqual(2, get_response_dict.get("renkan_count"))
   124         
   122         
   125         ###################################################
   123         ###################################################
   126         # GETting wrong workspace_guid
   124         # GETting wrong workspace_guid
   127         ###################################################
   125         ###################################################
   128         
   126         
   129         get_url = reverse('workspace_detail', kwargs={'workspace_guid': 'bleh-bad-workspace-id'})
   127         get_url = reverse("workspace_detail", kwargs={"workspace_guid": "bleh-bad-workspace-id"})
   130         get_response = self.client.get(get_url, format='json')
   128         get_response = self.client.get(get_url, format="json")
   131         self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND)
   129         self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND)
   132         
   130         
   133         ###################################################
   131         ###################################################
   134         # try GETting with unauthorized user 
   132         # try GETting with unauthorized user 
   135         ###################################################
   133         ###################################################
   136         
   134         
   137         _ = self.client.login(username='blip', password='blip')
   135         _ = self.client.login(username="blip", password="blip")
   138         get_url = reverse('workspace_detail', kwargs={'workspace_guid': test_workspace_guid})
   136         get_url = reverse("workspace_detail", kwargs={"workspace_guid": test_workspace_guid})
   139         get_response = self.client.get(get_url, format='json')
   137         get_response = self.client.get(get_url, format="json")
   140         self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN)
   138         self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN)
   141         
   139         
   142     def test_update_workspace(self):
   140     def test_update_workspace(self):
   143         
   141         
   144         ###################################################
   142         ###################################################
   145         # POSTing test Workspace
   143         # POSTing test Workspace
   146         ###################################################
   144         ###################################################
   147         
   145         
   148         workspace_post_url = reverse('workspace_list')
   146         workspace_post_url = reverse("workspace_list")
   149         test_title = 'bleh_title'
   147         test_title = "bleh_title"
   150         data = {'title': test_title}
   148         data = {"title": test_title}
   151         post_response = self.client.post(workspace_post_url, data, format='json')
   149         post_response = self.client.post(workspace_post_url, data, format="json")
   152         post_response_dict = json.loads(post_response.content)
   150         post_response_dict = json.loads(post_response.content.decode())
   153         test_workspace_guid = post_response_dict.get('workspace_guid')
   151         test_workspace_guid = post_response_dict.get("workspace_guid")
   154         
   152         
   155         ###################################################
   153         ###################################################
   156         # PUTting into test Workspace
   154         # PUTting into test Workspace
   157         ###################################################
   155         ###################################################
   158         
   156         
   159         put_url = reverse('workspace_detail', kwargs={'workspace_guid': test_workspace_guid})
   157         put_url = reverse("workspace_detail", kwargs={"workspace_guid": test_workspace_guid})
   160         edited_title = 'bleh_title_2'
   158         edited_title = "bleh_title_2"
   161         put_data = {'title': edited_title}
   159         put_data = {"title": edited_title}
   162         put_response = self.client.put(put_url, put_data, format='json')
   160         put_response = self.client.put(put_url, put_data, format="json")
   163         put_response_dict = json.loads(put_response.content)
   161         put_response_dict = json.loads(put_response.content.decode())
   164         self.assertEqual(put_response.status_code, status.HTTP_200_OK)
   162         self.assertEqual(put_response.status_code, status.HTTP_200_OK)
   165         
   163         
   166         # Checking data
   164         # Checking data
   167         #    in the response
   165         #    in the response
   168         self.assertEqual(put_response_dict.get('workspace_created_by'), self.user.username)
   166         self.assertEqual(put_response_dict.get("workspace_created_by"), self.user.username)
   169         self.assertEqual(put_response_dict.get('title'), edited_title)
   167         self.assertEqual(put_response_dict.get("title"), edited_title)
   170         self.assertEqual(put_response_dict.get('renkan_count'), 0)
   168         self.assertEqual(put_response_dict.get("renkan_count"), 0)
   171         #    in the database
   169         #    in the database
   172         edited_workspace_guid = put_response_dict.get('workspace_guid')
   170         edited_workspace_guid = put_response_dict.get("workspace_guid")
   173         edited_workspace = Workspace.objects.get(workspace_guid=edited_workspace_guid)
   171         edited_workspace = Workspace.objects.get(workspace_guid=edited_workspace_guid)
   174         self.assertEqual(edited_workspace.creator.username, self.user.username)
   172         self.assertEqual(edited_workspace.creator.username, self.user.username)
   175         self.assertEqual(edited_workspace.title, edited_title)
   173         self.assertEqual(edited_workspace.title, edited_title)
   176         self.assertEqual(edited_workspace.renkan_count, 0)
   174         self.assertEqual(edited_workspace.renkan_count, 0)
   177         
   175         
   178         ###################################################
   176         ###################################################
   179         # try PUTting with unauthorized user 
   177         # try PUTting with unauthorized user 
   180         ###################################################
   178         ###################################################
   181         
   179         
   182         _ = self.client.login(username='blip', password='blip')
   180         _ = self.client.login(username="blip", password="blip")
   183         put_url = reverse('workspace_detail', kwargs={'workspace_guid': test_workspace_guid})
   181         put_url = reverse("workspace_detail", kwargs={"workspace_guid": test_workspace_guid})
   184         put_data = {
   182         put_data = {
   185             'title' : 'wont_work'
   183             "title" : "wont_work"
   186         }
   184         }
   187         put_response = self.client.put(put_url, put_data, format='json')
   185         put_response = self.client.put(put_url, put_data, format="json")
   188         self.assertEqual(put_response.status_code, status.HTTP_403_FORBIDDEN)
   186         self.assertEqual(put_response.status_code, status.HTTP_403_FORBIDDEN)
   189         
   187         
   190     def test_delete_workspace(self):
   188     def test_delete_workspace(self):
   191         
   189         
   192         ###################################################
   190         ###################################################
   193         # POSTing test Workspace
   191         # POSTing test Workspace
   194         ###################################################
   192         ###################################################
   195         
   193         
   196         workspace_post_url = reverse('workspace_list')
   194         workspace_post_url = reverse("workspace_list")
   197         test_title = 'bleh_title'
   195         test_title = "bleh_title"
   198         data = {'title': test_title}
   196         data = {"title": test_title}
   199         post_response = self.client.post(workspace_post_url, data, format='json')
   197         post_response = self.client.post(workspace_post_url, data, format="json")
   200         post_response_dict = json.loads(post_response.content)
   198         post_response_dict = json.loads(post_response.content.decode())
   201         to_delete_workspace_guid = post_response_dict.get('workspace_guid')
   199         to_delete_workspace_guid = post_response_dict.get("workspace_guid")
   202         
   200         
   203         ###################################################
   201         ###################################################
   204         # POSTing new Renkan into test Workspace
   202         # POSTing new Renkan into test Workspace
   205         ###################################################
   203         ###################################################
   206         
   204         
   207         renkan_post_url = reverse('renkan_list_workspace', kwargs={'workspace_guid': to_delete_workspace_guid})
   205         renkan_post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": to_delete_workspace_guid})
   208         renkan_test_title = 'bleh_title'
   206         renkan_test_title = "bleh_title"
   209         renkan_test_content = json.dumps({'title': 'bleh_title', 'some_random_stuff': 'wow'})
   207         renkan_test_data = {"title": renkan_test_title}
   210         renkan_test_data = {'title': renkan_test_title, 'content': renkan_test_content}
   208         post_response = self.client.post(renkan_post_url, renkan_test_data, format="json")
   211         post_response = self.client.post(renkan_post_url, renkan_test_data, format='json')
   209         to_delete_renkan_guid = json.loads(post_response.content.decode()).get("renkan_guid", "")
   212         to_delete_renkan_guid = json.loads(post_response.content).get('renkan_guid', '')
       
   213         
   210         
   214         ###################################################
   211         ###################################################
   215         # Try to DELETE test Workspace (should fail, it still contains a Renkan)
   212         # Try to DELETE test Workspace (should fail, it still contains a Renkan)
   216         ###################################################
   213         ###################################################
   217         
   214         
   218         delete_url = reverse('workspace_detail', kwargs={'workspace_guid':to_delete_workspace_guid})
   215         delete_url = reverse("workspace_detail", kwargs={"workspace_guid":to_delete_workspace_guid})
   219         delete_response = self.client.delete(delete_url, {}, format='json')
   216         delete_response = self.client.delete(delete_url, {}, format="json")
   220         self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST)
   217         self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST)
   221         
   218         
   222         ###################################################
   219         ###################################################
   223         # DELETE posted Renkan
   220         # DELETE posted Renkan
   224         ###################################################
   221         ###################################################
   225         
   222         
   226         delete_renkan_url = reverse('renkan_detail', kwargs={'renkan_guid':to_delete_renkan_guid})
   223         delete_renkan_url = reverse("renkan_detail", kwargs={"renkan_guid":to_delete_renkan_guid})
   227         delete_renkan_response = self.client.delete(delete_renkan_url, format='json')
   224         delete_renkan_response = self.client.delete(delete_renkan_url, format="json")
   228         self.assertEqual(delete_renkan_response.status_code, status.HTTP_204_NO_CONTENT)
   225         self.assertEqual(delete_renkan_response.status_code, status.HTTP_204_NO_CONTENT)
   229         
   226         
   230         ###################################################
   227         ###################################################
   231         # try to DELETE with unauthorized user 
   228         # try to DELETE with unauthorized user 
   232         ###################################################
   229         ###################################################
   233         
   230         
   234         _ = self.client.login(username='blip', password='blip')
   231         _ = self.client.login(username="blip", password="blip")
   235         delete_url = reverse('workspace_detail', kwargs={'workspace_guid':to_delete_workspace_guid})
   232         delete_url = reverse("workspace_detail", kwargs={"workspace_guid":to_delete_workspace_guid})
   236         delete_response = self.client.delete(delete_url, {}, format='json')
   233         delete_response = self.client.delete(delete_url, {}, format="json")
   237         self.assertEqual(delete_response.status_code, status.HTTP_403_FORBIDDEN)
   234         self.assertEqual(delete_response.status_code, status.HTTP_403_FORBIDDEN)
   238         
   235         
   239         # Restoring rightful user
   236         # Restoring rightful user
   240         _ = self.client.login(username='blop', password='blop')
   237         _ = self.client.login(username="blop", password="blop")
   241         
   238         
   242         ###################################################
   239         ###################################################
   243         # DELETE test Workspace 
   240         # DELETE test Workspace 
   244         ###################################################
   241         ###################################################
   245         
   242         
   246         delete_url = reverse('workspace_detail', kwargs={'workspace_guid':to_delete_workspace_guid})
   243         delete_url = reverse("workspace_detail", kwargs={"workspace_guid":to_delete_workspace_guid})
   247         delete_response = self.client.delete(delete_url, {}, format='json')
   244         delete_response = self.client.delete(delete_url, {}, format="json")
   248         self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT)
   245         self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT)
   249         
   246         
   250         ###################################################
   247         ###################################################
   251         # Try to DELETE workspace with wrong guid
   248         # Try to DELETE workspace with wrong guid
   252         ###################################################
   249         ###################################################
   253         
   250         
   254         delete_url = reverse('workspace_detail', kwargs={'workspace_guid': 'bad-workspace-guid'})
   251         delete_url = reverse("workspace_detail", kwargs={"workspace_guid": "bad-workspace-guid"})
   255         delete_response = self.client.delete(delete_url, format=json)
   252         delete_response = self.client.delete(delete_url, format=json)
   256         self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND)
   253         self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND)
   257         
   254