Пример #1
0
class GetByUrlPathTestCase(ContentAPIBaseTestCase):
    """
    Tests getting a page by its path.
    """
    def setUp(self):
        super().setUp()
        self.page = ConditionPageFactory(title='Page')

    def test_get(self):
        """
        Tests that getting a page by its path returns 200 if it exists.
        """
        response = self.get_content_api_response(page_path='conditions/page/')
        self.assertEqual(response.status_code, 200)
        content = response.json()

        self.assertEqual(content['title'], self.page.title)
        self.assertEqual(content['id'], self.page.id)

    def test_404_if_url_doesnt_exist(self):
        """
        Tests that trying to get a page by an invalid page returns 404
        """
        response = self.get_content_api_response(page_path='invalid/')
        self.assertEqual(response.status_code, 404)

    def test_404_if_not_live(self):
        """
        Tests that trying to get a page that is not live returns 404
        """
        self.page.live = False
        self.page.save()

        response = self.get_content_api_response(page_path='conditions/page/')
        self.assertEqual(response.status_code, 404)
class LivePagesTestCase(TestCase):
    def setUp(self):
        super().setUp()

        self.page = ConditionPageFactory(title='Page')
        self.request = self.get_request(Site.objects.first())

    def get_request(self, site):
        request = self.client.get('/test/', HTTP_HOST=site.hostname)
        request.site = site
        return request

    @override_settings(FRONTEND_BASE_URL=TEST_FRONTEND_BASE_URL)
    def test_live_page_redirects_to_frontend(self):
        """
        Tests that the url /<page-url>/ redirects to <frontend-url>/<page-url>/ where
            frontend-url == settings.FRONTEND_BASE_URL
        if the page is live
        """
        response = self.client.get(self.page.full_url)
        expected_url = '{}{}'.format(TEST_FRONTEND_BASE_URL, self.page.url)
        self.assertRedirects(response, expected_url, target_status_code=302)

    def test_non_live_page_404s(self):
        """
        Tests that the url /<page-url>/ returns 404 if the page is not live
        """
        self.page.live = False
        self.page.save()

        response = self.client.get(self.page.full_url)
        self.assertEqual(response.status_code, 404)

    def test_non_existing_page_404s(self):
        """
        Tests that if the invalid urls return 404
        """
        invalid_url = '{}invalid/'.format(self.page.full_url)
        response = self.client.get(invalid_url)
        self.assertEqual(response.status_code, 404)

    @override_settings(FRONTEND_BASE_URL='')
    def test_placeholder_response_with_empty_settings(self):
        """
        Tests that the url /<page-url>/ returns a placeholder string
        if settings.FRONTEND_BASE_URL has not been set
        """
        response = self.client.get(self.page.full_url)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.content,
                         b'Please set FRONTEND_BASE_URL in your settings.py')
Пример #3
0
class PreviewPagesTestCase(ContentAPIBaseTestCase):
    """
    Tests getting the content of a page by its revision id.
    """
    def setUp(self):
        super().setUp()
        self.page = ConditionPageFactory(title='Page')

    def test_get_by_revision_x(self):
        """
        Tests that getting a page by its revision id returns the related content, not the live one.
        """

        # save some revisions
        revision_data = []
        for change_number in range(1, 3):
            self.page.title = 'Page change {}'.format(change_number)
            self.page.save()
            revision = self.page.save_revision()
            revision_data.append((revision.id, self.page.title))

        # get those versions and check that page.title == saved title
        for revision_id, page_title in revision_data:
            response = self.get_preview_content_api_response(
                self.page.id, revision_id=revision_id)
            content = response.json()
            self.assertEqual(response.status_code, 200)
            self.assertEqual(content['title'], page_title)

    def test_404_if_revision_doesnt_exist(self):
        """
        Tests that trying to get a page by an invalid revision returns 404.
        """
        # save a few revisions
        for change_number in range(1, 3):
            self.page.title = 'Page change {}'.format(change_number)
            self.page.save()
            self.page.save_revision()

        # get invalid revision id (last id + 1)
        revision_id = PageRevision.objects.order_by('-id')[0].id + 1

        response = self.get_preview_content_api_response(
            self.page.id, revision_id=revision_id)
        self.assertEqual(response.status_code, 404)

    def test_get_defaults_to_latest_revision(self):
        """
        Tests that getting a page without specifying a revision id returns the latest version.
        """
        # save some revisions
        latest_title = self.page.title
        for change_number in range(1, 3):
            self.page.title = 'Page change {}'.format(change_number)
            self.page.save()
            self.page.save_revision()
            latest_title = self.page.title

        # check that returned content.title == latest title
        response = self.get_preview_content_api_response(self.page.id)
        content = response.json()
        self.assertEqual(response.status_code, 200)
        self.assertEqual(content['title'], latest_title)