def test_put_second_dest_attachment_file_disallowed(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API disallows setting dest_attachment_file twice """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff_filename = os.path.join(os.path.dirname(scmtools.__file__), "testdata", "git_binary_image_modified.diff") with open(diff_filename, "r") as f: rsp = self.apiPost( get_diff_list_url(review_request), {"path": f, "base_commit_id": "1234"}, expected_mimetype=diff_item_mimetype, ) diffset = DiffSet.objects.get(pk=rsp["diff"]["id"]) filediff = diffset.files.all()[0] url = get_draft_filediff_item_url(filediff, review_request) trophy_filename = self._getTrophyFilename() with open(trophy_filename, "r") as f: self.apiPut(url, {"dest_attachment_file": f}, expected_mimetype=filediff_item_mimetype) with open(trophy_filename, "r") as f: rsp = self.apiPut(url, {"dest_attachment_file": f}, expected_status=400) self.assertEqual(rsp["stat"], "fail") self.assertEqual(rsp["err"]["code"], INVALID_FORM_DATA.code) self.assertTrue("fields" in rsp) self.assertTrue("dest_attachment_file" in rsp["fields"])
def setup_http_not_allowed_item_test(self, user): review_request = self.create_review_request(create_repository=True, submitter=user) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) return get_draft_filediff_item_url(filediff, review_request)
def setup_http_not_allowed_item_test(self, user): review_request = self.create_review_request( create_repository=True, submitter=user) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) return get_draft_filediff_item_url(filediff, review_request)
def setup_basic_get_test(self, user, with_local_site, local_site_name): review_request = self.create_review_request( create_repository=True, with_local_site=with_local_site, submitter=user) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) return (get_draft_filediff_item_url(filediff, review_request, local_site_name), filediff_item_mimetype, filediff)
def test_get_not_owner(self): """Testing the GET review-requests/<id>/draft/diffs/<revision>/files/<id>/ API without owner with Permission Denied error """ review_request = self.create_review_request(create_repository=True) self.assertNotEqual(review_request.submitter, self.user) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) self.apiGet(get_draft_filediff_item_url(filediff, review_request), expected_status=403)
def test_get_not_owner(self): """Testing the GET review-requests/<id>/draft/diffs/<revision>/files/<id>/ API without owner with Permission Denied error """ review_request = self.create_review_request(create_repository=True) self.assertNotEqual(review_request.submitter, self.user) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) self.api_get(get_draft_filediff_item_url(filediff, review_request), expected_status=403)
def test_delete_method_not_allowed(self): """Testing the DELETE review-requests/<id>/draft/diffs/<revision>/files/<id>/ API gives Method Not Allowed""" review_request = self.create_review_request(create_repository=True, submitter=self.user) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) self.apiDelete( get_draft_filediff_item_url(filediff, review_request), expected_status=405)
def test_put_with_modified_file_and_dest_attachment_file(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API with modified file and dest_attachment_file """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff_filename = os.path.join(os.path.dirname(scmtools.__file__), 'testdata', 'git_binary_image_modified.diff') with open(diff_filename, 'r') as f: rsp = self.apiPost( get_diff_list_url(review_request), { 'path': f, 'base_commit_id': '1234', }, expected_mimetype=diff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') diffset = DiffSet.objects.get(pk=rsp['diff']['id']) filediffs = diffset.files.all() self.assertEqual(len(filediffs), 1) filediff = filediffs[0] self.assertEqual(filediff.source_file, 'trophy.png') with open(self._getTrophyFilename(), 'r') as f: rsp = self.apiPut( get_draft_filediff_item_url(filediff, review_request) + '?expand=dest_attachment', { 'dest_attachment_file': f, }, expected_mimetype=filediff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertTrue('dest_attachment' in rsp['file']) attachment = FileAttachment.objects.get( pk=rsp['file']['dest_attachment']['id']) self.assertTrue(attachment.is_from_diff) self.assertEqual(attachment.orig_filename, 'trophy.png') self.assertEqual(attachment.added_in_filediff, None) self.assertEqual(attachment.repo_path, 'trophy.png') self.assertEqual(attachment.repo_revision, '86b520d') self.assertEqual(attachment.repository, review_request.repository)
def test_put_with_modified_file_and_dest_attachment_file(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API with modified file and dest_attachment_file """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff_filename = os.path.join(os.path.dirname(scmtools.__file__), 'testdata', 'git_binary_image_modified.diff') with open(diff_filename, 'r') as f: rsp = self.api_post( get_diff_list_url(review_request), { 'path': f, 'base_commit_id': '1234', }, expected_mimetype=diff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') diffset = DiffSet.objects.get(pk=rsp['diff']['id']) filediffs = diffset.files.all() self.assertEqual(len(filediffs), 1) filediff = filediffs[0] self.assertEqual(filediff.source_file, 'trophy.png') with open(self._getTrophyFilename(), 'r') as f: rsp = self.api_put( get_draft_filediff_item_url(filediff, review_request) + '?expand=dest_attachment', { 'dest_attachment_file': f, }, expected_mimetype=filediff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertIn('dest_attachment', rsp['file']) attachment = FileAttachment.objects.get( pk=rsp['file']['dest_attachment']['id']) self.assertTrue(attachment.is_from_diff) self.assertEqual(attachment.orig_filename, 'trophy.png') self.assertEqual(attachment.added_in_filediff, None) self.assertEqual(attachment.repo_path, 'trophy.png') self.assertEqual(attachment.repo_revision, '86b520d') self.assertEqual(attachment.repository, review_request.repository)
def setup_basic_put_test(self, user, with_local_site, local_site_name, put_valid_data): review_request = self.create_review_request( submitter=user, with_local_site=with_local_site, create_repository=True ) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) return ( get_draft_filediff_item_url(filediff, review_request, local_site_name), filediff_item_mimetype, {}, filediff, [], )
def test_put_with_modified_file_and_dest_attachment_file(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API with modified file and dest_attachment_file """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff = SimpleUploadedFile('git_binary_image_modified.diff', self.DEFAULT_GIT_BINARY_IMAGE_DIFF, content_type='text/x-patch') rsp = self.api_post( get_diff_list_url(review_request), { 'path': diff, 'base_commit_id': '1234', }, expected_mimetype=diff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') diffset = DiffSet.objects.get(pk=rsp['diff']['id']) filediffs = diffset.files.all() self.assertEqual(len(filediffs), 1) filediff = filediffs[0] self.assertEqual(filediff.source_file, 'logo.png') with open(self.get_sample_image_filename(), 'r') as f: rsp = self.api_put( get_draft_filediff_item_url(filediff, review_request) + '?expand=dest_attachment', { 'dest_attachment_file': f, }, expected_mimetype=filediff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertIn('dest_attachment', rsp['file']) attachment = FileAttachment.objects.get( pk=rsp['file']['dest_attachment']['id']) self.assertTrue(attachment.is_from_diff) self.assertEqual(attachment.orig_filename, 'logo.png') self.assertEqual(attachment.added_in_filediff, None) self.assertEqual(attachment.repo_path, 'logo.png') self.assertEqual(attachment.repo_revision, '86b520d') self.assertEqual(attachment.repository, review_request.repository)
def test_get(self): """Testing the GET review-requests/<id>/draft/diffs/<revision>/files/<id>/ API """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) rsp = self.apiGet( get_draft_filediff_item_url(filediff, review_request), expected_mimetype=filediff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(rsp['file']['id'], filediff.pk) self.assertEqual(rsp['file']['source_file'], filediff.source_file)
def test_put_second_dest_attachment_file_disallowed(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API disallows setting dest_attachment_file twice """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff_filename = os.path.join(os.path.dirname(scmtools.__file__), 'testdata', 'git_binary_image_modified.diff') with open(diff_filename, 'r') as f: rsp = self.api_post( get_diff_list_url(review_request), { 'path': f, 'base_commit_id': '1234', }, expected_mimetype=diff_item_mimetype) diffset = DiffSet.objects.get(pk=rsp['diff']['id']) filediff = diffset.files.all()[0] url = get_draft_filediff_item_url(filediff, review_request) trophy_filename = self._getTrophyFilename() with open(trophy_filename, 'r') as f: self.api_put( url, { 'dest_attachment_file': f, }, expected_mimetype=filediff_item_mimetype) with open(trophy_filename, 'r') as f: rsp = self.api_put( url, { 'dest_attachment_file': f, }, expected_status=400) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code) self.assertIn('fields', rsp) self.assertIn('dest_attachment_file', rsp['fields'])
def test_put_second_dest_attachment_file_disallowed(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API disallows setting dest_attachment_file twice """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff_filename = os.path.join(os.path.dirname(scmtools.__file__), 'testdata', 'git_binary_image_modified.diff') with open(diff_filename, 'r') as f: rsp = self.apiPost( get_diff_list_url(review_request), { 'path': f, 'base_commit_id': '1234', }, expected_mimetype=diff_item_mimetype) diffset = DiffSet.objects.get(pk=rsp['diff']['id']) filediff = diffset.files.all()[0] url = get_draft_filediff_item_url(filediff, review_request) trophy_filename = self._getTrophyFilename() with open(trophy_filename, 'r') as f: self.apiPut( url, { 'dest_attachment_file': f, }, expected_mimetype=filediff_item_mimetype) with open(trophy_filename, 'r') as f: rsp = self.apiPut( url, { 'dest_attachment_file': f, }, expected_status=400) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code) self.assertTrue('fields' in rsp) self.assertTrue('dest_attachment_file' in rsp['fields'])
def test_put_with_modified_file_and_dest_attachment_file(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API with modified file and dest_attachment_file """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff = SimpleUploadedFile('git_binary_image_modified.diff', self.DEFAULT_GIT_BINARY_IMAGE_DIFF, content_type='text/x-patch') rsp = self.api_post(get_diff_list_url(review_request), { 'path': diff, 'base_commit_id': '1234', }, expected_mimetype=diff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') diffset = DiffSet.objects.get(pk=rsp['diff']['id']) filediffs = diffset.files.all() self.assertEqual(len(filediffs), 1) filediff = filediffs[0] self.assertEqual(filediff.source_file, 'logo.png') with open(self.get_sample_image_filename(), 'rb') as f: rsp = self.api_put( get_draft_filediff_item_url(filediff, review_request) + '?expand=dest_attachment', { 'dest_attachment_file': f, }, expected_mimetype=filediff_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertIn('dest_attachment', rsp['file']) attachment = FileAttachment.objects.get( pk=rsp['file']['dest_attachment']['id']) self.assertTrue(attachment.is_from_diff) self.assertEqual(attachment.orig_filename, 'logo.png') self.assertEqual(attachment.added_in_filediff, None) self.assertEqual(attachment.repo_path, 'logo.png') self.assertEqual(attachment.repo_revision, '86b520d') self.assertEqual(attachment.repository, review_request.repository)
def test_put_second_dest_attachment_file_disallowed(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API disallows setting dest_attachment_file twice """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff = SimpleUploadedFile('git_binary_image_modified.diff', self.DEFAULT_GIT_BINARY_IMAGE_DIFF, content_type='text/x-patch') rsp = self.api_post( get_diff_list_url(review_request), { 'path': diff, 'base_commit_id': '1234', }, expected_mimetype=diff_item_mimetype) diffset = DiffSet.objects.get(pk=rsp['diff']['id']) filediff = diffset.files.all()[0] url = get_draft_filediff_item_url(filediff, review_request) trophy_filename = self.get_sample_image_filename() with open(trophy_filename, 'r') as f: self.api_put( url, { 'dest_attachment_file': f, }, expected_mimetype=filediff_item_mimetype) with open(trophy_filename, 'r') as f: rsp = self.api_put( url, { 'dest_attachment_file': f, }, expected_status=400) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code) self.assertIn('fields', rsp) self.assertIn('dest_attachment_file', rsp['fields'])
def test_get_with_site_no_access(self): """Testing the GET review-requests/<id>/draft/diffs/<revision>/files/<id>/ API with a local site and user not on the site """ user = self._login_user(local_site=True) review_request = self.create_review_request(submitter=user, create_repository=True, with_local_site=True) diffset = self.create_diffset(review_request, draft=True) filediff = self.create_filediff(diffset) user = self._login_user() self.apiGet( get_draft_filediff_item_url(filediff, review_request, self.local_site_name), expected_status=403)
def test_put_with_modified_file_and_dest_attachment_file(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API with modified file and dest_attachment_file """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff_filename = os.path.join(os.path.dirname(scmtools.__file__), "testdata", "git_binary_image_modified.diff") with open(diff_filename, "r") as f: rsp = self.apiPost( get_diff_list_url(review_request), {"path": f, "base_commit_id": "1234"}, expected_mimetype=diff_item_mimetype, ) self.assertEqual(rsp["stat"], "ok") diffset = DiffSet.objects.get(pk=rsp["diff"]["id"]) filediffs = diffset.files.all() self.assertEqual(len(filediffs), 1) filediff = filediffs[0] self.assertEqual(filediff.source_file, "trophy.png") with open(self._getTrophyFilename(), "r") as f: rsp = self.apiPut( get_draft_filediff_item_url(filediff, review_request) + "?expand=dest_attachment", {"dest_attachment_file": f}, expected_mimetype=filediff_item_mimetype, ) self.assertEqual(rsp["stat"], "ok") self.assertTrue("dest_attachment" in rsp["file"]) attachment = FileAttachment.objects.get(pk=rsp["file"]["dest_attachment"]["id"]) self.assertTrue(attachment.is_from_diff) self.assertEqual(attachment.orig_filename, "trophy.png") self.assertEqual(attachment.added_in_filediff, None) self.assertEqual(attachment.repo_path, "trophy.png") self.assertEqual(attachment.repo_revision, "86b520d") self.assertEqual(attachment.repository, review_request.repository)
def test_put_second_dest_attachment_file_disallowed(self): """Testing the PUT review-requests/<id>/diffs/<id>/files/<id>/ API disallows setting dest_attachment_file twice """ review_request = self.create_review_request(create_repository=True, submitter=self.user) diff = SimpleUploadedFile('git_binary_image_modified.diff', self.DEFAULT_GIT_BINARY_IMAGE_DIFF, content_type='text/x-patch') rsp = self.api_post(get_diff_list_url(review_request), { 'path': diff, 'base_commit_id': '1234', }, expected_mimetype=diff_item_mimetype) diffset = DiffSet.objects.get(pk=rsp['diff']['id']) filediff = diffset.files.all()[0] url = get_draft_filediff_item_url(filediff, review_request) trophy_filename = self.get_sample_image_filename() with open(trophy_filename, 'rb') as f: self.api_put(url, { 'dest_attachment_file': f, }, expected_mimetype=filediff_item_mimetype) with open(trophy_filename, 'rb') as f: rsp = self.api_put(url, { 'dest_attachment_file': f, }, expected_status=400) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code) self.assertIn('fields', rsp) self.assertIn('dest_attachment_file', rsp['fields'])