Example #1
0
    def test_failing_parser_injection(self):
        def fake_parser(input):
            raise Exception()

        fake_parser.count = 0
        orig_rst = ParsableText.rst
        ParsableText.rst = fake_parser

        pt = ParsableText("""<script type="text/javascript">alert('Eh, XSS injection!');</script>""")
        rendered = pt.parse()

        ParsableText.rst = orig_rst

        assert "&lt;script " in rendered
Example #2
0
    def show_page(self, page):
        static_directory = self.app.static_directory
        language = self.user_manager.session_language()

        # Check for the file
        filename = None
        filepaths = [os.path.join(static_directory, page + ".yaml"),
                     os.path.join(static_directory, page + "." + language + ".yaml")]

        for filepath in filepaths:
            if os.path.exists(filepath):
                filename = filepath
                mtime = os.stat(filepath).st_mtime

        if not filename:
            raise web.notfound()

        # Check and update cache
        if INGIniousStaticPage.cache.get(filepath, (0, None))[0] < mtime:
            with open(filename, "r") as f:
                INGIniousStaticPage.cache[filepath] = mtime, custom_yaml.load(f)

        filecontent = INGIniousStaticPage.cache[filepath][1]
        title = filecontent["title"]
        content = ParsableText.rst(filecontent["content"], initial_header_level=2)

        return self.template_helper.get_renderer().static(title, content)
Example #3
0
 def test_wrong_rst_injection(self):
     rendered = str(ParsableText.rst(
         """
         makefail_
         <script type="text/javascript">alert('Eh, XSS injection!');</script>
         """
     ))
     assert "&lt;script type=&quot;text/javascript&quot;&gt;" in rendered
Example #4
0
    def test_parsable_text_once(self):
        def fake_parser(input, language, show_everything):
            fake_parser.count += 1
            return ""

        fake_parser.count = 0
        orig_rst = ParsableText.rst
        ParsableText.rst = fake_parser

        pt = ParsableText("""``test``""", "rst")
        pt.rst = fake_parser

        pt.parse()
        str(pt)
        str(pt)

        ParsableText.rst = orig_rst

        assert fake_parser.count == 1
Example #5
0
 def show(self, renderer, language):
     """ Show TextBox """
     return str(renderer.tasks.box_text(ParsableText(self._content, "rst", translation=self._translations[language])))
 def get_context(self, language):
     """ Get the context(description) of this task """
     context = self.gettext(language, self._context) if self._context else ""
     vals = self._plugin_manager.call_hook('task_context', course=self.get_course(), task=self, default=context)
     return ParsableText(vals[0], "rst", translation=self.get_translation_obj(language)) if len(vals) \
         else ParsableText(context, "rst", translation=self.get_translation_obj(language))
Example #7
0
    def test_hidden_until_before_admin(self):
        assert "Something" in ParsableText.rst("""
            .. hidden-until:: 22/05/2102

                Something
            """, show_everything=True)
Example #8
0
    def test_hidden_until_after(self):
        assert "Something" in ParsableText.rst("""
        .. hidden-until:: 22/05/2002

            Something
        """)
Example #9
0
 def test_unicode(self):
     rendered = str(ParsableText.rst("""``😁``"""))
     assert "<code" in rendered and "</code>" in rendered and "😁" in rendered
Example #10
0
 def get_context(self, language):
     """ Get the context(description) of this task """
     context = self.gettext(language, self._context) if self._context else ""
     vals = self._hook_manager.call_hook('task_context', course=self.get_course(), task=self, default=context)
     return ParsableText(vals[0], "rst", self._translations.get(language, gettext.NullTranslations())) if len(vals) else \
         ParsableText(context, "rst", self._translations.get(language, gettext.NullTranslations()))
Example #11
0
 def show_input(self, template_helper, language, seed):
     """ Show InputBox """
     header = ParsableText(self.gettext(language, self._header), "rst",
                           translation=self.get_translation_obj(language))
     return template_helper.render("tasks/single_line_code.html", inputId=self.get_id(), header=header, type="text",
                                   maxChars=0, optional=self._optional, default=self._default)
Example #12
0
 def test_html_tidy(self):
     rendered = ParsableText.html('<non existing tag></...>')
     assert '<non existing tag>' not in rendered
Example #13
0
 def test_unicode(self):
     rendered = str(ParsableText.rst("""``😁``"""))
     assert "<code" in rendered and "</code>" in rendered and "😁" in rendered
Example #14
0
 def show_input(self, template_helper, language, seed):
     """ Show InputBox """
     header = ParsableText(self.gettext(language, self._header), "rst",
                           translation=self._translations.get(language, gettext.NullTranslations()))
     return str(DisplayableCodeSingleLineProblem.get_renderer(template_helper)
                .tasks.single_line_code(self.get_id(), header, "text", 0, self._optional))
Example #15
0
    def test_hidden_until_after(self):
        assert "Something" in ParsableText.rst("""
        .. hidden-until:: 22/05/2002

            Something
        """)
Example #16
0
 def show_input(self, template_helper, language, seed):
     """ Show MatchProblem """
     header = ParsableText(self.gettext(language, self._header), "rst",
                           translation=self.get_translation_obj(language))
     return template_helper.render("tasks/match.html", inputId=self.get_id(), header=header)
Example #17
0
    def test_hidden_until_before(self):
        assert "Something" not in ParsableText.rst("""
        .. hidden-until:: 22/05/2102

            Something
        """)
Example #18
0
 def get_section_description(self, language, section_id):
     """ Returns the skills for the section section_id of the template """
     description = self._template_content.get("structure_description", {}).get(section_id,
                                                                               "No description available.")
     return ParsableText(self.gettext(language, description), "rst", translation=self.get_translation_obj(language))
Example #19
0
    def test_hidden_until_before_admin(self):
        assert "Something" in ParsableText.rst("""
            .. hidden-until:: 22/05/2102

                Something
            """, show_everything=True)
Example #20
0
 def parse_rst(self, s):
     parser = ParsableText(s)
     return str(parser)
Example #21
0
 def test_code(self):
     rendered = ParsableText.rst("""``test``""")
     assert "<code" in rendered and "</code>" in rendered
Example #22
0
 def test_html_tidy(self):
     rendered = ParsableText.html('<non existing tag></...>')
     assert '<non existing tag>' not in rendered
Example #23
0
 def show_input(self, template_helper, language, seed):
     """ Show FileBox """
     header = ParsableText(self.gettext(language, self._header), "rst",
                           translation=self._translations.get(language, gettext.NullTranslations()))
     return str(DisplayableFileProblem.get_renderer(template_helper).tasks.file(self.get_id(), header, self._max_size, self._allowed_exts, json))
Example #24
0
    def test_hidden_until_before(self):
        assert "Something" not in ParsableText.rst("""
        .. hidden-until:: 22/05/2102

            Something
        """)
Example #25
0
 def show_input(self, template_helper, language, seed):
     """ Show MatchProblem """
     header = ParsableText(self.gettext(language, self._header), "rst",
                           translation=self._translations.get(language, gettext.NullTranslations()))
     return str(DisplayableMatchProblem.get_renderer(template_helper).tasks.match(self.get_id(), header))
Example #26
0
 def test_code(self):
     rendered = ParsableText.rst("""``test``""")
     assert "<code" in rendered and "</code>" in rendered
Example #27
0
 def show_input(self, template_helper, language, seed):
     """ Show BasicCodeProblem and derivatives """
     header = ParsableText(self.gettext(language,self._header), "rst",
                           translation=self._translations.get(language, gettext.NullTranslations()))
     return str(DisplayableCodeProblem.get_renderer(template_helper).tasks.code(self.get_id(), header, 8, 0, self._language, self._optional))
Example #28
0
 def get_description(self, language):
     """Returns the course description """
     description = self.gettext(language, self._description) if self._description else ''
     return ParsableText(description, "rst", translation=self.get_translation_obj(language))
Example #29
0
    def parse_rst_content(self, content):

        if content is None:
            return content
        parse_content = ParsableText(content, "rst").parse()
        return parse_content