def test_parse_err(self): tutils.raises(language.ParseException, language.parse_response, {}, "400:msg,b:") try: language.parse_response({}, "400'msg':b:") except language.ParseException, v: assert v.marked() assert str(v)
def test_length(self): def testlen(x): s = cStringIO.StringIO() language.serve(x, s, {}) assert x.length({}) == len(s.getvalue()) testlen(language.parse_response({}, "400:m'msg':r")) testlen(language.parse_response({}, "400:m'msg':h'foo'='bar':r")) testlen(language.parse_response({}, "400:m'msg':h'foo'='bar':b@100b:r"))
def test_parse_response(self): a = language.parse_response({}, "400:ir,@100").actions[0] assert a.offset == "r" assert a.value.datatype == "bytes" assert a.value.usize == 100 a = language.parse_response({}, "400:ia,@100").actions[0] assert a.offset == "a"
def test_length(self): def testlen(x): s = cStringIO.StringIO() language.serve(x, s, language.Settings()) assert x.length(language.Settings()) == len(s.getvalue()) testlen(language.parse_response("400:m'msg':r")) testlen(language.parse_response("400:m'msg':h'foo'='bar':r")) testlen(language.parse_response("400:m'msg':h'foo'='bar':b@100b:r"))
def test_render(self): s = cStringIO.StringIO() r = language.parse_response("400:m'msg'") assert language.serve(r, s, {}) r = language.parse_response("400:p0,100:dr") assert "p0" in r.spec() s = r.preview_safe() assert "p0" not in s.spec()
def test_shortcuts(self): assert language.parse_response( {}, "400:c'foo'").headers[0].key.val == "Content-Type" assert language.parse_response( {}, "400:l'foo'").headers[0].key.val == "Location" assert 'Android' in language.parse_request( {}, "get:/:ua").headers[0].value.val assert language.parse_request( {}, "get:/:ua").headers[0].key.val == "User-Agent"
def test_raw(self): s = cStringIO.StringIO() r = language.parse_response("400:b'foo'") language.serve(r, s, {}) v = s.getvalue() assert "Content-Length" in v s = cStringIO.StringIO() r = language.parse_response("400:b'foo':r") language.serve(r, s, {}) v = s.getvalue() assert "Content-Length" not in v
def test_write_values_after(self): s = cStringIO.StringIO() r = language.parse_response({}, "400:da") language.serve(r, s, {}) s = cStringIO.StringIO() r = language.parse_response({}, "400:pa,0") language.serve(r, s, {}) s = cStringIO.StringIO() r = language.parse_response({}, "400:ia,'xx'") language.serve(r, s, {}) assert s.getvalue().endswith('xx')
def test_response(self): r = language.parse_response({}, "400:m'msg'") assert r.code.string() == "400" assert r.reason.string() == "msg" r = language.parse_response({}, "400:m'msg':b@100b") assert r.reason.string() == "msg" assert r.body.values({}) assert str(r) r = language.parse_response({}, "200") assert r.code.string() == "200" assert not r.reason assert "OK" in [i[:] for i in r.preamble({})]
def test_maximum_length(self): def testlen(x): s = cStringIO.StringIO() m = x.maximum_length({}) language.serve(x, s, {}) assert m >= len(s.getvalue()) r = language.parse_response({}, "400:m'msg':b@100:d0") testlen(r) r = language.parse_response({}, "400:m'msg':b@100:d0:i0,'foo'") testlen(r) r = language.parse_response({}, "400:m'msg':b@100:d0:i0,'foo'") testlen(r)
def test_parse_stress(self): # While larger values are known to work on linux, len() technically # returns an int and a python 2.7 int on windows has 32bit precision. # Therefore, we should keep the body length < 2147483647 bytes in our # tests. r = language.parse_response("400:b@1g") assert r.length({})
def setUpAll(self): self.d = test.Daemon( ssl = self.ssl, ssloptions = self.ssloptions, staticdir = tutils.test_data.path("data"), anchors = [ (re.compile("/anchor/.*"), language.parse_response("202")) ] )
def setUpAll(klass): opts = klass.ssloptions or {} klass.confdir = tempfile.mkdtemp() opts["confdir"] = klass.confdir so = pathod.SSLOptions(**opts) klass.d = test.Daemon( staticdir=test_data.path("data"), anchors=[ (re.compile("/anchor/.*"), language.parse_response("202:da")) ], ssl = klass.ssl, ssloptions = so, sizelimit = 1*1024*1024, noweb = klass.noweb, noapi = klass.noapi, nohang = klass.nohang, timeout = klass.timeout, hexdump = klass.hexdump, logreq = True, logresp = True, explain = True )
def test_parse_response(self): a = language.parse_response({}, "400:d0").actions[0] assert a.spec() == "d0" a = language.parse_response({}, "400:dr").actions[0] assert a.spec() == "dr"
def test_shortcuts(self): assert language.parse_response({}, "400:c'foo'").headers[0].key.val == "Content-Type" assert language.parse_response({}, "400:l'foo'").headers[0].key.val == "Location" assert 'Android' in language.parse_request({}, "get:/:ua").headers[0].value.val assert language.parse_request({}, "get:/:ua").headers[0].key.val == "User-Agent"
def rt(s): s = language.parse_response({}, s).spec() assert language.parse_response({}, s).spec() == s
def test_file(self): p = tutils.test_data.path("data") d = dict(staticdir=p) r = language.parse_response(d, "+response") assert r.code.string() == "202"
def dummy_response(self): return language.parse_response({}, "400'msg'")
def test_request(self): r = language.parse_response({}, '400:p10,10') assert r.actions[0].spec() == "p10,10"
def test_parse_pause_random(self): r = language.parse_response({}, "400:pr,10") assert r.actions[0].spec() == "pr,10"
def test_parse_pause_before(self): r = language.parse_response({}, "400:p0,10") assert r.actions[0].spec() == "p0,10"
def test_serve(self): s = cStringIO.StringIO() r = language.parse_response({}, "400:i0,'foo'") assert language.serve(r, s, {})
def test_render(self): s = cStringIO.StringIO() r = language.parse_response({}, "400:m'msg'") assert language.serve(r, s, {})
def test_parse_pause_after(self): r = language.parse_response({}, "400:pa,10") assert r.actions[0].spec() == "pa,10"
def test_websockets(self): r = language.parse_response("ws") tutils.raises("no websocket key", r.resolve, language.Settings()) res = r.resolve(language.Settings(websocket_key="foo")) assert res.code.string() == "101"
def test_parse_stress(self): r = language.parse_response({}, "400:b@100g") assert r.length({})
def test_render(self): r = language.parse_response({}, "400:p0,100:dr") assert "p0" in r.spec() s = r.preview_safe() assert not "p0" in s.spec()
def test_parse_header(self): r = language.parse_response({}, '400:h"foo"="bar"') assert utils.get_header("foo", r.headers)
def setUpAll(self): self.d = test.Daemon(ssl=self.ssl, ssloptions=self.ssloptions, staticdir=tutils.test_data.path("data"), anchors=[(re.compile("/anchor/.*"), language.parse_response("202"))])