def test_parse_err(self): tutils.raises(language.ParseException, language.parse_pathod, "400:msg,b:") try: language.parse_pathod("400'msg':b:") except language.ParseException as v: assert v.marked() assert str(v)
def test_shortcuts(): assert language.parse_pathod( "400:c'foo'").next().headers[0].key.val == "Content-Type" assert language.parse_pathod( "400:l'foo'").next().headers[0].key.val == "Location" assert "Android" in tutils.render(parse_request("get:/:ua")) assert "User-Agent" in tutils.render(parse_request("get:/:ua"))
def test_parse_pathod(self): a = language.parse_pathod("400:ir,@100").next().actions[0] assert a.offset == "r" assert a.value.datatype == "bytes" assert a.value.usize == 100 a = language.parse_pathod("400:ia,@100").next().actions[0] assert a.offset == "a"
def test_render(self): s = cStringIO.StringIO() r = language.parse_pathod("400:m'msg'").next() assert language.serve(r, s, {}) r = language.parse_pathod("400:p0,100:dr").next() assert "p0" in r.spec() s = r.preview_safe() assert "p0" not in s.spec()
def test_length(self): def testlen(x): s = cStringIO.StringIO() x = x.next() language.serve(x, s, language.Settings()) assert x.length(language.Settings()) == len(s.getvalue()) testlen(language.parse_pathod("400:m'msg':r")) testlen(language.parse_pathod("400:m'msg':h'foo'='bar':r")) testlen(language.parse_pathod("400:m'msg':h'foo'='bar':b@100b:r"))
def test_raw(self): s = cStringIO.StringIO() r = language.parse_pathod("400:b'foo'").next() language.serve(r, s, {}) v = s.getvalue() assert "Content-Length" in v s = cStringIO.StringIO() r = language.parse_pathod("400:b'foo':r").next() language.serve(r, s, {}) v = s.getvalue() assert "Content-Length" not in v
def test_write_values_after(): s = cStringIO.StringIO() r = language.parse_pathod("400:da").next() language.serve(r, s, {}) s = cStringIO.StringIO() r = language.parse_pathod("400:pa,0").next() language.serve(r, s, {}) s = cStringIO.StringIO() r = language.parse_pathod("400:ia,'xx'").next() language.serve(r, s, {}) assert s.getvalue().endswith('xx')
def test_response(self): r = language.parse_pathod("400:m'msg'").next() assert r.status_code.string() == "400" assert r.reason.string() == "msg" r = language.parse_pathod("400:m'msg':b@100b").next() assert r.reason.string() == "msg" assert r.body.values({}) assert str(r) r = language.parse_pathod("200").next() assert r.status_code.string() == "200" assert not r.reason assert "OK" in [i[:] for i in r.preamble({})]
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_pathod("400:b@1g").next() assert r.length({})
def test_maximum_length(self): def testlen(x): x = x.next() s = cStringIO.StringIO() m = x.maximum_length({}) language.serve(x, s, {}) assert m >= len(s.getvalue()) r = language.parse_pathod("400:m'msg':b@100:d0") testlen(r) r = language.parse_pathod("400:m'msg':b@100:d0:i0,'foo'") testlen(r) r = language.parse_pathod("400:m'msg':b@100:d0:i0,'foo'") testlen(r)
def test_parse_header(self): r = language.parse_pathod('400:h"foo"="bar"').next() assert http.get_header("foo", r.headers)
def test_request(self): r = language.parse_pathod('400:p10,10').next() assert r.actions[0].spec() == "p10,10"
def parse_response(s): return language.parse_pathod(s, True).next()
def dummy_response(self): return language.parse_pathod("400'msg'").next()
def test_websockets(self): r = language.parse_pathod("ws").next() tutils.raises("no websocket key", r.resolve, language.Settings()) res = r.resolve(language.Settings(websocket_key="foo")) assert res.status_code.string() == "101"
def test_parse_pause_random(self): r = language.parse_pathod("400:pr,10").next() assert r.actions[0].spec() == "pr,10"
def test_serve(self): s = cStringIO.StringIO() r = language.parse_pathod("400:i0,'foo'").next() assert language.serve(r, s, {})
def rt(s): s = language.parse_pathod(s).next().spec() assert language.parse_pathod(s).next().spec() == s
def test_parse_pathod(self): a = language.parse_pathod("400:d0").next().actions[0] assert a.spec() == "d0" a = language.parse_pathod("400:dr").next().actions[0] assert a.spec() == "dr"
def test_parse_pause_before(self): r = language.parse_pathod("400:p0,10").next() assert r.actions[0].spec() == "p0,10"
def test_parse_pause_after(self): r = language.parse_pathod("400:pa,10").next() assert r.actions[0].spec() == "pa,10"