示例#1
0
class TestDiscourseAPI(VCRTestCase):
    def _get_vcr_kwargs(self):
        """
        This removes the authorization header
        from VCR so we don't record auth parameters
        """
        return {"filter_headers": ["Authorization"]}

    def setUp(self):
        """
        Set up Flask app with Discourse extension for testing
        And set up mocking for discourse.example.com
        """
        this_dir = os.path.dirname(os.path.realpath(__file__))
        template_folder = f"{this_dir}/fixtures/templates/engage.html"
        app = flask.Flask("main", template_folder=template_folder)
        self.discourse_api = DiscourseAPI(
            base_url="https://discourse.ubuntu.com/",
            session=requests.Session(),
            api_key="secretkey",
            api_username="******",
        )
        self.parser = EngageParser(
            api=self.discourse_api,
            index_topic_id=17229,
            url_prefix="/engage",
        )

        app = flask.Flask("main", template_folder=template_folder)
        self.client = app.test_client()
        return super(TestDiscourseAPI, self).setUp()

    def test_get_topic(self):
        """
        Check API retrieves a protected topic 17275
        """
        response = self.discourse_api.get_topic(17275)
        # # Check for success
        self.assertEqual(response["id"], 17275)
示例#2
0
class TestDiscourseAPI(VCRTestCase):
    def _get_vcr_kwargs(self):
        """
        This removes the authorization header
        from VCR so we don't record auth parameters
        """
        return {"filter_headers": ["Authorization"]}

    def setUp(self):
        app = flask.Flask("test-app")
        app.url_map.strict_slashes = False
        app.template_folder = f"{this_dir}/fixtures/templates"
        app.testing = True

        self.discourse_api = DiscourseAPI(
            base_url="https://discourse.ubuntu.com/",
            session=requests.Session(),
        )
        self.engage_pages = EngagePages(
            parser=EngageParser(
                api=self.discourse_api,
                index_topic_id=17229,
                url_prefix="/engage",
            ),
            document_template="/engage.html",
            url_prefix="/engage",
            blueprint_name="engage-pages",
        ).init_app(app)

        self.client = app.test_client()
        return super().setUp()

    def test_get_topic(self):
        response = self.discourse_api.get_topic(17275)

        self.assertEqual(response["id"], 17275)

    def test_active_page_returns_200(self):
        response = self.client.get("/engage/finance")
        self.assertEqual(response.status_code, 200)

        soup = BeautifulSoup(response.data, "html.parser")
        self.assertIsNone(soup.find("meta"))

    def test_active_page_returns_adds_no_meta_with_preview_flag(self):
        response = self.client.get("/engage/finance?preview")
        self.assertEqual(response.status_code, 200)

        soup = BeautifulSoup(response.data, "html.parser")
        self.assertIsNone(soup.find("meta"))

    def test_inactive_page_returns_302(self):
        response = self.client.get("/engage/it/deployment-azienda-manuale")
        self.assertEqual(response.status_code, 302)

    def test_inactive_page_returns_page_with_preview_flag(self):
        response = self.client.get(
            "/engage/it/deployment-azienda-manuale?preview")
        self.assertEqual(response.status_code, 200)

        soup = BeautifulSoup(response.data, "html.parser")
        self.assertIsNotNone(soup.find("meta"))
        self.assertEqual(soup.find("meta").get("content"), "nofollow")