summaryrefslogtreecommitdiff
path: root/test/monkeyfarmer.py
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2019-06-05 20:57:55 +0100
committerVincent Sanders <vince@kyllikki.org>2019-06-05 20:58:40 +0100
commit27ee92c8721f982b79432689dbcb5439bb4fadc2 (patch)
tree492577e1e6525278fb0a99d1ef4e2303ee6c485d /test/monkeyfarmer.py
parent3d80e825e1c77ece19c21ed1cc568049856a44de (diff)
downloadnetsurf-27ee92c8721f982b79432689dbcb5439bb4fadc2.tar.gz
netsurf-27ee92c8721f982b79432689dbcb5439bb4fadc2.tar.bz2
extend the monkey test tooling to cope with ssl certificate windows
Diffstat (limited to 'test/monkeyfarmer.py')
-rw-r--r--test/monkeyfarmer.py46
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")