server/python/django2/renkanmanager/tests/v1_0/tests_revision.py
changeset 613 e00a24b711a0
parent 610 b9edc1c1538a
child 615 f3875fbe206a
equal deleted inserted replaced
612:aa4987fede52 613:e00a24b711a0
     8 
     8 
     9 
     9 
    10 User = get_user_model()
    10 User = get_user_model()
    11 
    11 
    12 class RevisionTests(APITestCase):
    12 class RevisionTests(APITestCase):
    13     
    13 
    14     def setUp(self):
    14     def setUp(self):
    15         User.objects.create_superuser("blop", "blop@blop.com", "blop")
    15         User.objects.create_superuser("blop", "blop@blop.com", "blop")
    16         self.user = User.objects.get_by_natural_key(username="blop")
    16         self.user = User.objects.get_by_natural_key(username="blop")
    17         _ = self.client.login(username="blop", password="blop")
    17         _ = self.client.login(username="blop", password="blop")
    18         User.objects.create_user("blip", "blip@blip.com", "blip")
    18 
    19         self.unauthorized_user = User.objects.get_by_natural_key(username="blip")
       
    20         
       
    21         ###################################################
    19         ###################################################
    22         # POSTing new Renkan
    20         # POSTing new Renkan
    23         ###################################################
    21         ###################################################
    24         
    22 
    25         post_url = reverse("v1.0:renkan_list")
    23         post_url = reverse("v1.0:renkan_list")
    26         self.test_title = "test_title_1"
    24         self.test_title = "test_title_1"
    27         test_content_dict_init = {
    25         test_content_dict_init = {
    28             "id": "",
    26             "id": "",
    29             "title": "test_title_1",
    27             "title": "test_title_1",
    42         post_response_dict = json.loads(post_response.content.decode())
    40         post_response_dict = json.loads(post_response.content.decode())
    43         self.test_content_dict = json.loads(post_response_dict.get("content", "{}"))
    41         self.test_content_dict = json.loads(post_response_dict.get("content", "{}"))
    44         self.post_response_content_dict = json.loads(post_response_dict.get("content", "{}"))
    42         self.post_response_content_dict = json.loads(post_response_dict.get("content", "{}"))
    45         self.test_renkan_guid = post_response_dict.get("id", "")
    43         self.test_renkan_guid = post_response_dict.get("id", "")
    46         self.test_initial_revision_guid = post_response_dict.get("current_revision_id", "")
    44         self.test_initial_revision_guid = post_response_dict.get("current_revision_id", "")
    47     
    45 
    48     def test_get_revision(self):
    46     def test_get_revision(self):
    49         
    47 
    50         ###################################################
    48         ###################################################
    51         # GETting revision
    49         # GETting revision
    52         ###################################################
    50         ###################################################
    53         
    51 
    54         get_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
    52         get_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
    55         get_response = self.client.get(get_url, {}, format="json")
    53         get_response = self.client.get(get_url, {}, format="json")
    56         self.assertEqual(get_response.status_code, status.HTTP_200_OK)
    54         self.assertEqual(get_response.status_code, status.HTTP_200_OK)
    57         
    55 
    58         # Checking data
    56         # Checking data
    59         get_response_dict = json.loads(get_response.content.decode()) 
    57         get_response_dict = json.loads(get_response.content.decode())
    60         self.assertEqual(get_response_dict.get("id", ""), self.test_initial_revision_guid)
    58         self.assertEqual(get_response_dict.get("id", ""), self.test_initial_revision_guid)
    61         self.assertEqual(get_response_dict.get("parent_renkan_id", ""), self.test_renkan_guid)
    59         self.assertEqual(get_response_dict.get("parent_renkan_id", ""), self.test_renkan_guid)
    62         self.assertEqual(get_response_dict.get("revision_created_by", ""), getattr(self.user, User.USERNAME_FIELD))
    60         self.assertEqual(get_response_dict.get("revision_created_by", ""), getattr(self.user, User.USERNAME_FIELD))
    63         self.assertEqual(get_response_dict.get("revision_last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD))
    61         self.assertEqual(get_response_dict.get("revision_last_updated_by", ""), getattr(self.user, User.USERNAME_FIELD))
    64         self.assertEqual(get_response_dict.get("title", ""), self.test_data.get("title", ""))
    62         self.assertEqual(get_response_dict.get("title", ""), self.test_data.get("title", ""))
    65         
    63 
    66         ###################################################
    64         ###################################################
    67         # GETting with wrong renkan guid
    65         # GETting with wrong renkan guid
    68         ###################################################
    66         ###################################################
    69         
    67 
    70         get_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : "bad-renkan-guid", "revision_guid": self.test_initial_revision_guid})
    68         get_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : "bad-renkan-guid", "revision_guid": self.test_initial_revision_guid})
    71         get_response = self.client.get(get_url, {}, format="json")
    69         get_response = self.client.get(get_url, {}, format="json")
    72         self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND)
    70         self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND)
    73         
    71 
    74         ###################################################
    72         ###################################################
    75         # GETting with wrong revision guid
    73         # GETting with wrong revision guid
    76         ###################################################
    74         ###################################################
    77         
    75 
    78         get_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": "bad-revision-guid"})
    76         get_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": "bad-revision-guid"})
    79         get_response = self.client.get(get_url, {}, format="json")
    77         get_response = self.client.get(get_url, {}, format="json")
    80         self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND)
    78         self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND)
    81         
    79 
    82         ###################################################
       
    83         # try GETting with unauthorized user 
       
    84         ###################################################
       
    85         
       
    86         _ = self.client.login(username="blip", password="blip")
       
    87         get_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
       
    88         get_response = self.client.get(get_url, {}, format="json")
       
    89         self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN)
       
    90         
       
    91     def test_get_revision_list(self):
    80     def test_get_revision_list(self):
    92         
    81 
    93         ###################################################
    82         ###################################################
    94         # PUTting another revision in test renkan
    83         # PUTting another revision in test renkan
    95         ###################################################
    84         ###################################################
    96         
    85 
    97         put_url = reverse("v1.0:renkan_detail", kwargs={"renkan_guid" : self.test_renkan_guid})
    86         put_url = reverse("v1.0:renkan_detail", kwargs={"renkan_guid" : self.test_renkan_guid})
    98         put_title = "edited_title"
    87         put_title = "edited_title"
    99         put_data = {
    88         put_data = {
   100             "title" : put_title,
    89             "title" : put_title,
   101             "validation_timestamp": self.post_response_content_dict.get("updated", ""),
    90             "validation_timestamp": self.post_response_content_dict.get("updated", ""),
   102             "create_new_revision": True
    91             "create_new_revision": True
   103         }
    92         }
   104         put_response = self.client.put(put_url, put_data, format="json")
    93         put_response = self.client.put(put_url, put_data, format="json")
   105         
    94 
   106         ###################################################
    95         ###################################################
   107         # GETting revision lists
    96         # GETting revision lists
   108         ###################################################
    97         ###################################################
   109         
    98 
   110         get_url = reverse("v1.0:revision_list", kwargs={"renkan_guid" : self.test_renkan_guid})
    99         get_url = reverse("v1.0:revision_list", kwargs={"renkan_guid" : self.test_renkan_guid})
   111         get_response = self.client.get(get_url, {}, format="json")
   100         get_response = self.client.get(get_url, {}, format="json")
   112         self.assertEqual(get_response.status_code, status.HTTP_200_OK)
   101         self.assertEqual(get_response.status_code, status.HTTP_200_OK)
   113         
   102 
   114         # Checking data
   103         # Checking data
   115         get_response_content = json.loads(get_response.content.decode()) # Should be a list
   104         get_response_content = json.loads(get_response.content.decode()) # Should be a list
   116         self.assertTrue(isinstance(get_response_content, list))
   105         self.assertTrue(isinstance(get_response_content, list))
   117         self.assertEqual(len(get_response_content), 2)
   106         self.assertEqual(len(get_response_content), 2)
   118         
   107 
   119         ###################################################
   108 
   120         # GETting with wrong renkan guid
       
   121         ###################################################
       
   122         
       
   123         _ = self.client.login(username="blip", password="blip")
       
   124         get_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
       
   125         get_response = self.client.get(get_url, {}, format="json")
       
   126         self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN)
       
   127     
       
   128     def test_delete_revision(self):
   109     def test_delete_revision(self):
   129         
   110 
   130         ###################################################
   111         ###################################################
   131         # Try to DELETE the initial revision (last revision, should 400)
   112         # Try to DELETE the initial revision (last revision, should 400)
   132         ###################################################
   113         ###################################################
   133         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
   114         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
   134         delete_response = self.client.delete(delete_url, {}, format="json")
   115         delete_response = self.client.delete(delete_url, {}, format="json")
   135         self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST)
   116         self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST)
   136         
   117 
   137         ###################################################
   118         ###################################################
   138         # PUTting another revision in test renkan
   119         # PUTting another revision in test renkan
   139         ###################################################
   120         ###################################################
   140         
   121 
   141         put_url = reverse("v1.0:renkan_detail", kwargs={"renkan_guid" : self.test_renkan_guid})
   122         put_url = reverse("v1.0:renkan_detail", kwargs={"renkan_guid" : self.test_renkan_guid})
   142         put_title = "edited_title"
   123         put_title = "edited_title"
   143         put_data = {
   124         put_data = {
   144             "title" : put_title,
   125             "title" : put_title,
   145             "validation_timestamp": self.post_response_content_dict.get("updated", ""),
   126             "validation_timestamp": self.post_response_content_dict.get("updated", ""),
   146             "create_new_revision": True
   127             "create_new_revision": True
   147         }
   128         }
   148         put_response = self.client.put(put_url, put_data, format="json")
   129         put_response = self.client.put(put_url, put_data, format="json")
   149         put_response_dict = json.loads(put_response.content.decode())
   130         put_response_dict = json.loads(put_response.content.decode())
   150         added_revision_guid = put_response_dict.get("current_revision_id", "")
   131         added_revision_guid = put_response_dict.get("current_revision_id", "")
   151         
   132 
   152         ###################################################
   133         ###################################################
   153         # Try to DELETE the added revision (current revision, should 400)
   134         # Try to DELETE the added revision (current revision, should 400)
   154         ###################################################
   135         ###################################################
   155         
   136 
   156         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": added_revision_guid})
   137         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": added_revision_guid})
   157         delete_response = self.client.delete(delete_url, {}, format="json")
   138         delete_response = self.client.delete(delete_url, {}, format="json")
   158         self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST)
   139         self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST)
   159         
   140 
   160         
       
   161         ###################################################
       
   162         # try to DELETE with unauthorized user 
       
   163         ###################################################
       
   164         
       
   165         _ = self.client.login(username="blip", password="blip")
       
   166         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
       
   167         delete_response = self.client.delete(delete_url, {}, format="json")
       
   168         self.assertEqual(delete_response.status_code, status.HTTP_403_FORBIDDEN)
       
   169         
       
   170         # Restoring rightful user
   141         # Restoring rightful user
   171         _ = self.client.login(username="blop", password="blop")
   142         _ = self.client.login(username="blop", password="blop")
   172         
   143 
   173         ###################################################
   144         ###################################################
   174         # Try to DELETE the initial revision (should 204 now that we added a revision)
   145         # Try to DELETE the initial revision (should 204 now that we added a revision)
   175         ###################################################
   146         ###################################################
   176         
   147 
   177         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
   148         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid})
   178         delete_response = self.client.delete(delete_url, {}, format="json")
   149         delete_response = self.client.delete(delete_url, {}, format="json")
   179         self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT)
   150         self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT)
   180         
   151 
   181         ###################################################
   152         ###################################################
   182         # Try to DELETE with wrong renkan guid
   153         # Try to DELETE with wrong renkan guid
   183         ###################################################
   154         ###################################################
   184         
   155 
   185         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : "bad-renkan-guid", "revision_guid": self.test_initial_revision_guid})
   156         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : "bad-renkan-guid", "revision_guid": self.test_initial_revision_guid})
   186         delete_response = self.client.delete(delete_url, {}, format="json")
   157         delete_response = self.client.delete(delete_url, {}, format="json")
   187         self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND)
   158         self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND)
   188         
   159 
   189         ###################################################
   160         ###################################################
   190         # Try to DELETE with wrong revision guid
   161         # Try to DELETE with wrong revision guid
   191         ###################################################
   162         ###################################################
   192         
   163 
   193         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": "bad-revision-guid"})
   164         delete_url = reverse("v1.0:revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": "bad-revision-guid"})
   194         delete_response = self.client.delete(delete_url, {}, format="json")
   165         delete_response = self.client.delete(delete_url, {}, format="json")
   195         self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND)
   166         self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND)