diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/test_pathod.py | 48 | ||||
-rw-r--r-- | test/tutils.py | 8 |
2 files changed, 37 insertions, 19 deletions
diff --git a/test/test_pathod.py b/test/test_pathod.py index 55a5b32e..7d5f90b6 100644 --- a/test/test_pathod.py +++ b/test/test_pathod.py @@ -59,7 +59,7 @@ class TestNotAfterConnect(tutils.DaemonTests): ) def test_connect(self): - r = self.pathoc( + r, _ = self.pathoc( [r"get:'http://foo.com/p/202':da"], connect_to=("localhost", self.d.port) ) @@ -73,7 +73,8 @@ class TestCustomCert(tutils.DaemonTests): ) def test_connect(self): - r = self.pathoc([r"get:/p/202"])[0] + r, _ = self.pathoc([r"get:/p/202"]) + r = r[0] assert r.status_code == 202 assert r.sslinfo assert "test.com" in str(r.sslinfo.certchain[0].get_subject()) @@ -86,7 +87,8 @@ class TestSSLCN(tutils.DaemonTests): ) def test_connect(self): - r = self.pathoc([r"get:/p/202"])[0] + r, _ = self.pathoc([r"get:/p/202"]) + r = r[0] assert r.status_code == 202 assert r.sslinfo assert r.sslinfo.certchain[0].get_subject().CN == "foo.com" @@ -131,8 +133,8 @@ class CommonTests(tutils.DaemonTests): assert "too large" in l["response"]["msg"] def test_preline(self): - r = self.pathoc([r"get:'/p/200':i0,'\r\n'"])[0] - assert r.status_code == 200 + r, _ = self.pathoc([r"get:'/p/200':i0,'\r\n'"]) + assert r[0].status_code == 200 def test_info(self): assert tuple(self.d.info()["version"]) == version.IVERSION @@ -199,31 +201,43 @@ class CommonTests(tutils.DaemonTests): assert "File access denied" in rsp.content def test_proxy(self): - r = self.pathoc([r"get:'http://foo.com/p/202':da"])[0] - assert r.status_code == 202 + r, _ = self.pathoc([r"get:'http://foo.com/p/202':da"]) + assert r[0].status_code == 202 def test_websocket(self): - r = self.pathoc(["ws:/p/"], ws_read_limit=0)[0] - assert r.status_code == 101 + r, _ = self.pathoc(["ws:/p/"], ws_read_limit=0) + assert r[0].status_code == 101 - r = self.pathoc(["ws:/p/ws"], ws_read_limit=0)[0] - assert r.status_code == 101 + r, _ = self.pathoc(["ws:/p/ws"], ws_read_limit=0) + assert r[0].status_code == 101 def test_websocket_frame(self): - r = self.pathoc(["ws:/p/", "wf:f'wf:b\"test\"'"], ws_read_limit=1) + r, _ = self.pathoc(["ws:/p/", "wf:f'wf:b\"test\"'"], ws_read_limit=1) assert r[1].payload == "test" + def test_websocket_frame_reflect_error(self): + r, _ = self.pathoc( + ["ws:/p/", "wf:-mask:knone:f'wf:b@10':i13,'a'"], + ws_read_limit = 1, + timeout = 1 + ) + assert "Parse error" in self.d.text_log() + + def test_websocket_frame_disconnect_error(self): + self.pathoc(["ws:/p/", "wf:b@10:d3"], ws_read_limit=0) + assert self.d.last_log() + class TestDaemon(CommonTests): ssl = False def test_connect(self): - r = self.pathoc( + r, _ = self.pathoc( [r"get:'http://foo.com/p/202':da"], connect_to=("localhost", self.d.port), ssl=True - )[0] - assert r.status_code == 202 + ) + assert r[0].status_code == 202 def test_connect_err(self): tutils.raises( @@ -249,6 +263,6 @@ class TestDaemonSSL(CommonTests): assert "SSL" in l["msg"] def test_ssl_cipher(self): - r = self.pathoc([r"get:/p/202"])[0] - assert r.status_code == 202 + r, _ = self.pathoc([r"get:/p/202"]) + assert r[0].status_code == 202 assert self.d.last_log()["cipher"][1] > 0 diff --git a/test/tutils.py b/test/tutils.py index 1e33dfe7..5988e846 100644 --- a/test/tutils.py +++ b/test/tutils.py @@ -75,13 +75,17 @@ class DaemonTests(object): ssl=None, ws_read_limit=None ): + """ + Returns a (messages, text log) tuple. + """ if ssl is None: ssl = self.ssl + logfp = cStringIO.StringIO() c = pathoc.Pathoc( ("localhost", self.d.port), ssl=ssl, ws_read_limit=ws_read_limit, - fp = None + fp = logfp ) c.connect(connect_to) if timeout: @@ -93,7 +97,7 @@ class DaemonTests(object): ret.append(resp) for frm in c.wait(): ret.append(frm) - return ret + return ret, logfp.getvalue() @contextmanager def tmpdir(*args, **kwargs): |