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) |