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(username='blop') |
16 self.user = User.objects.get(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 User.objects.create_user("blip", "blip@blip.com", "blip") |
19 self.unauthorized_user = User.objects.get(username='blip') |
19 self.unauthorized_user = User.objects.get(username="blip") |
20 |
20 |
21 ################################################### |
21 ################################################### |
22 # POSTing new Renkan |
22 # POSTing new Renkan |
23 ################################################### |
23 ################################################### |
24 |
24 |
25 post_url = reverse('renkan_list') |
25 post_url = reverse("renkan_list") |
26 self.test_data = {'title': 'test_title', 'content': json.dumps({'mock_data': 'wow'})} |
26 self.test_title = "test_title_1" |
27 post_response = self.client.post(post_url, self.test_data, format='json') |
27 self.test_content = json.dumps({ |
28 post_response_dict = json.loads(post_response.content) |
28 "id": "", |
29 self.test_renkan_guid = post_response_dict.get('renkan_guid', '') |
29 "title": "test_title_1", |
30 self.test_initial_revision_guid = post_response_dict.get('current_revision_guid', '') |
30 "description": "test_description_1", |
|
31 "created": "", |
|
32 "updated": "", |
|
33 "edges": [], |
|
34 "nodes": [], |
|
35 "users": [], |
|
36 "space_id": "", |
|
37 "views": [] |
|
38 }) |
|
39 self.test_data = {"title": self.test_title, "content": self.test_content} |
|
40 post_response = self.client.post(post_url, self.test_data, format="json") |
|
41 post_response_dict = json.loads(post_response.content.decode()) |
|
42 self.test_renkan_guid = post_response_dict.get("renkan_guid", "") |
|
43 self.test_initial_revision_guid = post_response_dict.get("current_revision_guid", "") |
31 |
44 |
32 def test_get_revision(self): |
45 def test_get_revision(self): |
33 |
46 |
34 ################################################### |
47 ################################################### |
35 # GETting revision |
48 # GETting revision |
36 ################################################### |
49 ################################################### |
37 |
50 |
38 get_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': self.test_initial_revision_guid}) |
51 get_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid}) |
39 get_response = self.client.get(get_url, {}, format='json') |
52 get_response = self.client.get(get_url, {}, format="json") |
40 self.assertEqual(get_response.status_code, status.HTTP_200_OK) |
53 self.assertEqual(get_response.status_code, status.HTTP_200_OK) |
41 |
54 |
42 # Checking data |
55 # Checking data |
43 get_response_dict = json.loads(get_response.content) |
56 get_response_dict = json.loads(get_response.content.decode()) |
44 self.assertEqual(get_response_dict.get('revision_guid', ''), self.test_initial_revision_guid) |
57 self.assertEqual(get_response_dict.get("revision_guid", ""), self.test_initial_revision_guid) |
45 self.assertEqual(get_response_dict.get('parent_renkan_guid', ''), self.test_renkan_guid) |
58 self.assertEqual(get_response_dict.get("parent_renkan_guid", ""), self.test_renkan_guid) |
46 self.assertEqual(get_response_dict.get('revision_created_by', ''), self.user.username) |
59 self.assertEqual(get_response_dict.get("revision_created_by", ""), self.user.username) |
47 self.assertEqual(get_response_dict.get('revision_last_updated_by', ''), self.user.username) |
60 self.assertEqual(get_response_dict.get("revision_last_updated_by", ""), self.user.username) |
48 self.assertEqual(get_response_dict.get('title', ''), self.test_data.get('title', '')) |
61 self.assertEqual(get_response_dict.get("title", ""), self.test_data.get("title", "")) |
49 self.assertEqual(get_response_dict.get('content', ''), self.test_data.get('content', '')) |
62 self.assertEqual(get_response_dict.get("content", ""), self.test_data.get("content", "")) |
50 |
63 |
51 ################################################### |
64 ################################################### |
52 # GETting with wrong renkan guid |
65 # GETting with wrong renkan guid |
53 ################################################### |
66 ################################################### |
54 |
67 |
55 get_url = reverse('revision_detail', kwargs={'renkan_guid' : 'bad-renkan-guid', 'revision_guid': self.test_initial_revision_guid}) |
68 get_url = reverse("revision_detail", kwargs={"renkan_guid" : "bad-renkan-guid", "revision_guid": self.test_initial_revision_guid}) |
56 get_response = self.client.get(get_url, {}, format='json') |
69 get_response = self.client.get(get_url, {}, format="json") |
57 self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) |
70 self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) |
58 |
71 |
59 ################################################### |
72 ################################################### |
60 # GETting with wrong revision guid |
73 # GETting with wrong revision guid |
61 ################################################### |
74 ################################################### |
62 |
75 |
63 get_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': 'bad-revision-guid'}) |
76 get_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": "bad-revision-guid"}) |
64 get_response = self.client.get(get_url, {}, format='json') |
77 get_response = self.client.get(get_url, {}, format="json") |
65 self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) |
78 self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) |
66 |
79 |
67 ################################################### |
80 ################################################### |
68 # try GETting with unauthorized user |
81 # try GETting with unauthorized user |
69 ################################################### |
82 ################################################### |
70 |
83 |
71 _ = self.client.login(username='blip', password='blip') |
84 _ = self.client.login(username="blip", password="blip") |
72 get_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': self.test_initial_revision_guid}) |
85 get_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid}) |
73 get_response = self.client.get(get_url, {}, format='json') |
86 get_response = self.client.get(get_url, {}, format="json") |
74 self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN) |
87 self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN) |
75 |
88 |
76 def test_get_revision_list(self): |
89 def test_get_revision_list(self): |
77 |
90 |
78 ################################################### |
91 ################################################### |
79 # PUTting another revision in test renkan |
92 # PUTting another revision in test renkan |
80 ################################################### |
93 ################################################### |
81 |
94 |
82 put_url = reverse('renkan_detail', kwargs={'renkan_guid' : self.test_renkan_guid}) |
95 put_url = reverse("renkan_detail", kwargs={"renkan_guid" : self.test_renkan_guid}) |
83 put_title = 'edited_title' |
96 put_title = "edited_title" |
84 put_content = json.dumps({"title": "edited_title", "nodes": 1}) |
|
85 put_data = { |
97 put_data = { |
86 'title' : put_title, |
98 "title" : put_title, |
87 'content' : put_content, |
99 "create_new_revision": True |
88 'create_new_revision': True |
|
89 } |
100 } |
90 put_response = self.client.put(put_url, put_data, format='json') |
101 put_response = self.client.put(put_url, put_data, format="json") |
91 |
102 |
92 ################################################### |
103 ################################################### |
93 # GETting revision lists |
104 # GETting revision lists |
94 ################################################### |
105 ################################################### |
95 |
106 |
96 get_url = reverse('revision_list', kwargs={'renkan_guid' : self.test_renkan_guid}) |
107 get_url = reverse("revision_list", kwargs={"renkan_guid" : self.test_renkan_guid}) |
97 get_response = self.client.get(get_url, {}, format='json') |
108 get_response = self.client.get(get_url, {}, format="json") |
98 self.assertEqual(get_response.status_code, status.HTTP_200_OK) |
109 self.assertEqual(get_response.status_code, status.HTTP_200_OK) |
99 |
110 |
100 # Checking data |
111 # Checking data |
101 get_response_content = json.loads(get_response.content) # Should be a list |
112 get_response_content = json.loads(get_response.content.decode()) # Should be a list |
102 self.assertTrue(isinstance(get_response_content, list)) |
113 self.assertTrue(isinstance(get_response_content, list)) |
103 self.assertEqual(len(get_response_content), 2) |
114 self.assertEqual(len(get_response_content), 2) |
104 |
115 |
105 ################################################### |
116 ################################################### |
106 # GETting with wrong renkan guid |
117 # GETting with wrong renkan guid |
107 ################################################### |
118 ################################################### |
108 |
119 |
109 _ = self.client.login(username='blip', password='blip') |
120 _ = self.client.login(username="blip", password="blip") |
110 get_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': self.test_initial_revision_guid}) |
121 get_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid}) |
111 get_response = self.client.get(get_url, {}, format='json') |
122 get_response = self.client.get(get_url, {}, format="json") |
112 self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN) |
123 self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN) |
113 |
124 |
114 def test_delete_revision(self): |
125 def test_delete_revision(self): |
115 |
126 |
116 ################################################### |
127 ################################################### |
117 # Try to DELETE the initial revision (last revision, should 400) |
128 # Try to DELETE the initial revision (last revision, should 400) |
118 ################################################### |
129 ################################################### |
119 delete_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': self.test_initial_revision_guid}) |
130 delete_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid}) |
120 delete_response = self.client.delete(delete_url, {}, format='json') |
131 delete_response = self.client.delete(delete_url, {}, format="json") |
121 self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST) |
132 self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST) |
122 |
133 |
123 ################################################### |
134 ################################################### |
124 # PUTting another revision in test renkan |
135 # PUTting another revision in test renkan |
125 ################################################### |
136 ################################################### |
126 |
137 |
127 put_url = reverse('renkan_detail', kwargs={'renkan_guid' : self.test_renkan_guid}) |
138 put_url = reverse("renkan_detail", kwargs={"renkan_guid" : self.test_renkan_guid}) |
128 put_title = 'edited_title' |
139 put_title = "edited_title" |
129 put_content = json.dumps({"title": "edited_title", "nodes": 1}) |
|
130 put_data = { |
140 put_data = { |
131 'title' : put_title, |
141 "title" : put_title, |
132 'content' : put_content, |
142 "create_new_revision": True |
133 'create_new_revision': True |
|
134 } |
143 } |
135 put_response = self.client.put(put_url, put_data, format='json') |
144 put_response = self.client.put(put_url, put_data, format="json") |
136 put_response_dict = json.loads(put_response.content) |
145 put_response_dict = json.loads(put_response.content.decode()) |
137 added_revision_guid = put_response_dict.get('current_revision_guid', '') |
146 added_revision_guid = put_response_dict.get("current_revision_guid", "") |
138 |
147 |
139 ################################################### |
148 ################################################### |
140 # Try to DELETE the added revision (current revision, should 400) |
149 # Try to DELETE the added revision (current revision, should 400) |
141 ################################################### |
150 ################################################### |
142 |
151 |
143 delete_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': added_revision_guid}) |
152 delete_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": added_revision_guid}) |
144 delete_response = self.client.delete(delete_url, {}, format='json') |
153 delete_response = self.client.delete(delete_url, {}, format="json") |
145 self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST) |
154 self.assertEqual(delete_response.status_code, status.HTTP_400_BAD_REQUEST) |
146 |
155 |
147 |
156 |
148 ################################################### |
157 ################################################### |
149 # try to DELETE with unauthorized user |
158 # try to DELETE with unauthorized user |
150 ################################################### |
159 ################################################### |
151 |
160 |
152 _ = self.client.login(username='blip', password='blip') |
161 _ = self.client.login(username="blip", password="blip") |
153 delete_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': self.test_initial_revision_guid}) |
162 delete_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid}) |
154 delete_response = self.client.delete(delete_url, {}, format='json') |
163 delete_response = self.client.delete(delete_url, {}, format="json") |
155 self.assertEqual(delete_response.status_code, status.HTTP_403_FORBIDDEN) |
164 self.assertEqual(delete_response.status_code, status.HTTP_403_FORBIDDEN) |
156 |
165 |
157 # Restoring rightful user |
166 # Restoring rightful user |
158 _ = self.client.login(username='blop', password='blop') |
167 _ = self.client.login(username="blop", password="blop") |
159 |
168 |
160 ################################################### |
169 ################################################### |
161 # Try to DELETE the initial revision (should 204 now that we added a revision) |
170 # Try to DELETE the initial revision (should 204 now that we added a revision) |
162 ################################################### |
171 ################################################### |
163 |
172 |
164 delete_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': self.test_initial_revision_guid}) |
173 delete_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": self.test_initial_revision_guid}) |
165 delete_response = self.client.delete(delete_url, {}, format='json') |
174 delete_response = self.client.delete(delete_url, {}, format="json") |
166 self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT) |
175 self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT) |
167 |
176 |
168 ################################################### |
177 ################################################### |
169 # Try to DELETE with wrong renkan guid |
178 # Try to DELETE with wrong renkan guid |
170 ################################################### |
179 ################################################### |
171 |
180 |
172 delete_url = reverse('revision_detail', kwargs={'renkan_guid' : 'bad-renkan-guid', 'revision_guid': self.test_initial_revision_guid}) |
181 delete_url = reverse("revision_detail", kwargs={"renkan_guid" : "bad-renkan-guid", "revision_guid": self.test_initial_revision_guid}) |
173 delete_response = self.client.delete(delete_url, {}, format='json') |
182 delete_response = self.client.delete(delete_url, {}, format="json") |
174 self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND) |
183 self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND) |
175 |
184 |
176 ################################################### |
185 ################################################### |
177 # Try to DELETE with wrong revision guid |
186 # Try to DELETE with wrong revision guid |
178 ################################################### |
187 ################################################### |
179 |
188 |
180 delete_url = reverse('revision_detail', kwargs={'renkan_guid' : self.test_renkan_guid, 'revision_guid': 'bad-revision-guid'}) |
189 delete_url = reverse("revision_detail", kwargs={"renkan_guid" : self.test_renkan_guid, "revision_guid": "bad-revision-guid"}) |
181 delete_response = self.client.delete(delete_url, {}, format='json') |
190 delete_response = self.client.delete(delete_url, {}, format="json") |
182 self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND) |
191 self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND) |