def test_put_screenshot(self):
        """Testing the PUT review-requests/<id>/draft/screenshots/<id>/ API"""
        draft_caption = 'The new caption'

        review_request = self.create_review_request(submitter=self.user,
                                                    publish=True)

        f = open(self._getTrophyFilename(), "r")
        rsp = self.apiPost(get_screenshot_draft_list_url(review_request), {
            'caption': 'Trophy',
            'path': f,
        },
                           expected_mimetype=screenshot_draft_item_mimetype)
        f.close()
        review_request.publish(self.user)

        screenshot = Screenshot.objects.get(pk=rsp['draft_screenshot']['id'])

        # Now modify the caption.
        rsp = self.apiPut(get_screenshot_draft_item_url(
            review_request, screenshot.id), {'caption': draft_caption},
                          expected_mimetype=screenshot_draft_item_mimetype)

        self.assertEqual(rsp['stat'], 'ok')

        draft = review_request.get_draft(self.user)
        self.assertNotEqual(draft, None)

        screenshot = Screenshot.objects.get(pk=screenshot.id)
        self.assertEqual(screenshot.draft_caption, draft_caption)
    def test_post_screenshots_with_site(self):
        """Testing the POST review-requests/<id>/draft/screenshots/ API with a local site"""
        self._login_user(local_site=True)

        review_request = self.create_review_request(with_local_site=True,
                                                    publish=True)

        f = open(self._getTrophyFilename(), 'r')

        post_data = {
            'path': f,
            'caption': 'Trophy',
        }

        rsp = self.apiPost(get_screenshot_draft_list_url(
            review_request, self.local_site_name),
                           post_data,
                           expected_mimetype=screenshot_draft_item_mimetype)
        f.close()

        self.assertEqual(rsp['stat'], 'ok')
        self.assertEqual(rsp['draft_screenshot']['caption'], 'Trophy')

        draft = review_request.get_draft(User.objects.get(username='******'))
        self.assertNotEqual(draft, None)

        return review_request, rsp['draft_screenshot']['id']
    def test_post_with_site(self):
        """Testing the POST review-requests/<id>/draft/screenshots/ API
        with a local site
        """
        self._login_user(local_site=True)

        review_request = self.create_review_request(with_local_site=True,
                                                    publish=True)

        f = open(self._getTrophyFilename(), 'r')

        post_data = {
            'path': f,
            'caption': 'Trophy',
        }

        rsp = self.apiPost(
            get_screenshot_draft_list_url(review_request,
                                          self.local_site_name),
            post_data,
            expected_mimetype=screenshot_draft_item_mimetype)
        f.close()

        self.assertEqual(rsp['stat'], 'ok')
        self.assertEqual(rsp['draft_screenshot']['caption'], 'Trophy')

        draft = review_request.get_draft(User.objects.get(username='******'))
        self.assertNotEqual(draft, None)

        return review_request, rsp['draft_screenshot']['id']
    def test_put(self):
        """Testing the PUT review-requests/<id>/draft/screenshots/<id>/ API"""
        draft_caption = 'The new caption'

        review_request = self.create_review_request(submitter=self.user,
                                                    publish=True)

        f = open(self._getTrophyFilename(), "r")
        rsp = self.apiPost(
            get_screenshot_draft_list_url(review_request),
            {
                'caption': 'Trophy',
                'path': f,
            },
            expected_mimetype=screenshot_draft_item_mimetype)
        f.close()
        review_request.publish(self.user)

        screenshot = Screenshot.objects.get(pk=rsp['draft_screenshot']['id'])

        # Now modify the caption.
        rsp = self.apiPut(
            get_screenshot_draft_item_url(review_request, screenshot.id),
            {'caption': draft_caption},
            expected_mimetype=screenshot_draft_item_mimetype)

        self.assertEqual(rsp['stat'], 'ok')

        draft = review_request.get_draft(self.user)
        self.assertNotEqual(draft, None)

        screenshot = Screenshot.objects.get(pk=screenshot.id)
        self.assertEqual(screenshot.draft_caption, draft_caption)
    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_screenshot_draft_list_url(review_request, local_site_name),
                screenshot_draft_item_mimetype, {
                    'caption': 'Trophy',
                    'path': open(self.get_sample_image_filename(), 'rb'),
                }, [review_request])
    def test_post_screenshots_with_site_no_access(self):
        """Testing the POST review-requests/<id>/draft/screenshots/ API with a local site and Permission Denied error"""
        review_request = self.create_review_request(with_local_site=True)

        f = open(self._getTrophyFilename(), 'r')
        rsp = self.apiPost(get_screenshot_draft_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_screenshots_with_site_no_access(self):
        """Testing the POST review-requests/<id>/draft/screenshots/ API with a local site and Permission Denied error"""
        review_request = self.create_review_request(with_local_site=True)

        f = open(self._getTrophyFilename(), 'r')
        rsp = self.apiPost(
            get_screenshot_draft_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_screenshots_with_permission_denied_error(self):
        """Testing the POST review-requests/<id>/draft/screenshots/ API with Permission Denied error"""
        review_request = self.create_review_request()
        self.assertNotEqual(review_request.submitter, self.user)

        f = open(self._getTrophyFilename(), "r")
        rsp = self.apiPost(get_screenshot_draft_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 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)

        if populate_items:
            items = [self.create_screenshot(review_request)]

            # The first screenshot will be automatically copied into the draft.
            ReviewRequestDraft.create(review_request)

            items.append(self.create_screenshot(review_request, draft=True))
        else:
            items = []

        return (get_screenshot_draft_list_url(review_request, local_site_name),
                screenshot_draft_list_mimetype, items)
예제 #10
0
    def test_post_screenshots_with_permission_denied_error(self):
        """Testing the POST review-requests/<id>/draft/screenshots/ API with Permission Denied error"""
        review_request = self.create_review_request()
        self.assertNotEqual(review_request.submitter, self.user)

        f = open(self._getTrophyFilename(), "r")
        rsp = self.apiPost(
            get_screenshot_draft_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 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)

        if populate_items:
            items = [self.create_screenshot(review_request)]

            # The first screenshot will be automatically copied into the draft.
            ReviewRequestDraft.create(review_request)

            items.append(self.create_screenshot(review_request, draft=True))
        else:
            items = []

        return (get_screenshot_draft_list_url(review_request, local_site_name),
                screenshot_draft_list_mimetype,
                items)