def show_input(self, template_helper, language, seed): translation = _translations.get(language, gettext.NullTranslations()) rand = Random("{}#{}#{}".format(language, self.get_id(), seed)) stream = [] trace = [(split_every_n(data.hex()), dissection) for data, dissection in self._trace] trace = list( enumerate( hide(redact(trace, self._redacted_fields), self._hidden_fields))) for i, p in trace: stream.append( (i, len(p[0]), get_summary(p[1]), 'incomplete' if i in self._hidden_fields else 'complete')) if self._shuffle: s = rand.getstate() rand.shuffle(stream) rand.setstate(s) rand.shuffle(trace) return str( DisplayableNetworkTraceProblem.get_renderer( template_helper).network_trace( self.get_id(), ParsableText.rst(self.gettext(language, self._header)), trace, stream, self._shuffle, type=type, tuple=tuple, gettext=translation.gettext))
def show_page(self, page): static_directory = self.app.static_directory language = self.user_manager.session_language() # Check for the file filename = None mtime = 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(filename, (0, None))[0] < mtime: with open(filename, "r") as f: INGIniousStaticPage.cache[filename] = mtime, custom_yaml.load( f) filecontent = INGIniousStaticPage.cache[filename][1] title = filecontent["title"] content = ParsableText.rst(filecontent["content"], initial_header_level=2) return self.template_helper.get_renderer().static(title, content)
def test_wrong_rst_injection(self): rendered = str( ParsableText.rst(""" makefail_ <script type="text/javascript">alert('Eh, XSS injection!');</script> """)) assert "<script type="text/javascript">" in rendered
def test_hidden_until_before_admin(self): assert "Something" in ParsableText.rst(""" .. hidden-until:: 22/05/2102 Something """, show_everything=True)
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)
def test_wrong_rst_injection(self): rendered = str(ParsableText.rst( """ makefail_ <script type="text/javascript">alert('Eh, XSS injection!');</script> """ )) assert "<script type="text/javascript">" in rendered
def show_input(self, template_helper, language, seed): translation = _translations.get(language, gettext.NullTranslations()) rand = Random("{}#{}#{}".format(language, self.get_id(), seed)) stream = [] trace = [(split_every_n(data.hex()), dissection) for data, dissection in self._trace] trace = list(enumerate(hide(redact(trace, self._redacted_fields), self._hidden_fields))) for i, p in trace: stream.append((i, len(p[0]), get_summary(p[1]), 'incomplete' if i in self._hidden_fields else 'complete')) if self._shuffle: s = rand.getstate() rand.shuffle(stream) rand.setstate(s) rand.shuffle(trace) return template_helper.render("network_trace.html", template_folder=_template_path, id=self.get_id(), header=ParsableText.rst(self.gettext(language, self._header)), trace=trace, stream=stream, shuffle=self._shuffle, gettext=translation.gettext, decode=decode, print_struct=print_struct, print_dissection=print_dissection)
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
def test_parsable_text_once(self): def fake_parser(string, show_everything=False, translation=None, initial_header_level=3, debug=False): 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
def test_unicode(self): rendered = str(ParsableText.rst("""``😁``""")) assert "<code" in rendered and "</code>" in rendered and "😁" in rendered
def test_code(self): rendered = ParsableText.rst("""``test``""") assert "<code" in rendered and "</code>" in rendered
def test_hidden_until_after(self): assert "Something" in ParsableText.rst(""" .. hidden-until:: 22/05/2002 Something """)
def test_hidden_until_before(self): assert "Something" not in ParsableText.rst(""" .. hidden-until:: 22/05/2102 Something """)