diff -r fb0041aa74d3 -r 95536fa18d0d server/python2/django/renkanmanager/tests/tests_renkan.py --- a/server/python2/django/renkanmanager/tests/tests_renkan.py Mon Jan 11 18:24:14 2016 +0100 +++ b/server/python2/django/renkanmanager/tests/tests_renkan.py Tue Jan 26 17:18:04 2016 +0100 @@ -12,18 +12,57 @@ class RenkanTests(APITestCase): def setUp(self): - User.objects.create_superuser('blop', 'blop@blop.com', 'blop') - self.user = User.objects.get(username='blop') - _ = self.client.login(username='blop', password='blop') - User.objects.create_user('blip', 'blip@blip.com', 'blip') - self.unauthorized_user = User.objects.get(username='blip') + User.objects.create_superuser("blop", "blop@blop.com", "blop") + self.user = User.objects.get(username="blop") + _ = self.client.login(username="blop", password="blop") + User.objects.create_user("blip", "blip@blip.com", "blip") + self.unauthorized_user = User.objects.get(username="blip") # POSTing test workspace - post_url = reverse('workspace_list') - test_title = 'bleh_title' - data = {'title': test_title} - post_response = self.client.post(post_url, data, format='json') - self.test_workspace_guid = json.loads(post_response.content).get('workspace_guid') + post_url = reverse("workspace_list") + test_title = "bleh_title" + data = {"title": test_title} + post_response = self.client.post(post_url, data, format="json") + self.test_workspace_guid = json.loads(post_response.content.decode()).get("workspace_guid") + self.first_test_title = "test_title_1" + self.first_test_content = json.dumps({ + "id": "", + "title": "test_title_1", + "description": "test_description_1", + "created": "", + "updated": "", + "edges": [], + "nodes": [], + "users": [], + "space_id": "", + "views": [] + }) + self.second_test_title = "test_title_1" + self.second_test_content = json.dumps({ + "id": "", + "title": "test_title_2", + "description": "test_description_2", + "created": "", + "updated": "", + "edges": [], + "nodes": [], + "users": [], + "space_id": "", + "views": [] + }) + self.third_test_title = "test_title_1" + self.third_test_content = json.dumps({ + "id": "", + "title": "test_title_3", + "description": "test_description_3", + "created": "", + "updated": "", + "edges": [], + "nodes": [], + "users": [], + "space_id": "", + "views": [] + }) def test_create_renkan(self): @@ -31,101 +70,104 @@ # POSTing new Renkan ################################################### - post_url = reverse('renkan_list') - test_title = 'bleh_title' - test_content = json.dumps({'title': 'bleh_title', 'some_random_stuff': 'wow'}) - data = {'title': test_title, 'content': test_content} + post_url = reverse("renkan_list") + data = {"title": self.first_test_title, "content": self.first_test_content} - post_response = self.client.post(post_url, data, format='json') + post_response = self.client.post(post_url, data, format="json") self.assertEqual(post_response.status_code, status.HTTP_201_CREATED) self.assertEqual(Renkan.objects.count(), 1) self.assertEqual(Revision.objects.count(), 1) # Checking POSTed Renkan data - post_response_dict = json.loads(post_response.content) - new_renkan_guid = post_response_dict.get('renkan_guid', '') + post_response_dict = json.loads(post_response.content.decode()) + new_renkan_guid = post_response_dict.get("renkan_guid", "") new_renkan = Renkan.objects.get(renkan_guid=new_renkan_guid) # GUIDs and username - self.assertEqual(self.user.username, post_response_dict.get('project_created_by', '')) - self.assertEqual(self.user.username, post_response_dict.get('last_updated_by', '')) + self.assertEqual(self.user.username, post_response_dict.get("project_created_by", "")) + self.assertEqual(self.user.username, post_response_dict.get("last_updated_by", "")) self.assertEqual(self.user.username, new_renkan.creator.username) # Content and title extracted from revision - self.assertEqual(new_renkan.title, test_title) - self.assertEqual(new_renkan.content, test_content) + self.assertEqual(new_renkan.title, self.first_test_title) + self.assertEqual(new_renkan.content, self.first_test_content) # Revision count self.assertEqual(new_renkan.revision_count, 1) - self.assertEqual(post_response_dict.get('revision_count', ''), 1) + self.assertEqual(post_response_dict.get("revision_count", ""), 1) # Checking POSTed Renkan revision data - new_renkan_revision_guid = post_response_dict.get('current_revision_guid', '') + new_renkan_revision_guid = post_response_dict.get("current_revision_guid", "") new_renkan_revision = Revision.objects.get(revision_guid = new_renkan_revision_guid) # GUIDs and username self.assertEqual(self.user.username, new_renkan_revision.creator.username) self.assertEqual(self.user.username, new_renkan_revision.last_updated_by.username) # Title and content # in the response - self.assertEqual(post_response_dict.get('title', ''), test_title) - self.assertEqual(post_response_dict.get('content', ''), test_content) + self.assertEqual(post_response_dict.get("title", ""), self.first_test_title) + self.assertEqual(post_response_dict.get("content", ""), self.first_test_content) # in the database - self.assertEqual(new_renkan_revision.title, test_title) - self.assertEqual(new_renkan_revision.content, test_content) + self.assertEqual(new_renkan_revision.title, self.first_test_title) + self.assertEqual(new_renkan_revision.content, self.first_test_content) # Checking permission - self.assertTrue(self.user.has_perm('view_renkan', new_renkan)) + self.assertTrue(self.user.has_perm("view_renkan", new_renkan)) ################################################### # POSTing new Renkan into workspace ################################################### - post_url = reverse('renkan_list_workspace', kwargs={'workspace_guid': self.test_workspace_guid}) - test_title = 'bleh_title_2' - test_content = json.dumps({'title': 'bleh_title_2', 'some_random_stuff': 'wow_2'}) - data = {'title': test_title, 'content': test_content} + post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": self.test_workspace_guid}) + data = {"title": self.second_test_title, "content": self.second_test_content} - post_response = self.client.post(post_url, data, format='json') + post_response = self.client.post(post_url, data, format="json") self.assertEqual(post_response.status_code, status.HTTP_201_CREATED) self.assertEqual(Renkan.objects.count(), 2) self.assertEqual(Revision.objects.count(), 2) # Checking POSTed Renkan data - post_response_dict = json.loads(post_response.content) - new_renkan_guid = post_response_dict.get('renkan_guid', '') + post_response_dict = json.loads(post_response.content.decode()) + new_renkan_guid = post_response_dict.get("renkan_guid", "") new_renkan = Renkan.objects.get(renkan_guid=new_renkan_guid) # GUIDs and username - self.assertEqual(self.test_workspace_guid, post_response_dict.get('workspace_guid', '')) + self.assertEqual(self.test_workspace_guid, post_response_dict.get("workspace_guid", "")) self.assertEqual(self.test_workspace_guid, new_renkan.workspace_guid) - self.assertEqual(self.user.username, post_response_dict.get('project_created_by', '')) - self.assertEqual(self.user.username, post_response_dict.get('last_updated_by', '')) + self.assertEqual(self.user.username, post_response_dict.get("project_created_by", "")) + self.assertEqual(self.user.username, post_response_dict.get("last_updated_by", "")) self.assertEqual(self.user.username, new_renkan.creator.username) # Content and title extracted from revision - self.assertEqual(new_renkan.title, test_title) - self.assertEqual(new_renkan.content, test_content) + self.assertEqual(new_renkan.title, self.second_test_title) + self.assertEqual(new_renkan.content, self.second_test_content) # Revision count self.assertEqual(new_renkan.revision_count, 1) - self.assertEqual(post_response_dict.get('revision_count', ''), 1) + self.assertEqual(post_response_dict.get("revision_count", ""), 1) + + ################################################### + # POSTing new Renkan with no content + ################################################### + post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": self.test_workspace_guid}) + test_title = "bleh_title_2" + data = {"title": test_title} + post_response = self.client.post(post_url, data, format="json") + self.assertEqual(post_response.status_code, status.HTTP_201_CREATED) + self.assertEqual(Renkan.objects.count(), 3) + self.assertEqual(Revision.objects.count(), 3) ################################################### # POSTing with wrong workspace_guid ################################################### - post_url = reverse('renkan_list_workspace', kwargs={'workspace_guid': 'bleh-bad-workspace-guid'}) - test_title = 'bleh_title_3' - test_content = json.dumps({'title': 'bleh_title_3', 'some_random_stuff': 'wow_3'}) - data = {'title': test_title, 'content': test_content} + post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": "bleh-bad-workspace-guid"}) + data = {"title": self.third_test_title, "content": self.third_test_content} - post_response = self.client.post(post_url, data, format='json') + post_response = self.client.post(post_url, data, format="json") self.assertEqual(post_response.status_code, status.HTTP_404_NOT_FOUND) ################################################### # try POSTing with unauthorized user ################################################### - _ = self.client.login(username='blip', password='blip') - post_url = reverse('renkan_list_workspace', kwargs={'workspace_guid': self.test_workspace_guid}) - test_title = 'shouldnt_work' - test_content = json.dumps({'title': 'shouldnt_work', 'some_random_stuff': 'test'}) - data = {'title': test_title, 'content': test_content} - post_response = self.client.post(post_url, data, format='json') + _ = self.client.login(username="blip", password="blip") + post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": self.test_workspace_guid}) + data = {"title": self.third_test_title, "content": self.third_test_content} + post_response = self.client.post(post_url, data, format="json") self.assertEqual(post_response.status_code, status.HTTP_403_FORBIDDEN) def test_get_renkan(self): @@ -134,43 +176,43 @@ # POSTing new Renkan ################################################### - post_url = reverse('renkan_list') + post_url = reverse("renkan_list") data = {} - post_response = self.client.post(post_url, data, format='json') - post_response_dict = json.loads(post_response.content) - new_renkan_guid = post_response_dict.get('renkan_guid', '') - new_revision_guid = post_response_dict.get('current_revision_guid', '') + post_response = self.client.post(post_url, data, format="json") + post_response_dict = json.loads(post_response.content.decode()) + new_renkan_guid = post_response_dict.get("renkan_guid", "") + new_revision_guid = post_response_dict.get("current_revision_guid", "") ################################################### # GETting posted Renkan ################################################### - get_url = reverse('renkan_detail', kwargs={'renkan_guid':new_renkan_guid}) - get_response = self.client.get(get_url, format='json') + get_url = reverse("renkan_detail", kwargs={"renkan_guid":new_renkan_guid}) + get_response = self.client.get(get_url, format="json") self.assertEqual(get_response.status_code, status.HTTP_200_OK) # Checking GET data - get_response_dict = json.loads(get_response.content) - self.assertEqual(new_renkan_guid, get_response_dict.get('renkan_guid', '')) - self.assertEqual(new_revision_guid, get_response_dict.get('current_revision_guid', '')) - self.assertEqual(self.user.username, get_response_dict.get('project_created_by', '')) - self.assertEqual(self.user.username, get_response_dict.get('last_updated_by', '')) + get_response_dict = json.loads(get_response.content.decode()) + self.assertEqual(new_renkan_guid, get_response_dict.get("renkan_guid", "")) + self.assertEqual(new_revision_guid, get_response_dict.get("current_revision_guid", "")) + self.assertEqual(self.user.username, get_response_dict.get("project_created_by", "")) + self.assertEqual(self.user.username, get_response_dict.get("last_updated_by", "")) ################################################### # GETting with wrong guid ################################################### - get_url = reverse('renkan_detail', kwargs={'renkan_guid': 'bad-id'}) - get_response = self.client.get(get_url, format='json') + get_url = reverse("renkan_detail", kwargs={"renkan_guid": "bad-id"}) + get_response = self.client.get(get_url, format="json") self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) ################################################### # try GETting with unauthorized user ################################################### - _ = self.client.login(username='blip', password='blip') - get_url = reverse('renkan_detail', kwargs={'renkan_guid': new_renkan_guid}) - get_response = self.client.get(get_url, format='json') + _ = self.client.login(username="blip", password="blip") + get_url = reverse("renkan_detail", kwargs={"renkan_guid": new_renkan_guid}) + get_response = self.client.get(get_url, format="json") self.assertEqual(get_response.status_code, status.HTTP_403_FORBIDDEN) def test_get_renkan_list(self): @@ -179,25 +221,21 @@ # POSTing new Renkans ################################################### - post_url = reverse('renkan_list') - first_test_title = 'bleh_title' - first_test_content = json.dumps({'title': 'bleh_title', 'some_random_stuff': 'wow'}) - second_test_title = 'bleh_title_2' - second_test_content = json.dumps({'title': 'bleh_title_2', 'some_random_stuff': 'such'}) - first_data = {'title': first_test_title, 'content': first_test_content} - second_data = {'title': second_test_title, 'content': second_test_content} - self.client.post(post_url, first_data, format='json') - self.client.post(post_url, second_data, format='json') + post_url = reverse("renkan_list") + first_data = {"title": self.first_test_title, "content": self.first_test_content} + second_data = {"title": self.second_test_title, "content": self.second_test_content} + self.client.post(post_url, first_data, format="json") + self.client.post(post_url, second_data, format="json") ################################################### # GETting posted Renkans ################################################### get_url = post_url - get_response = self.client.get(get_url, format='json') + get_response = self.client.get(get_url, format="json") self.assertEqual(get_response.status_code, status.HTTP_200_OK) - get_response_content = json.loads(get_response.content) # Should be a list + get_response_content = json.loads(get_response.content.decode()) # Should be a list self.assertTrue(isinstance(get_response_content, list)) self.assertEqual(len(get_response_content), 2) @@ -205,21 +243,19 @@ # POSTing new Renkan into workspace ################################################### - post_url = reverse('renkan_list_workspace', kwargs={'workspace_guid': self.test_workspace_guid}) - third_test_title = 'bleh_title' - third_test_content = json.dumps({'title': 'bleh_title_3rd', 'some_random_stuff': 'wow much'}) - third_data = {'title': third_test_title, 'content': third_test_content} - self.client.post(post_url, third_data, format='json') + post_url = reverse("renkan_list_workspace", kwargs={"workspace_guid": self.test_workspace_guid}) + third_data = {"title": self.third_test_title, "content": self.third_test_content} + self.client.post(post_url, third_data, format="json") ################################################### # GETting posted Renkans ################################################### get_url = post_url - get_response = self.client.get(get_url, format='json') + get_response = self.client.get(get_url, format="json") self.assertEqual(get_response.status_code, status.HTTP_200_OK) - get_response_content = json.loads(get_response.content) # Should be a list + get_response_content = json.loads(get_response.content.decode()) # Should be a list self.assertTrue(isinstance(get_response_content, list)) self.assertEqual(len(get_response_content), 1) @@ -230,123 +266,115 @@ # POSTing new Renkan ################################################### - post_url = reverse('renkan_list') + post_url = reverse("renkan_list") data = {} - post_response = self.client.post(post_url, data, format='json') - post_response_dict = json.loads(post_response.content) - renkan_guid = post_response_dict.get('renkan_guid', '') - revision_guid = post_response_dict.get('current_revision_guid', '') - - ################################################### - # Init PUT data - ################################################### - first_put_title = 'edited_title' - first_put_content = json.dumps({'title': 'edited_title', 'nodes': 1}) - second_put_title = 'edited_title_2' - second_put_content = json.dumps({'title': 'edited_title_2', 'nodes': 2}) + post_response = self.client.post(post_url, data, format="json") + post_response_dict = json.loads(post_response.content.decode()) + renkan_guid = post_response_dict.get("renkan_guid", "") + revision_guid = post_response_dict.get("current_revision_guid", "") ################################################### # PUTting by updating current revision ################################################### - put_url = reverse('renkan_detail', kwargs={'renkan_guid': renkan_guid}) + put_url = reverse("renkan_detail", kwargs={"renkan_guid": renkan_guid}) put_data = { - 'title' : first_put_title, - 'content' : first_put_content, - 'create_new_revision': False + "title" : self.first_test_title, + "content" : self.first_test_content, + "create_new_revision": False } - put_response = self.client.put(put_url, put_data, format='json') + put_response = self.client.put(put_url, put_data, format="json") self.assertEqual(put_response.status_code, status.HTTP_200_OK) - put_response_dict = json.loads(put_response.content) - # checking we're still on the same revision as the initial one + put_response_dict = json.loads(put_response.content.decode()) + # checking we"re still on the same revision as the initial one updated_project = Renkan.objects.get(renkan_guid=renkan_guid) - self.assertEqual(revision_guid, put_response_dict.get('current_revision_guid', '')) - self.assertEqual(put_response_dict.get('revision_count', ''), 1) + self.assertEqual(revision_guid, put_response_dict.get("current_revision_guid", "")) + self.assertEqual(put_response_dict.get("revision_count", ""), 1) self.assertEqual(updated_project.revision_count, 1) self.assertEqual(revision_guid, updated_project.current_revision_guid) # checking data was updated # in the reponse - self.assertEqual(put_response_dict.get('title', ''), first_put_title) - self.assertEqual(put_response_dict.get('content', ''), first_put_content) + self.assertEqual(put_response_dict.get("title", ""), self.first_test_title) + self.assertEqual(put_response_dict.get("content", ""), self.first_test_content) # in the database updated_revision = Revision.objects.get(revision_guid=revision_guid) - self.assertEqual(updated_revision.title, first_put_title) - self.assertEqual(updated_revision.content, first_put_content) + self.assertEqual(updated_revision.title, self.first_test_title) + self.assertEqual(updated_revision.content, self.first_test_content) ################################################### # PUTting by creating a new revision ################################################### put_data = { - 'title' : second_put_title, - 'content' : second_put_content, - 'create_new_revision': True + "title" : self.second_test_title, + "content" : self.second_test_content, + "create_new_revision": True } - put_response = self.client.put(put_url, put_data, format='json') + put_response = self.client.put(put_url, put_data, format="json") self.assertEqual(put_response.status_code, status.HTTP_200_OK) - put_response_dict = json.loads(put_response.content) + put_response_dict = json.loads(put_response.content.decode()) # checking we created a new revision updated_project = Renkan.objects.get(renkan_guid=renkan_guid) - created_revision_guid = put_response_dict.get('current_revision_guid', '') + created_revision_guid = put_response_dict.get("current_revision_guid", "") self.assertNotEqual(created_revision_guid, revision_guid) self.assertEqual(Renkan.objects.count(), 1) self.assertEqual(Revision.objects.count(), 2) - self.assertEqual(put_response_dict.get('revision_count', ''), 2) + self.assertEqual(put_response_dict.get("revision_count", ""), 2) self.assertEqual(updated_project.revision_count, 2) # checking project now points towards new revision self.assertEqual(updated_project.current_revision_guid, created_revision_guid) # checking data was updated # in the reponse - self.assertEqual(put_response_dict.get('title', ''), second_put_title) - self.assertEqual(put_response_dict.get('content', ''), second_put_content) + self.assertEqual(put_response_dict.get("title", ""), self.second_test_title) + self.assertEqual(put_response_dict.get("content", ""), self.second_test_content) # in the database updated_revision = Revision.objects.get(revision_guid=created_revision_guid) - self.assertEqual(updated_revision.title, second_put_title) - self.assertEqual(updated_revision.content, second_put_content) + self.assertEqual(updated_revision.title, self.second_test_title) + self.assertEqual(updated_revision.content, self.second_test_content) ################################################### # try to update source_revision_guid or workspace_guid ################################################### put_data = { - 'title' : second_put_title, - 'content' : second_put_content, - 'workspace_guid': 'bleh-workspace-guid' # should fail without even checking the id + "title" : self.third_test_title, + "content" : self.third_test_content, + "workspace_guid": "bleh-workspace-guid" # should fail without even checking the id } - put_response = self.client.put(put_url, put_data, format='json') + put_response = self.client.put(put_url, put_data, format="json") self.assertEqual(put_response.status_code, status.HTTP_400_BAD_REQUEST) put_data = { - 'title' : second_put_title, - 'content' : second_put_content, - 'source_revision_guid' : 'bleh-revision-guid' # should fail without even checking the id + "title" : self.third_test_title, + "content" : self.third_test_content, + "source_revision_guid" : "bleh-revision-guid" # should fail without even checking the id } - put_response = self.client.put(put_url, put_data, format='json') + put_response = self.client.put(put_url, put_data, format="json") self.assertEqual(put_response.status_code, status.HTTP_400_BAD_REQUEST) ################################################### # PUTting with wrong guid ################################################### - put_url = reverse('renkan_detail', kwargs={'renkan_guid': 'bad-id'}) - put_response = self.client.put(put_url, {}, format='json') + put_url = reverse("renkan_detail", kwargs={"renkan_guid": "bad-id"}) + put_response = self.client.put(put_url, {}, format="json") self.assertEqual(put_response.status_code, status.HTTP_404_NOT_FOUND) ################################################### # try PUTting with unauthorized user ################################################### - _ = self.client.login(username='blip', password='blip') - put_url = reverse('renkan_detail', kwargs={'renkan_guid': renkan_guid}) + _ = self.client.login(username="blip", password="blip") + put_url = reverse("renkan_detail", kwargs={"renkan_guid": renkan_guid}) put_data = { - 'title' : 'wont_work', - 'content' : json.dumps({'title': 'wont_work', 'nodes': 0}), - 'create_new_revision': False + "title" : self.third_test_title, + "content" : self.third_test_content, + "create_new_revision": False } - put_response = self.client.put(put_url, put_data, format='json') + put_response = self.client.put(put_url, put_data, format="json") self.assertEqual(put_response.status_code, status.HTTP_403_FORBIDDEN) def test_copy_renkan(self): @@ -355,95 +383,151 @@ # POSTing new Renkan ################################################### - post_url = reverse('renkan_list') - test_title = 'bleh_title' - test_content = json.dumps({'title': 'bleh_title', 'some_random_stuff': 'wow'}) - data = {'title': test_title, 'content': test_content} - post_response = self.client.post(post_url, data, format='json') - post_response_dict = json.loads(post_response.content) - source_renkan_guid = post_response_dict.get('renkan_guid', '') - source_revision_guid = post_response_dict.get('current_revision_guid', '') + post_url = reverse("renkan_list") + data = {"title": self.first_test_title, "content": self.first_test_content} + post_response = self.client.post(post_url, data, format="json") + post_response_dict = json.loads(post_response.content.decode()) + source_renkan_guid = post_response_dict.get("renkan_guid", "") + source_revision_guid = post_response_dict.get("current_revision_guid", "") ################################################### - # POSTing copy with query arg + # POSTing copy with query arg for RENKAN guid ################################################### - first_copy_data = {} - first_copy_url = post_url+'?source='+source_revision_guid - first_copy_response = self.client.post(first_copy_url, first_copy_data, format='json') - first_copy_response_dict = json.loads(first_copy_response.content) + first_copy_data = {"title": "new_title_copy_1"} + first_copy_url = post_url+"?source_renkan_guid="+source_renkan_guid + first_copy_response = self.client.post(first_copy_url, first_copy_data, format="json") + first_copy_response_dict = json.loads(first_copy_response.content.decode()) self.assertEqual(first_copy_response.status_code, status.HTTP_201_CREATED) self.assertEqual(Renkan.objects.count(), 2) # Checking data # in the response - self.assertNotEqual(first_copy_response_dict.get('renkan_guid'), source_renkan_guid) - self.assertEqual(first_copy_response_dict.get('source_revision_guid'), source_revision_guid) - self.assertEqual(first_copy_response_dict.get('title', ''), test_title) - self.assertEqual(first_copy_response_dict.get('content', ''), test_content) - self.assertEqual(first_copy_response_dict.get('project_created_by', ''), self.user.username) - self.assertEqual(first_copy_response_dict.get('last_updated_by', ''), self.user.username) + self.assertNotEqual(first_copy_response_dict.get("renkan_guid"), source_renkan_guid) + self.assertEqual(first_copy_response_dict.get("source_revision_guid"), source_revision_guid) + self.assertEqual(first_copy_response_dict.get("title", ""), "new_title_copy_1") + self.assertEqual(first_copy_response_dict.get("content", ""), self.first_test_content) + self.assertEqual(first_copy_response_dict.get("project_created_by", ""), self.user.username) + self.assertEqual(first_copy_response_dict.get("last_updated_by", ""), self.user.username) # in the database - first_copy = Renkan.objects.get(renkan_guid=first_copy_response_dict.get('renkan_guid', '')) - first_copy_revision = Revision.objects.get(revision_guid=first_copy_response_dict.get('current_revision_guid', '')) - self.assertEqual(first_copy.title, test_title) - self.assertEqual(first_copy.content, test_content) - self.assertEqual(first_copy_revision.title, test_title) - self.assertEqual(first_copy_revision.content, test_content) + first_copy = Renkan.objects.get(renkan_guid=first_copy_response_dict.get("renkan_guid", "")) + first_copy_revision = Revision.objects.get(revision_guid=first_copy_response_dict.get("current_revision_guid", "")) + self.assertEqual(first_copy.title, "new_title_copy_1") + self.assertEqual(first_copy.content, self.first_test_content) + self.assertEqual(first_copy_revision.title, "new_title_copy_1") + self.assertEqual(first_copy_revision.content, self.first_test_content) self.assertEqual(first_copy.creator.username, self.user.username) self.assertEqual(first_copy_revision.creator.username, self.user.username) self.assertEqual(first_copy_revision.last_updated_by.username, self.user.username) ################################################### - # POSTing copy with source_revision_guid in data + # POSTing copy with source_renkan_guid in data ################################################### - second_copy_data = {'source_revision_guid': source_revision_guid} - second_copy_url = post_url+'?source='+source_revision_guid - second_copy_response = self.client.post(second_copy_url, second_copy_data, format='json') - second_copy_response_dict = json.loads(second_copy_response.content) + second_copy_data = {"source_renkan_guid": source_renkan_guid, "title": "new_title_copy_2"} + second_copy_url = post_url + second_copy_response = self.client.post(second_copy_url, second_copy_data, format="json") + second_copy_response_dict = json.loads(second_copy_response.content.decode()) self.assertEqual(second_copy_response.status_code, status.HTTP_201_CREATED) self.assertEqual(Renkan.objects.count(), 3) # Checking data # in the response - self.assertNotEqual(second_copy_response_dict.get('renkan_guid'), source_renkan_guid) - self.assertEqual(first_copy_response_dict.get('source_revision_guid'), source_revision_guid) - self.assertEqual(second_copy_response_dict.get('title', ''), test_title) - self.assertEqual(second_copy_response_dict.get('content', ''), test_content) - self.assertEqual(second_copy_response_dict.get('project_created_by', ''), self.user.username) - self.assertEqual(second_copy_response_dict.get('last_updated_by', ''), self.user.username) + self.assertNotEqual(second_copy_response_dict.get("renkan_guid"), source_renkan_guid) + self.assertEqual(second_copy_response_dict.get("source_revision_guid"), source_revision_guid) + self.assertEqual(second_copy_response_dict.get("title", ""), "new_title_copy_2") + self.assertEqual(second_copy_response_dict.get("content", ""), self.first_test_content) + self.assertEqual(second_copy_response_dict.get("project_created_by", ""), self.user.username) + self.assertEqual(second_copy_response_dict.get("last_updated_by", ""), self.user.username) # in the database - second_copy = Renkan.objects.get(renkan_guid=second_copy_response_dict.get('renkan_guid', '')) - second_copy_revision = Revision.objects.get(revision_guid=second_copy_response_dict.get('current_revision_guid', '')) - self.assertEqual(second_copy.title, test_title) - self.assertEqual(second_copy.content, test_content) - self.assertEqual(second_copy_revision.title, test_title) - self.assertEqual(second_copy_revision.content, test_content) + second_copy = Renkan.objects.get(renkan_guid=second_copy_response_dict.get("renkan_guid", "")) + second_copy_revision = Revision.objects.get(revision_guid=second_copy_response_dict.get("current_revision_guid", "")) + self.assertEqual(second_copy.title, "new_title_copy_2") + self.assertEqual(second_copy.content, self.first_test_content) + self.assertEqual(second_copy_revision.title, "new_title_copy_2") + self.assertEqual(second_copy_revision.content, self.first_test_content) self.assertEqual(second_copy.creator.username, self.user.username) self.assertEqual(second_copy_revision.creator.username, self.user.username) self.assertEqual(second_copy_revision.last_updated_by.username, self.user.username) + ################################################### + # POSTing copy with query arg for REVISION guid + ################################################### + + third_copy_data = {"title": "new_title_copy_3"} + third_copy_url = post_url+"?source_revision_guid="+source_revision_guid + third_copy_response = self.client.post(third_copy_url, third_copy_data, format="json") + third_copy_response_dict = json.loads(third_copy_response.content.decode()) + self.assertEqual(third_copy_response.status_code, status.HTTP_201_CREATED) + self.assertEqual(Renkan.objects.count(), 4) + # Checking data + # in the response + self.assertNotEqual(third_copy_response_dict.get("renkan_guid"), source_renkan_guid) + self.assertEqual(third_copy_response_dict.get("source_revision_guid"), source_revision_guid) + self.assertEqual(third_copy_response_dict.get("title", ""), "new_title_copy_3") + self.assertEqual(third_copy_response_dict.get("content", ""), self.first_test_content) + self.assertEqual(third_copy_response_dict.get("project_created_by", ""), self.user.username) + self.assertEqual(third_copy_response_dict.get("last_updated_by", ""), self.user.username) + # in the database + third_copy = Renkan.objects.get(renkan_guid=third_copy_response_dict.get("renkan_guid", "")) + third_copy_revision = Revision.objects.get(revision_guid=third_copy_response_dict.get("current_revision_guid", "")) + self.assertEqual(third_copy.title, "new_title_copy_3") + self.assertEqual(third_copy.content, self.first_test_content) + self.assertEqual(third_copy_revision.title, "new_title_copy_3") + self.assertEqual(third_copy_revision.content, self.first_test_content) + self.assertEqual(third_copy.creator.username, self.user.username) + self.assertEqual(third_copy_revision.creator.username, self.user.username) + self.assertEqual(third_copy_revision.last_updated_by.username, self.user.username) + + ################################################### + # POSTing copy with source_revision_guid in data + ################################################### + + fourth_copy_data = {"source_revision_guid": source_revision_guid} + fourth_copy_url = post_url + fourth_copy_response = self.client.post(fourth_copy_url, fourth_copy_data, format="json") + fourth_copy_response_dict = json.loads(fourth_copy_response.content.decode()) + self.assertEqual(fourth_copy_response.status_code, status.HTTP_201_CREATED) + self.assertEqual(Renkan.objects.count(), 5) + # Checking data + # in the response + self.assertNotEqual(fourth_copy_response_dict.get("renkan_guid"), source_renkan_guid) + self.assertEqual(fourth_copy_response_dict.get("source_revision_guid"), source_revision_guid) + self.assertEqual(fourth_copy_response_dict.get("title", ""), self.first_test_title) + self.assertEqual(fourth_copy_response_dict.get("content", ""), self.first_test_content) + self.assertEqual(fourth_copy_response_dict.get("project_created_by", ""), self.user.username) + self.assertEqual(fourth_copy_response_dict.get("last_updated_by", ""), self.user.username) + # in the database + fourth_copy = Renkan.objects.get(renkan_guid=fourth_copy_response_dict.get("renkan_guid", "")) + fourth_copy_revision = Revision.objects.get(revision_guid=fourth_copy_response_dict.get("current_revision_guid", "")) + self.assertEqual(fourth_copy.title, self.first_test_title) + self.assertEqual(fourth_copy.content, self.first_test_content) + self.assertEqual(fourth_copy_revision.title, self.first_test_title) + self.assertEqual(fourth_copy_revision.content, self.first_test_content) + self.assertEqual(fourth_copy.creator.username, self.user.username) + self.assertEqual(fourth_copy_revision.creator.username, self.user.username) + self.assertEqual(fourth_copy_revision.last_updated_by.username, self.user.username) + ################################################### # try POSTing copy with bad query arg guid and with bad data guid ################################################### - bad_copy_data = {'source_revision_guid': 'bleh_bad_id'} + bad_copy_data = {"source_revision_guid": "bleh_bad_id"} # with query arg - qarg_bad_copy_url = post_url+'?source=bleh_bad_id' - qarg_bad_copy_response = self.client.post(qarg_bad_copy_url, {}, format='json') + qarg_bad_copy_url = post_url+"?source=bleh_bad_id" + qarg_bad_copy_response = self.client.post(qarg_bad_copy_url, {}, format="json") self.assertEqual(qarg_bad_copy_response.status_code, status.HTTP_404_NOT_FOUND) # with data data_bad_copy_url = post_url - data_bad_copy_response = self.client.post(data_bad_copy_url, bad_copy_data, format='json') + data_bad_copy_response = self.client.post(data_bad_copy_url, bad_copy_data, format="json") self.assertEqual(data_bad_copy_response.status_code, status.HTTP_404_NOT_FOUND) ################################################### # try POSTing with unauthorized user ################################################### - _ = self.client.login(username='blip', password='blip') - post_url = reverse('renkan_list')+'?source='+source_revision_guid - post_response = self.client.post(post_url, {}, format='json') + _ = self.client.login(username="blip", password="blip") + post_url = reverse("renkan_list")+"?source="+source_revision_guid + post_response = self.client.post(post_url, {}, format="json") self.assertEqual(post_response.status_code, status.HTTP_403_FORBIDDEN) def test_delete_renkan(self): @@ -452,27 +536,25 @@ # POSTing new Renkan ################################################### - post_url = reverse('renkan_list') - test_title = 'bleh_title' - test_content = json.dumps({'title': 'bleh_title', 'some_random_stuff': 'wow'}) - data = {'title': test_title, 'content': test_content} - post_response = self.client.post(post_url, data, format='json') - post_response_dict = json.loads(post_response.content) - to_delete_renkan_guid = post_response_dict.get('renkan_guid', '') - to_delete_revision_guid = post_response_dict.get('current_revision_guid', '') + post_url = reverse("renkan_list") + data = {"title": self.first_test_title, "content": self.first_test_content} + post_response = self.client.post(post_url, data, format="json") + post_response_dict = json.loads(post_response.content.decode()) + to_delete_renkan_guid = post_response_dict.get("renkan_guid", "") + to_delete_revision_guid = post_response_dict.get("current_revision_guid", "") ################################################### # POSTing copy ################################################### data = {} - post_response = self.client.post(post_url+'?source='+to_delete_revision_guid, data, format='json') - post_response_dict = json.loads(post_response.content) - copy_renkan_guid = post_response_dict.get('renkan_guid', '') + post_response = self.client.post(post_url+"?source="+to_delete_renkan_guid, data, format="json") + post_response_dict = json.loads(post_response.content.decode()) + copy_renkan_guid = post_response_dict.get("renkan_guid", "") # Adding another revision - put_data = {'title': test_title+'_edited!', 'create_new_revision': True} - put_url = reverse('renkan_detail', kwargs={'renkan_guid':to_delete_renkan_guid}) - put_response = self.client.put(put_url, put_data, format='json') + put_data = {"title": self.first_test_title+"_edited!", "create_new_revision": True} + put_url = reverse("renkan_detail", kwargs={"renkan_guid":to_delete_renkan_guid}) + put_response = self.client.put(put_url, put_data, format="json") self.assertEqual(Renkan.objects.count(), 2) self.assertEqual(Revision.objects.count(), 3) @@ -480,20 +562,20 @@ # try to DELETE with unauthorized user ################################################### - _ = self.client.login(username='blip', password='blip') - delete_url = reverse('renkan_detail', kwargs={'renkan_guid':to_delete_renkan_guid}) - delete_response = self.client.delete(delete_url, format='json') + _ = self.client.login(username="blip", password="blip") + delete_url = reverse("renkan_detail", kwargs={"renkan_guid":to_delete_renkan_guid}) + delete_response = self.client.delete(delete_url, format="json") self.assertEqual(delete_response.status_code, status.HTTP_403_FORBIDDEN) # Restoring rightful user - _ = self.client.login(username='blop', password='blop') + _ = self.client.login(username="blop", password="blop") ################################################### # DELETE initial renkan ################################################### - delete_url = reverse('renkan_detail', kwargs={'renkan_guid':to_delete_renkan_guid}) - delete_response = self.client.delete(delete_url, format='json') + delete_url = reverse("renkan_detail", kwargs={"renkan_guid":to_delete_renkan_guid}) + delete_response = self.client.delete(delete_url, format="json") self.assertEqual(delete_response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(Renkan.objects.count(), 1) # Only the copy remains self.assertEqual(Revision.objects.count(), 1) # Only the copy initial revision remains @@ -502,21 +584,21 @@ # Try to GET deleted renkan ################################################### - get_url = reverse('renkan_detail', kwargs={'renkan_guid':to_delete_renkan_guid}) - get_response = self.client.get(get_url, format='json') + get_url = reverse("renkan_detail", kwargs={"renkan_guid":to_delete_renkan_guid}) + get_response = self.client.get(get_url, format="json") self.assertEqual(get_response.status_code, status.HTTP_404_NOT_FOUND) ################################################### - # Check that remaining renkan doesn't have reference to deleted renkan + # Check that remaining renkan doesn"t have reference to deleted renkan ################################################### copy_renkan = Renkan.objects.get(renkan_guid=copy_renkan_guid) - self.assertEqual(copy_renkan.source_revision_guid, '') + self.assertEqual(copy_renkan.source_revision_guid, "") ################################################### # Try to DELETE renkan with wrong guid ################################################### - delete_url = reverse('renkan_detail', kwargs={'renkan_guid': 'bad-id'}) - delete_response = self.client.delete(delete_url, format='json') + delete_url = reverse("renkan_detail", kwargs={"renkan_guid": "bad-id"}) + delete_response = self.client.delete(delete_url, format="json") self.assertEqual(delete_response.status_code, status.HTTP_404_NOT_FOUND) \ No newline at end of file