def test_get_with_site_no_access(self):
        """Testing the
        GET review-requests/<id>/file-attachments/<id>/comments/ API
        with a local site and Permission Denied error
        """
        user = self._login_user(local_site=True)

        # Post the review request.
        review_request = self.create_review_request(submitter=user,
                                                    with_local_site=True,
                                                    publish=True)
        file_attachment = self.create_file_attachment(review_request)

        # Post the review.
        review = self.create_review(review_request, user=user)
        self.create_file_attachment_comment(review, file_attachment)

        # Switch users.
        self._login_user()

        rsp = self.apiGet(
            get_file_attachment_comment_list_url(file_attachment,
                                                 self.local_site_name),
            expected_status=403)
        self.assertEqual(rsp['stat'], 'fail')
        self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
    def test_get(self):
        """Testing the
        GET review-requests/<id>/file-attachments/<id>/comments/ API
        """
        comment_text = "This is a test comment."

        # Post the review request.
        review_request = self.create_review_request(submitter=self.user,
                                                    publish=True)
        file_attachment = self.create_file_attachment(review_request)

        # Post the review.
        review = self.create_review(review_request, user=self.user)

        self._postNewFileAttachmentComment(review_request, review.id,
                                           file_attachment, comment_text)

        rsp = self.apiGet(
            get_file_attachment_comment_list_url(file_attachment),
            expected_mimetype=file_attachment_comment_list_mimetype)
        self.assertEqual(rsp['stat'], 'ok')

        comments = FileAttachmentComment.objects.filter(
            file_attachment=file_attachment)
        rsp_comments = rsp['file_attachment_comments']
        self.assertEqual(len(rsp_comments), comments.count())

        for i in range(0, len(comments)):
            self.assertEqual(rsp_comments[i]['text'], comments[i].text)
    def test_get_with_site(self):
        """Testing the
        GET review-requests/<id>/file-attachments/<id>/comments/ API
        with a local site
        """
        user = self._login_user(local_site=True)

        # Post the review request.
        review_request = self.create_review_request(submitter=user,
                                                    with_local_site=True,
                                                    publish=True)
        file_attachment = self.create_file_attachment(review_request)

        # Post the review.
        review = self.create_review(review_request, user=user, publish=True)
        comment = self.create_file_attachment_comment(review, file_attachment)

        rsp = self.apiGet(
            get_file_attachment_comment_list_url(file_attachment,
                                                 self.local_site_name),
            expected_mimetype=file_attachment_comment_list_mimetype)
        self.assertEqual(rsp['stat'], 'ok')

        rsp_comments = rsp['file_attachment_comments']
        self.assertEqual(len(rsp_comments), 1)
        self.assertEqual(rsp_comments[0]['text'], comment.text)
    def test_get_file_attachment_comments(self):
        """Testing the GET review-requests/<id>/file-attachments/<id>/comments/ API"""
        comment_text = "This is a test comment."

        # Post the review request.
        review_request = self.create_review_request(create_repository=True,
                                                    submitter=self.user,
                                                    publish=True)
        file_attachment = self.create_file_attachment(review_request)

        # Post the review.
        review = self.create_review(review_request, user=self.user)

        self._postNewFileAttachmentComment(review_request, review.id,
                                           file_attachment, comment_text)

        rsp = self.apiGet(
            get_file_attachment_comment_list_url(file_attachment),
            expected_mimetype=file_attachment_comment_list_mimetype)
        self.assertEqual(rsp['stat'], 'ok')

        comments = FileAttachmentComment.objects.filter(
            file_attachment=file_attachment)
        rsp_comments = rsp['file_attachment_comments']
        self.assertEqual(len(rsp_comments), comments.count())

        for i in range(0, len(comments)):
            self.assertEqual(rsp_comments[i]['text'], comments[i].text)
    def setup_basic_get_test(self, user, with_local_site, local_site_name,
                             populate_items):
        review_request = self.create_review_request(
            with_local_site=with_local_site, submitter=user, publish=True)
        file_attachment = self.create_file_attachment(review_request)

        if populate_items:
            review = self.create_review(review_request, publish=True)
            items = [
                self.create_file_attachment_comment(review, file_attachment),
            ]
        else:
            items = []

        return (get_file_attachment_comment_list_url(file_attachment,
                                                     local_site_name),
                file_attachment_comment_list_mimetype, items)
    def setup_basic_get_test(self, user, with_local_site, local_site_name,
                             populate_items):
        review_request = self.create_review_request(
            with_local_site=with_local_site,
            submitter=user,
            publish=True)
        file_attachment = self.create_file_attachment(review_request)

        if populate_items:
            review = self.create_review(review_request, publish=True)
            items = [
                self.create_file_attachment_comment(review, file_attachment),
            ]
        else:
            items = []

        return (get_file_attachment_comment_list_url(file_attachment,
                                                     local_site_name),
                file_attachment_comment_list_mimetype,
                items)
    def test_get_file_attachment_comments_with_site_no_access(self):
        """Testing the GET review-requests/<id>/file-attachments/<id>/comments/ API with a local site and Permission Denied error"""
        user = self._login_user(local_site=True)

        # Post the review request.
        review_request = self.create_review_request(create_repository=True,
                                                    submitter=user,
                                                    with_local_site=True,
                                                    publish=True)
        file_attachment = self.create_file_attachment(review_request)

        # Post the review.
        review = self.create_review(review_request, user=user)
        self.create_file_attachment_comment(review, file_attachment)

        # Switch users.
        self._login_user()

        rsp = self.apiGet(get_file_attachment_comment_list_url(
            file_attachment, self.local_site_name),
                          expected_status=403)
        self.assertEqual(rsp['stat'], 'fail')
        self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
    def test_get_file_attachment_comments_with_site(self):
        """Testing the GET review-requests/<id>/file-attachments/<id>/comments/ API with a local site"""
        user = self._login_user(local_site=True)

        # Post the review request.
        review_request = self.create_review_request(create_repository=True,
                                                    submitter=user,
                                                    with_local_site=True,
                                                    publish=True)
        file_attachment = self.create_file_attachment(review_request)

        # Post the review.
        review = self.create_review(review_request, user=user, publish=True)
        comment = self.create_file_attachment_comment(review, file_attachment)

        rsp = self.apiGet(
            get_file_attachment_comment_list_url(file_attachment,
                                                 self.local_site_name),
            expected_mimetype=file_attachment_comment_list_mimetype)
        self.assertEqual(rsp['stat'], 'ok')

        rsp_comments = rsp['file_attachment_comments']
        self.assertEqual(len(rsp_comments), 1)
        self.assertEqual(rsp_comments[0]['text'], comment.text)
    def setup_http_not_allowed_list_test(self, user):
        review_request = self.create_review_request(submitter=user,
                                                    publish=True)
        file_attachment = self.create_file_attachment(review_request)

        return get_file_attachment_comment_list_url(file_attachment)
    def setup_review_request_child_test(self, review_request):
        file_attachment = self.create_file_attachment(review_request)

        return (get_file_attachment_comment_list_url(file_attachment),
                file_attachment_comment_list_mimetype)
    def setup_http_not_allowed_list_test(self, user):
        review_request = self.create_review_request(submitter=user,
                                                    publish=True)
        file_attachment = self.create_file_attachment(review_request)

        return get_file_attachment_comment_list_url(file_attachment)
    def setup_review_request_child_test(self, review_request):
        file_attachment = self.create_file_attachment(review_request)

        return (get_file_attachment_comment_list_url(file_attachment),
                file_attachment_comment_list_mimetype)