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