def test_get_file_attachments(self): """Testing the GET review-requests/<id>/file-attachments/ API""" review_request = self.create_review_request(create_repository=True, publish=True) # This is the file attachment that should be returned. self.create_file_attachment(review_request, orig_filename="trophy1.png") # This attachment shouldn't be shown in the results. It represents # a file to be shown in the diff viewer. self.create_file_attachment( review_request, orig_filename="trophy2.png", repo_path="/trophy.png", repo_revision="123", repository=review_request.repository, ) # This attachment shouldn't be shown either, for the same # reasons. diffset = self.create_diffset(review_request) filediff = self.create_filediff( diffset, source_file="/trophy3.png", dest_file="/trophy3.png", source_revision="123", dest_detail="124" ) self.create_file_attachment(review_request, orig_filename="trophy3.png", added_in_filediff=filediff) rsp = self.apiGet(get_file_attachment_list_url(review_request), expected_mimetype=file_attachment_list_mimetype) self.assertEqual(rsp["stat"], "ok") file_attachments = rsp["file_attachments"] self.assertEqual(len(file_attachments), 1) self.assertEqual(file_attachments[0]["filename"], "trophy1.png")
def test_post_with_attachment_history_id_wrong_review_request(self): """Testing the POST review-requests/<id>/file-attachments/ API with a file attachment history belonging to a different reiew request """ review_request_1 = self.create_review_request(submitter=self.user, publish=True) history = FileAttachmentHistory.objects.create(display_position=0) review_request_1.file_attachment_histories.add(history) review_request_2 = self.create_review_request(submitter=self.user, publish=True) self.assertEqual(history.latest_revision, 0) with open(self._getTrophyFilename(), "r") as f: self.assertTrue(f) rsp = self.api_post( get_file_attachment_list_url(review_request_2), { 'path': f, 'attachment_history': history.pk, }, expected_status=400) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code) history = FileAttachmentHistory.objects.get(pk=history.pk) self.assertEqual(history.latest_revision, 0)
def test_post_with_attachment_history_id_wrong_review_request(self): """Testing the POST review-requests/<id>/file-attachments/ API with a file attachment history belonging to a different reiew request """ review_request_1 = self.create_review_request(submitter=self.user, publish=True) history = FileAttachmentHistory.objects.create(display_position=0) review_request_1.file_attachment_histories.add(history) review_request_2 = self.create_review_request(submitter=self.user, publish=True) self.assertEqual(history.latest_revision, 0) with open(self.get_sample_image_filename(), 'rb') as f: self.assertTrue(f) rsp = self.api_post(get_file_attachment_list_url(review_request_2), { 'path': f, 'attachment_history': history.pk, }, expected_status=400) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], INVALID_FORM_DATA.code) history = FileAttachmentHistory.objects.get(pk=history.pk) self.assertEqual(history.latest_revision, 0)
def setup_basic_get_test(self, user, with_local_site, local_site_name, populate_items): review_request = self.create_review_request( create_repository=True, with_local_site=with_local_site, submitter=user ) if populate_items: # This is the file attachment that should be returned. items = [self.create_file_attachment(review_request, orig_filename="logo1.png")] # This attachment shouldn't be shown in the results. It represents # a file to be shown in the diff viewer. self.create_file_attachment( review_request, orig_filename="logo2.png", repo_path="/logo.png", repo_revision="123", repository=review_request.repository, ) # This attachment shouldn't be shown either, for the same # reasons. diffset = self.create_diffset(review_request) filediff = self.create_filediff( diffset, source_file="/logo3.png", dest_file="/logo3.png", source_revision="123", dest_detail="124" ) self.create_file_attachment(review_request, orig_filename="logo3.png", added_in_filediff=filediff) else: items = [] return (get_file_attachment_list_url(review_request, local_site_name), file_attachment_list_mimetype, items)
def test_post_with_attachment_history_id_wrong_review_request(self): """Testing the POST review-requests/<id>/file-attachments/ API with a file attachment history belonging to a different reiew request """ review_request_1 = self.create_review_request(submitter=self.user, publish=True) history = FileAttachmentHistory.objects.create(display_position=0) review_request_1.file_attachment_histories.add(history) review_request_2 = self.create_review_request(submitter=self.user, publish=True) self.assertEqual(history.latest_revision, 0) with open(self.get_sample_image_filename(), "r") as f: self.assertTrue(f) rsp = self.api_post( get_file_attachment_list_url(review_request_2), {"path": f, "attachment_history": history.pk}, expected_status=400, ) self.assertEqual(rsp["stat"], "fail") self.assertEqual(rsp["err"]["code"], INVALID_FORM_DATA.code) history = FileAttachmentHistory.objects.get(pk=history.pk) self.assertEqual(history.latest_revision, 0)
def test_post_with_attachment_history_id(self): """Testing the POST review-requests/<id>/file-attachments/ API with a file attachment history """ review_request = self.create_review_request(submitter=self.user, publish=True) history = FileAttachmentHistory.objects.create(display_position=0) review_request.file_attachment_histories.add(history) self.assertEqual(history.latest_revision, 0) with open(self._getTrophyFilename(), "r") as f: self.assertTrue(f) rsp = self.api_post( get_file_attachment_list_url(review_request), { 'path': f, 'attachment_history': history.pk, }, expected_mimetype=file_attachment_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(rsp['file_attachment']['attachment_history_id'], history.pk) history = FileAttachmentHistory.objects.get(pk=history.pk) self.assertEqual(history.latest_revision, 1) review_request.get_draft().publish() # Add a second revision f.seek(0) rsp = self.api_post( get_file_attachment_list_url(review_request), { 'path': f, 'attachment_history': history.pk, }, expected_mimetype=file_attachment_item_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(rsp['file_attachment']['attachment_history_id'], history.pk) history = FileAttachmentHistory.objects.get(pk=history.pk) self.assertEqual(history.latest_revision, 2)
def setup_basic_post_test(self, user, with_local_site, local_site_name, post_valid_data): review_request = self.create_review_request( with_local_site=with_local_site, submitter=user, publish=True) return (get_file_attachment_list_url(review_request, local_site_name), file_attachment_item_mimetype, { 'path': open(self.get_sample_image_filename(), 'rb') }, [review_request])
def setup_basic_post_test(self, user, with_local_site, local_site_name, post_valid_data): review_request = self.create_review_request(with_local_site=with_local_site, submitter=user, publish=True) return ( get_file_attachment_list_url(review_request, local_site_name), file_attachment_item_mimetype, {"path": open(self.get_sample_image_filename(), "r")}, [review_request], )
def setup_basic_post_test(self, user, with_local_site, local_site_name, post_valid_data): review_request = self.create_review_request( with_local_site=with_local_site, submitter=user, publish=True) return (get_file_attachment_list_url(review_request, local_site_name), file_attachment_item_mimetype, {'path': open(self._getTrophyFilename(), 'r')}, [review_request])
def test_post_with_attachment_history_id(self): """Testing the POST review-requests/<id>/file-attachments/ API with a file attachment history """ review_request = self.create_review_request(submitter=self.user, publish=True) history = FileAttachmentHistory.objects.create(display_position=0) review_request.file_attachment_histories.add(history) self.assertEqual(history.latest_revision, 0) with open(self.get_sample_image_filename(), "r") as f: self.assertTrue(f) rsp = self.api_post( get_file_attachment_list_url(review_request), {"path": f, "attachment_history": history.pk}, expected_mimetype=file_attachment_item_mimetype, ) self.assertEqual(rsp["stat"], "ok") self.assertEqual(rsp["file_attachment"]["attachment_history_id"], history.pk) history = FileAttachmentHistory.objects.get(pk=history.pk) self.assertEqual(history.latest_revision, 1) review_request.get_draft().publish() # Add a second revision f.seek(0) rsp = self.api_post( get_file_attachment_list_url(review_request), {"path": f, "attachment_history": history.pk}, expected_mimetype=file_attachment_item_mimetype, ) self.assertEqual(rsp["stat"], "ok") self.assertEqual(rsp["file_attachment"]["attachment_history_id"], history.pk) history = FileAttachmentHistory.objects.get(pk=history.pk) self.assertEqual(history.latest_revision, 2)
def test_post_file_attachments(self): """Testing the POST review-requests/<id>/file-attachments/ API""" review_request = self.create_review_request(submitter=self.user, publish=True) f = open(self._getTrophyFilename(), "r") self.assertNotEqual(f, None) rsp = self.apiPost( get_file_attachment_list_url(review_request), {"path": f}, expected_mimetype=file_attachment_item_mimetype ) f.close() self.assertEqual(rsp["stat"], "ok") review_request.publish(review_request.submitter)
def test_post_file_attachments_with_permission_denied_error(self): """Testing the POST review-requests/<id>/file-attachments/ API with Permission Denied error""" review_request = self.create_review_request() self.assertNotEqual(review_request.submitter, self.user) f = open(self._getTrophyFilename(), "r") self.assert_(f) rsp = self.apiPost( get_file_attachment_list_url(review_request), {"caption": "Trophy", "path": f}, expected_status=403 ) f.close() self.assertEqual(rsp["stat"], "fail") self.assertEqual(rsp["err"]["code"], PERMISSION_DENIED.code)
def test_post_not_owner(self): """Testing the POST review-requests/<id>/file-attachments/ API without owner """ review_request = self.create_review_request() self.assertNotEqual(review_request.submitter, self.user) with open(self.get_sample_image_filename(), "r") as f: self.assertTrue(f) rsp = self.api_post( get_file_attachment_list_url(review_request), {"caption": "logo", "path": f}, expected_status=403 ) self.assertEqual(rsp["stat"], "fail") self.assertEqual(rsp["err"]["code"], PERMISSION_DENIED.code)
def test_post_file_attachments_with_site(self): """Testing the POST review-requests/<id>/file-attachments/ API with a local site""" user = self._login_user(local_site=True) review_request = self.create_review_request(with_local_site=True, publish=True, submitter=user) f = open(self._getTrophyFilename(), "r") self.assertNotEqual(f, None) rsp = self.apiPost( get_file_attachment_list_url(review_request, self.local_site_name), {"path": f}, expected_mimetype=file_attachment_item_mimetype, ) f.close() self.assertEqual(rsp["stat"], "ok")
def test_post_file_attachments(self): """Testing the POST review-requests/<id>/file-attachments/ API""" review_request = self.create_review_request(submitter=self.user, publish=True) f = open(self._getTrophyFilename(), "r") self.assertNotEqual(f, None) rsp = self.apiPost( get_file_attachment_list_url(review_request), {'path': f}, expected_mimetype=file_attachment_item_mimetype) f.close() self.assertEqual(rsp['stat'], 'ok') review_request.publish(review_request.submitter)
def test_post_file_attachments_with_site(self): """Testing the POST review-requests/<id>/file-attachments/ API with a local site""" user = self._login_user(local_site=True) review_request = self.create_review_request(with_local_site=True, publish=True, submitter=user) f = open(self._getTrophyFilename(), 'r') self.assertNotEqual(f, None) rsp = self.apiPost( get_file_attachment_list_url(review_request, self.local_site_name), {'path': f}, expected_mimetype=file_attachment_item_mimetype) f.close() self.assertEqual(rsp['stat'], 'ok')
def test_post_not_owner(self): """Testing the POST review-requests/<id>/file-attachments/ API without owner """ review_request = self.create_review_request() self.assertNotEqual(review_request.submitter, self.user) with open(self.get_sample_image_filename(), 'rb') as f: self.assertTrue(f) rsp = self.api_post(get_file_attachment_list_url(review_request), { 'caption': 'logo', 'path': f, }, expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
def test_post_file_attachments_with_site_no_access(self): """Testing the POST review-requests/<id>/file-attachments/ API with a local site and Permission Denied error""" user = self._login_user(local_site=True) review_request = self.create_review_request(with_local_site=True, publish=True, submitter=user) self._login_user() f = open(self._getTrophyFilename(), "r") self.assertNotEqual(f, None) rsp = self.apiPost( get_file_attachment_list_url(review_request, self.local_site_name), {"path": f}, expected_status=403 ) f.close() self.assertEqual(rsp["stat"], "fail") self.assertEqual(rsp["err"]["code"], PERMISSION_DENIED.code)
def test_post_file_attachments_with_permission_denied_error(self): """Testing the POST review-requests/<id>/file-attachments/ API with Permission Denied error""" review_request = self.create_review_request() self.assertNotEqual(review_request.submitter, self.user) f = open(self._getTrophyFilename(), "r") self.assert_(f) rsp = self.apiPost( get_file_attachment_list_url(review_request), { 'caption': 'Trophy', 'path': f, }, expected_status=403) f.close() self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
def test_post_not_owner(self): """Testing the POST review-requests/<id>/file-attachments/ API without owner """ review_request = self.create_review_request() self.assertNotEqual(review_request.submitter, self.user) with open(self._getTrophyFilename(), "r") as f: self.assertTrue(f) rsp = self.api_post( get_file_attachment_list_url(review_request), { 'caption': 'Trophy', 'path': f, }, expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
def test_post_with_permission_denied_error(self): """Testing the POST review-requests/<id>/file-attachments/ API with Permission Denied error """ review_request = self.create_review_request() self.assertNotEqual(review_request.submitter, self.user) f = open(self._getTrophyFilename(), "r") self.assertTrue(f) rsp = self.apiPost( get_file_attachment_list_url(review_request), { 'caption': 'Trophy', 'path': f, }, expected_status=403) f.close() self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
def test_post_file_attachments_with_site_no_access(self): """Testing the POST review-requests/<id>/file-attachments/ API with a local site and Permission Denied error""" user = self._login_user(local_site=True) review_request = self.create_review_request(with_local_site=True, publish=True, submitter=user) self._login_user() f = open(self._getTrophyFilename(), 'r') self.assertNotEqual(f, None) rsp = self.apiPost( get_file_attachment_list_url(review_request, self.local_site_name), {'path': f}, expected_status=403) f.close() self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
def setup_basic_get_test(self, user, with_local_site, local_site_name, populate_items): review_request = self.create_review_request( create_repository=True, with_local_site=with_local_site, submitter=user) if populate_items: # This is the file attachment that should be returned. items = [ self.create_file_attachment(review_request, orig_filename='trophy1.png'), ] # This attachment shouldn't be shown in the results. It represents # a file to be shown in the diff viewer. self.create_file_attachment(review_request, orig_filename='trophy2.png', repo_path='/trophy.png', repo_revision='123', repository=review_request.repository) # This attachment shouldn't be shown either, for the same # reasons. diffset = self.create_diffset(review_request) filediff = self.create_filediff(diffset, source_file='/trophy3.png', dest_file='/trophy3.png', source_revision='123', dest_detail='124') self.create_file_attachment(review_request, orig_filename='trophy3.png', added_in_filediff=filediff) else: items = [] return (get_file_attachment_list_url(review_request, local_site_name), file_attachment_list_mimetype, items)
def test_get_file_attachments(self): """Testing the GET review-requests/<id>/file-attachments/ API""" review_request = self.create_review_request(create_repository=True, publish=True) # This is the file attachment that should be returned. self.create_file_attachment(review_request, orig_filename='trophy1.png') # This attachment shouldn't be shown in the results. It represents # a file to be shown in the diff viewer. self.create_file_attachment(review_request, orig_filename='trophy2.png', repo_path='/trophy.png', repo_revision='123', repository=review_request.repository) # This attachment shouldn't be shown either, for the same # reasons. diffset = self.create_diffset(review_request) filediff = self.create_filediff(diffset, source_file='/trophy3.png', dest_file='/trophy3.png', source_revision='123', dest_detail='124') self.create_file_attachment(review_request, orig_filename='trophy3.png', added_in_filediff=filediff) rsp = self.apiGet( get_file_attachment_list_url(review_request), expected_mimetype=file_attachment_list_mimetype) self.assertEqual(rsp['stat'], 'ok') file_attachments = rsp['file_attachments'] self.assertEqual(len(file_attachments), 1) self.assertEqual(file_attachments[0]['filename'], 'trophy1.png')
def setup_review_request_child_test(self, review_request): return (get_file_attachment_list_url(review_request), file_attachment_list_mimetype)