diff options
Diffstat (limited to 'test/monkeyfarmer.py')
-rw-r--r-- | test/monkeyfarmer.py | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/test/monkeyfarmer.py b/test/monkeyfarmer.py index 0bae027a2..cbd979cad 100644 --- a/test/monkeyfarmer.py +++ b/test/monkeyfarmer.py @@ -1,4 +1,4 @@ -# Copyright 2017, 2018 Daniel Silverstone <dsilvers@digital-scurf.org> +# Copyright 2017-2019 Daniel Silverstone <dsilvers@digital-scurf.org> # # This file is part of NetSurf, http://www.netsurf-browser.org/ # @@ -126,6 +126,7 @@ class Browser: self.farmer = MonkeyFarmer(monkey_cmd=monkey_cmd, online=self.on_monkey_line, quiet=quiet) self.windows = {} self.logins = {} + self.sslcerts = {} self.current_draw_target = None self.started = False self.stopped = False @@ -189,6 +190,18 @@ class Browser: if win.alive and win.ready: self.handle_ready_login(win) + def handle_SSLCERT(self, action, _lwin, winid, *args): + if action == "VERIFY": + new_win = SSLCertWindow(self, winid, *args) + self.sslcerts[winid] = new_win + self.handle_ready_sslcert(new_win) + else: + win = self.sslcerts.get(winid, None) + if win is None: + print(" Unknown ssl cert window id {}".format(winid)) + else: + win.handle(action, *args) + def handle_PLOT(self, *args): if self.current_draw_target is not None: self.current_draw_target.handle_plot(*args) @@ -208,6 +221,34 @@ class Browser: # Override this method to do useful stuff lwin.destroy() +class SSLCertWindow: + def __init__(self, browser, winid, _url, *url): + self.alive = True + self.browser = browser + self.winid = winid + self.url = " ".join(url) + + def handle(self, action, _str="STR", *rest): + content = " ".join(rest) + if action == "DESTROY": + self.alive = False + else: + raise AssertionError("Unknown action {} for sslcert window".format(action)) + + def _wait_dead(self): + while self.alive: + self.browser.farmer.loop(once=True) + + def go(self): + assert(self.alive) + self.browser.farmer.tell_monkey("SSLCERT GO {}".format(self.winid)) + self._wait_dead() + + def destroy(self): + assert(self.alive) + self.browser.farmer.tell_monkey("SSLCERT DESTROY {}".format(self.winid)) + self._wait_dead() + class LoginWindow: def __init__(self, browser, winid, _url, *url): self.alive = True @@ -493,6 +534,9 @@ if __name__ == '__main__': lwin.send_password("bar") lwin.go() + def handle_ready_sslcert(self, cwin): + cwin.destroy() + browser = FooBarLogin(quiet=True) win = browser.new_window() win.load_page("https://httpbin.org/basic-auth/foo/bar") |